Privacy manifesto

Your meeting media is not our data product.

No analytics, no trackers, no cloud media processing. In self-hosted mode, media, signaling logs and transcripts remain under your control. This page is an exhaustive enumeration of exactly what does and doesn’t happen — not a marketing tagline. AI voice calls have separate rules; see section 04 below or the standalone AI-privacy page.

01 / Things we do not do

The list of "no".

None of the following exist anywhere in CodeB Sovereign Communications. No exceptions, no "but only if you opt in", no asterisks.

02 / Things we do

The list of "yes — briefly".

The list of things that actually happen is short enough to fit on this page.

03 / Third-party network calls

Where bytes leave our network.

Up to three external hosts may be contacted by the browser, depending on which features you use and how the operator has configured the deployment. None of them ever see your video, audio, chat or files.

HostWhyWhat it seesAvoidable?
Public web-fonts CDN Loads the Raleway + IBM Plex Mono typefaces for the page chrome. Your IP and the fact that you opened the page. No content. Yes — replace with self-hosted woff2 files in the css/ folder for a fully offline build.
Public STUN servers (opt-in only) STUN tells your browser its own public IP so WebRTC can negotiate a direct connection. Not used by default — the CodeB SIP bridge ships with its own built-in STUN/TURN, so by default no public server is contacted at all. Nothing by default. If an operator explicitly points StunHosts at a public server, that server sees one small UDP packet per call — no media, no name, no room code. It is already off by default. To keep it off, leave StunHosts in web.config empty (or pointing at the bridge); the bridge's built-in STUN/TURN handles NAT traversal locally with no public-internet hop.
Public asset CDNs Loads the MediaPipe Selfie Segmentation model — only if you enable Background Blur. Two HTTP requests at first activation. Model is then cached. Yes — mirror the WASM + .tflite files locally and edit two URLs in conference.js.

For an air-gap install, the WebRTC signaling, TURN relay, JS, CSS, fonts and ML model can all live on the customer's own LAN. The build supports it; the recipe is documented in the deployment README.

04 / AI voice calls — a separate posture

Where AI calls differ from meetings.

Read the full AI-calls privacy & data-flow page →

The privacy posture above applies to CodeB Conference meetings and CodeB Phone (SIP) calls between humans. CodeB Voice AI is different, because by design the AI receptionist and outbound-AI-call features send caller audio to a real-time speech model. We document this honestly so operators and end-users know exactly what to expect.

The model backend is pluggable per deployment.

The bridge can be configured to use one of:

Which backend is active on this deployment is set in App_Data/<tenant>/appsettings.json by the operator. There is no default cloud connection — if no model is configured, AI calls do not run at all.

What leaves the deployment when a cloud model is in use.

What stays inside the deployment.

Operator obligations when AI calls are enabled.

If your deployment runs AI calls using a cloud model, you are the data controller for those calls under most jurisdictions. You are responsible for:

If you need an air-gap or fully on-premise AI voice experience, contact us — on-premise inference deployments (a small open-weights speech-to-text model + LLM on the same Windows box) are supported but require operator-side hardware.

05 / A note on the amber screen

Why the colour scheme looks like a 1980s terminal.

The accent colour you see throughout CodeB Sovereign Communications — that warm #f5a524 against the deep #0a0d12 background — is a deliberate tribute to amber-phosphor CRT monitors.

For roughly fifteen years, from the late 1970s into the early 1990s, the people who ran the world's most consequential computers stared at amber screens. The IBM 5151, the Wyse 50, terminals on hospital nursing stations, manufacturing line PLCs, air-traffic-control consoles, defence command terminals — they all glowed in this same warm yellow at around 580 nm wavelength.

The reason wasn't aesthetic. Amber phosphor (P3, later P134) was chosen because it sits in the sweet spot of the human eye's photopic sensitivity curve. Operators staring at a screen for ten or twelve hours — radiologists, air-traffic controllers, machine-tool programmers — experienced measurably less eye fatigue with amber than with the otherwise-common green P1 phosphor, and significantly less than with the white CRTs that became fashionable later. Amber was the colour of tools for people whose work mattered.

C:\> LOGON CONSOLE.42
ACCESS GRANTED · OPERATOR SE-002 · 2026-05-22 09:14:33
> DIAL ROOM TEAM-STANDUP
ROOM OK · 3 PEERS · TURN OK
>

That's the lineage we wanted CodeB to invoke. A serious tool for people doing serious work — clinicians, engineers, factory operators, public servants, defence supply chains — the same people CodeB Identity Solutions has served for two decades. The codeb.io design language uses amber the way those terminals did: high signal, no decoration. There is one accent colour because the work is what matters; the chrome shouldn't compete with it.

