Skip to content

Network Flows

Every hostname Viola contacts, when it contacts it, and why. Point Wireshark at your machine and verify.

Last updated April 17, 2026. Kept current by release. Corrections are published as dated amendments rather than silent edits.

Correction — 2026-04-17: An earlier draft of this page listed 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.

HostnamePurposeTriggered byDirection
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.

HostnamePurposeTriggered byDirection
*.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.

HostnamePurposeTriggered byDirection
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.

HostnamePurposeTriggered byDirection
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.

HostnamePurposeTriggered byDirection
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.

HostnamePurposeTriggered byDirection
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.

HostnamePurposeTriggered byDirection
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.

HostnamePurposeTriggered byDirection
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.