Backchannel v0.6.0
Backchannel v0.6.0
This release adds a privacy layer that keeps personal data out of every model
prompt and out of the database itself, and makes a new session faster to set
up.
Highlights
- A PII Shield, in Admin -> Privacy. With it on, people's names, company
names, email addresses, phone numbers, card and national-id numbers, IP
addresses and street addresses are replaced with tokens such as
[PERSON_1]the moment a transcript line, directive, document excerpt,
session name or speaker name is written. Every agent, the briefing, chat
and Ask then work from tokenized text, whether the model is on this machine
or in the cloud, and the database holds only tokens. The real values live in
a vault encrypted under the same master key that protects your provider
keys, and are put back only on the screen in front of you. Tokens stay
consistent within a session so the models can follow who said what; nothing
links a person across sessions. - Detection runs entirely on this machine. Pattern checks for structured
identifiers, the session's own speaker roster and a protected-terms list
you maintain (client companies, code names), and a small on-device
name-recognition model (bert-base-NERas ONNX, about 110 MB, downloaded
once into the data directory). No detection ever involves a cloud call.
The Privacy tab has a scratch box to see exactly what a model would
receive for any sentence. - Audio never leaves while the shield is on. Audio cannot be tokenized,
so the shield holds transcription to a local model and switches off cloud
live captions, the way Privacy First does but for audio alone; cloud text
models stay available because they receive tokens only. The Privacy tab
shows each path, including a cloud caption gateway that is configured but
paused, and the live call says "Live captions off: PII Shield" rather than
going quiet. Uploaded documents are read on this machine and never sent as
files. - A Transcript Refiner agent (off by default) closes the quality gap of
local-only transcription. It sends the tokenized transcript to any text
model, local or cloud, to fix punctuation, casing, sentence boundaries and
obvious mishearings, live every 45 seconds, at call end, and before
post-import analysis. A rewrite is kept only if it carries exactly the
original tokens, and the transcriber's own wording is kept alongside in a
newraw_textcolumn. - You can watch it work. "Record outbound prompts" on the Privacy tab
keeps a log of every prompt exactly as it left for a model, badged "tokens
only" or "blocked", so the claim that no name reaches a model is something
you check rather than trust. Independently, while the shield is on a prompt
that still carries a vault value is refused before it is sent. - Local Whisper's noise artifacts (a phrase looping a dozen times, a line
of bracketed non-words) no longer reach the transcript. - Exports and the audit trail. Exports carry tokens unless you tick
"Include personal data" in the Export menu; every reveal, on screen or in
a file, is counted in an audit trail the Privacy tab summarizes. A
completed session shows how many values it holds shielded. Sessions
recorded before the shield was on keep what they hold until you protect
them (POST /api/sessions/{id}/pii/protect). - Setting up a session is shorter. The Start Call and Process Transcript
buttons now sit at the top of the pre-call screen and stay there while you
scroll. Context is open; documents, imports, directives, participants and
agent choices are collapsed cards whose headers say what they hold, and
the recording notice is one line with the detail behind it. - Gemini 3.8 Flash. Released the day of this build, it is in the model
list and is now the recommended Google model for every text agent and
Live Ask, at the same price as 3.7 Flash. Gemini 3.7 Flash stays
selectable; an agent already set to it keeps running on it. - The sidebar's find box understands dates. Typing
October,oct 8,
8,08,8-,8/,10/8,10-08or2026-10-08finds the sessions
created or started on that day, with nothing to add to the session name.
Upgrade notes
- Two tables are new (
pii_vault_entries,pii_reveal_events); the app
creates them at startup and Alembic migration026_pii_shield_tables
covers managed databases. - The shield is off by default. Turning it on affects new text only; use
POST /api/sessions/{id}/pii/protectfor a session recorded earlier. - The vault is keyed from
DATA_DIR/master.key(orCREDENTIALS_MASTER_KEY).
Losing that key makes protected values unrecoverable, exactly as it does
provider keys today.