the phone-home register

VoiceStudio

What VoiceStudio sends out of your computer by default, when, to whom, and the switch that stops it, version by version, with how we know.

The answer

Read at v0.5.6, not run: VoiceStudio's packaged desktop builds ask github.com for a new release 10 s after launch and every 6 hours, with no switch; while a Hugging Face token is on the machine, its backend verifies it with huggingface.co (HF_HUB_OFFLINE=1 or removing the token stops that); in its default automatic mode it probes huggingface.co and hf-mirror.com at first run, after a download failure and once its last choice is 7 days old (OMNIVOICE_HF_ENDPOINT_MODE=manual or an endpoint chosen in Settings stops that); and its analytics stay off until you say yes in its consent prompt.

Builds and versions

not installed: source read at tag v0.5.6On by default?yes · read in codeMeasured here?no · read in codeDate checked (UTC)2026-10-10
Version
0.5.6 · the packaged desktop builds
Where the evidence came from
not run: the source applies to the packaged desktop builds
On by default?
yes · read in code
Measured here?
no · read in code
Date checked (UTC)
2026-10-10
Why we say so
electron/src/main/index.ts and electron/src/main/updater.ts read at tag v0.5.6. The source at the tag; we did not check that the released build matches it.
not installed: source read at tag v0.5.6On by default?yes · read in codeMeasured here?no · read in codeDate checked (UTC)2026-10-10
Version
0.5.6 · the Python backend
Where the evidence came from
not run: the source applies to every platform
On by default?
yes · read in code: while a Hugging Face token is on the machine; yes · read in code
Measured here?
no · read in code
Date checked (UTC)
2026-10-10
Why we say so
backend/services/token_resolver.py read at tag v0.5.6; backend/services/endpoint_race.py read at tag v0.5.6
not installed: source read at tag v0.5.6On by default?only if you opt in · read in codeMeasured here?no · read in codeDate checked (UTC)2026-10-10
Version
0.5.6 · the backend and the desktop app
Where the evidence came from
not run: the source applies to every platform
On by default?
only if you opt in · read in code
Measured here?
no · read in code
Date checked (UTC)
2026-10-10
Why we say so
backend/core/analytics.py read at tag v0.5.6

Each call out

update check · 0.5.6

Version · build
0.5.6 · the packaged desktop builds · not run: the source applies to the packaged desktop builds · not installed: source read at tag v0.5.6
Sends by default
yes · read in code
Kind
checks
Trigger
on its own
When
The code at v0.5.6 checks 10 s after launch and every 6 hours after, in packaged builds; not run.
Where
code host · github.com
What it sends
requests for its release files (request)
The vendor's stated purpose
none found in the README at v0.5.6, read 2026-10-10
Grade and method
read · electron/src/main/index.ts and electron/src/main/updater.ts read at tag v0.5.6. The source at the tag; we did not check that the released build matches it. · read 2026-10-10
Receipts
the check at 10 s and every 6 hours · the release feed addresses · its lockfile pins ONNX Runtime 1.29.0, which this app brings in · the check: the feed, then electron-updater (the releases API is not called)

hf token check · 0.5.6

Version · build
0.5.6 · the Python backend · not run: the source applies to every platform · not installed: source read at tag v0.5.6
Sends by default
yes · read in code: while a Hugging Face token is on the machine
Kind
checks
Trigger
on its own
When
The code at v0.5.6 checks each token it finds against Hugging Face and caches the answer for 300 s; how often the app asks again was not re-read here. Not run.
Where
model hub · huggingface.co
What it sends
your Hugging Face token, to Hugging Face's own account endpoint (credential)
The vendor's stated purpose
“For each candidate, the resolver calls `huggingface_hub.whoami(token=...)` to verify the token is live; any HTTP error (401, 403, network) skips to the next source.” — the module's own description in backend/services/token_resolver.py at v0.5.6, read 2026-10-10
Grade and method
read · backend/services/token_resolver.py read at tag v0.5.6 · read 2026-10-10
Receipts
the check and its 300-second cache

model host race · 0.5.6

