Network Flows
Every hostname Viola contacts, when it contacts it, and why. Point Wireshark at your machine and verify.
updates.useviola.com as an update-check endpoint. Spot-check against the code at this commit found no such endpoint is wired. There is no auto-update mechanism yet; the Updates row below now states that truthfully.
Baseline (always running)
These are the only outbound connections Viola makes at idle with the default configuration. No analytics pings, no heartbeats to home base, no behavioral telemetry.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
| None. At idle with default configuration, Viola does not call out. | |||
Music providers (user-connected)
Only contacted after you OAuth-connect a provider. Token storage is on your device; requests go directly from your device to the provider.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
*.googleapis.com, www.youtube.com |
YouTube Data API, YouTube Music, IFrame player | Music / YouTube feature | Your device → Google |
api.spotify.com, accounts.spotify.com |
Spotify Web API and OAuth | Spotify connected | Your device → Spotify |
api.music.apple.com |
Apple Music Web API | Apple Music connected | Your device → Apple |
api.tidal.com |
Tidal API | Tidal connected | Your device → Tidal |
Google unified scopes (user-connected)
One Google OAuth login covers Gmail, Calendar, and YouTube. Requests only happen when a corresponding command is issued.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
gmail.googleapis.com |
Read / draft / send / modify email | Email command | Your device → Google |
calendar.googleapis.com |
Read / create / modify calendar events | Calendar command | Your device → Google |
oauth2.googleapis.com, accounts.google.com |
OAuth login and token refresh | Google connected | Your device → Google |
AI providers (by execution path)
Only contacted when a prompt is issued and the corresponding execution path is selected in Settings.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.openai.com |
OpenAI API (BYOK or managed API key) | LLM prompt, OpenAI path | Your device → OpenAI |
api.anthropic.com |
Anthropic API (BYOK) | LLM prompt, Anthropic path | Your device → Anthropic |
chatgpt.com/backend-api/codex/responses |
Codex / ChatGPT managed routing via Viola's subscription. OAuth token from ~/.codex/auth.json. |
LLM prompt, managed path | Your device → OpenAI ChatGPT backend |
Local (127.0.0.1) — Ollama or similar |
Local LLM inference | LLM prompt, Local path | Your device → your device |
Phone features (opt-in)
Phone is disabled by default. When enabled, two topologies are possible depending on phone_mode.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.telnyx.com |
Carrier signalling; PSTN call placement and receipt | Phone enabled (local or cloud) | Your device (local mode) or Viola bridge (cloud mode) → Telnyx |
api.useviola.com |
Cloud phone bridge: multiplexes live call audio in cloud mode | Phone enabled, phone_mode=cloud |
Your device ↔ Viola bridge |
| S3-compatible storage (your configured bucket) | Call recording storage, if recording is enabled | Recording enabled | Your device → your configured bucket |
Account and billing (opt-in)
Only contacted if you sign in to a Viola account or subscribe to a paid plan.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.useviola.com |
Account auth, session, cross-device sync (opt-in), billing webhooks | Account signed in | Your device ↔ Viola cloud |
api.stripe.com, checkout.stripe.com |
Payment processing | Checkout / billing action | Your device → Stripe |
Agent mode, browser automation, web search (opt-in)
These are triggered by your commands. Viola does not preemptively open connections.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
| The site you directed Viola to | Browser automation (Playwright / bundled Chromium) | Browser command | Your device → the target site |
| Your configured search endpoint (SearXNG, DDG, etc.) | Web search | Search command | Your device → search provider |
| Your Home Assistant URL | Smart home control | Smart home command | Your device → your HA instance |
Updates
There is no auto-update mechanism at this release. Updates are manual: you download a new signed installer and run it.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
| None. Viola does not contact any "update server" at this release. Manual reinstall is the only update path. If an update-check endpoint is added later, it will appear here and in the Privacy Ledger before it ships. | |||
How to verify
Start Viola with no integrations connected and watch your network. You should see nothing going out. Connect an integration or issue a command that requires it, and the corresponding row above should light up.
If you find a flow not listed here, please email [email protected]. See security.html for the disclosure PGP key and response-time commitment.