(And there's a small practical bonus: against a dark background, amber has the highest perceptual contrast of any single accent colour, and it remains distinguishable to people with the most common forms of red-green colour vision deficiency. The 1980s engineers picked it for ergonomic reasons; we picked it for the same ones plus a bit of historical respect.)

04a / Wallet identity

Wallet and identity data.

When you sign in with an European Digital Identity Wallet credential, or with an OIDC identity provider, the following applies in addition to sections 01 - 04:

Tenant operators requiring GDPR Article 35 DPIA can start from our published template: Data Protection Impact Assessment template. Article 30 Records of Processing Activities: RoPA template. Both are template documents that the tenant DPO must adapt and sign off; Aloaha does not provide legal advice.

05 / Commitments

The promise written down.

If any of the items in section 01 ("things we do not do") ever stops being true, this page changes before the change ships. We won't roll trackers in quietly. We won't bury new analytics three menus deep.

The source code for CodeB Sovereign Communications lives on your own IIS server. Every JavaScript file, every C# handler and the entire TURN service is open to inspection by anyone in your organisation. There is no obfuscation, no minification step that hides logic, and no compiled binary that contains anything not visible in the source.

If you spot something in the running app that contradicts this manifesto, please write to info@aloaha.com. A real person reads that inbox — or answers that phone.

See also: data flow · features · Aloaha privacy manifesto

A note on cookies and OIDC sign-on

CodeB ships with a built-in OpenID Connect identity provider. We make a deliberate trade-off: no cookies, anywhere on the site, including for SSO. Instead, when you sign in at the IdP, the server stores a short-lived signed assertion in localStorage at the IdP origin only (www.aloaha.com) so that a second relying party can re-use your authentication for 30 minutes without re-prompting. That assertion is:

In short: the privacy promise is “no cookies”, and we keep it. Where session continuity was needed, we used a different storage primitive on purpose and scoped it as narrowly as we know how.

Frequently asked questions

Does CodeB use analytics or tracking?

No. CodeB Sovereign Communications uses no third-party analytics, no first-party analytics, no advertising trackers, no session recording or heatmaps, no A/B testing platforms and no third-party error reporting. The running browser code sends no telemetry events to any endpoint.

Does CodeB set cookies?

No. CodeB Sovereign Communications sets no cookies, first-party or otherwise, including for single sign-on. Preferences are kept in the browser's localStorage, and the built-in OIDC identity provider stores a short-lived signed assertion in localStorage at its own origin instead of a cookie; that assertion expires after 30 minutes idle or 4 hours absolute and is cleared on logout.

What data does CodeB store in my browser?

CodeB stores a handful of preference keys in localStorage: display name, selected camera and microphone, mirror toggle, push-to-talk, auto-spotlight, background blur, join-muted and join-camera-off. Clearing your browser data removes them.

What does the CodeB server log?

A CodeB server keeps standard IIS access logs recording URL, status code, IP address and user agent, with retention set by the operating tenant. The CodeB reference tenants on phone.codeb.io and phone.aloaha.com rotate these logs after 14 days, and the logs are not parsed, correlated with sign-in data or forwarded to third parties. The server also keeps a short in-memory list of who is in which room, which disappears when the room empties and is never written to disk.

Are CodeB meetings recorded or stored on the server?

No. CodeB keeps no meeting persistence on any server: recordings exist only on the recorder's own machine, and chat lives only in browser memory and disappears when the tab closes.

Which third-party servers can CodeB contact?

Up to three external hosts may be contacted by the browser, and none of them see video, audio, chat or files. They are a public web-fonts CDN for page typefaces, public STUN servers only if an operator explicitly opts in, and a public asset CDN for the background-blur model only if you enable Background Blur. All three can be avoided, and an air-gap install can host everything on the customer's own LAN.

Does CodeB send my password to the server?

No. CodeB hashes passwords in your browser before they reach the server, so the plaintext never crosses the network and never lands on disk or in logs. The server only sees and stores irreversible hashes.

How are AI voice calls handled differently from meetings?

CodeB Voice AI follows a separate privacy posture because the AI features send caller audio to a real-time speech model. With a cloud AI Voice Engine, caller audio is streamed to the configured vendor and that vendor's terms apply; the on-premise AI Voice Engine keeps audio on the machine. There is no default cloud connection, transcripts are stored tenant-locally, and the operator is responsible for disclosure and retention.

What data does CodeB receive when I sign in with an EU Digital Identity Wallet?

When you sign in with a European Digital Identity Wallet credential, CodeB receives Person Identification Data claims such as given_name, family_name, birthdate and email where the credential contains them, or an age_over_N boolean for age-only checks where supported. By default the claims are retained only for the authenticated session unless the tenant has configured caching, capped by Oidc:PidRetentionSeconds (shipped default 30 days, 0 for session-only). No sub-processors are used by default for wallet flows.

Who is the data controller for a CodeB deployment?

For wallet transactions on a customer-hosted instance, the tenant operating that instance is the data controller, and Aloaha Limited acts only as the software vendor. GDPR rights such as access and erasure are exercised against the tenant operator. When AI calls use a cloud model, the operator is also the data controller for those calls under most jurisdictions.