Version · build
0.5.6 · the Python backend · not run: the source applies to every platform · not installed: source read at tag v0.5.6
Sends by default
yes · read in code
Kind
checks
Trigger
on its own
When
The code at v0.5.6 races the two at first run, after a download failure, and when its last decision is older than 7 days; not run.
Where
model hub · huggingface.co; hf-mirror.com
What it sends
connectivity probes to the official Hugging Face address and to a community mirror (request); 256 KiB ranged downloads to measure speed, when the mirror looks much faster (request)
The vendor's stated purpose
“This service makes that class of failure self-healing: it *races* the official endpoint against the community mirror with real connectivity probes and remembers the winner, so model downloads work out of the box wherever at least one endpoint is reachable.” — the module's own description in backend/services/endpoint_race.py at v0.5.6, read 2026-10-10
Grade and method
read · backend/services/endpoint_race.py read at tag v0.5.6 · read 2026-10-10
Receipts
the two addresses, the switch and the 7-day re-race · the ranged download · the module's own description

product analytics · 0.5.6

Version · build
0.5.6 · the backend and the desktop app · not run: the source applies to every platform · not installed: source read at tag v0.5.6
Sends by default
only if you opt in · read in code
Kind
reports
Trigger
on its own
When
Once opted in: events as they happen, to PostHog at a host set when the app is built; not run.
Where
third-party analytics
What it sends
a random install ID (identifier); lifecycle, error and speech-generated events, with app version, platform and install channel (usage)
The vendor's stated purpose
none found in the README at v0.5.6 and the analytics module's own description, read 2026-10-10
Also know
Once you have opted in, the desktop app's events follow the Settings switch, not the backend's environment switch. — github.com · analytics.py, read 2026-10-10
Grade and method
read · backend/core/analytics.py read at tag v0.5.6 · read 2026-10-10
Receipts
off unless you say yes, and the backend's kill switch · the stored preference, false by default

The switch

HF_HUB_OFFLINE=1

Accepted values
1
What it is
environment variable
Where it must be set
in the backend's environment, or in its env file · turn them off
Other spellings
remove the token
Also turns off
every Hugging Face download
What turning it off costs
no model downloads until you unset it
Proof
found in code; not tested by us
For the call
hf token check · 0.5.6

OMNIVOICE_HF_ENDPOINT_MODE=manual

Accepted values
manual, off, 0, false, no
What it is
environment variable
Where it must be set
in the backend's environment, or in its env file (.config/omnivoice/env under your home folder) · turn them off
Other spellings
choosing an endpoint in Settings, Network
Also turns off
the automatic choice between the two download hosts
What turning it off costs
per its own description, downloads no longer move to the reachable host when one is blocked
Proof
found in code; not tested by us
For the call
model host race · 0.5.6

Settings, Privacy: analytics off

Accepted values
off
What it is
a setting in the app
Where it must be set
in the app's Settings, Privacy · turn them off
Other spellings
OMNIVOICE_ANALYTICS_DISABLED=1, which covers the backend only
Proof
found in code; not tested by us
For the call
product analytics · 0.5.6

No switch found for: update check · 0.5.6.

Listens beyond the machine, and other cloud features

Listens beyond the machine by default

  • not covered: no vendor document of its default bind read (0.5.6 the packaged desktop builds)
  • not covered: no vendor document of its default bind read (0.5.6 the Python backend)
  • not covered: no vendor document of its default bind read (0.5.6 the backend and the desktop app)

Other cloud features

None found.

What it leaves on disk

Nothing we know of.

Brings in, and installed for you by

Brings in

Credit

  • Analytics are off until you say yes: the backend's preference defaults to false, and the README says usage analytics requires consent. — github.com · analytics.py, read 2026-10-10

Vendor documents it? · public discussion

Vendor documents it?

  • update check · 0.5.6: none found · None found in the README at v0.5.6, read 2026-10-10. · github.com · README.md · read 2026-10-10
  • hf token check · 0.5.6: partly · The module's own description explains the check; the README at v0.5.6 does not mention it. · github.com · token_resolver.py · read 2026-10-10
  • model host race · 0.5.6: partly · The module's own description explains the race and the switch; the README at v0.5.6 does not mention it. · github.com · endpoint_race.py · github.com · README.md · read 2026-10-10
  • product analytics · 0.5.6: partly · The README says usage analytics requires consent; it does not list the fields. · github.com · README.md · read 2026-10-10

Public discussion

History

No dated changes yet.

Not yet checked

Nothing named.