Network Flows
Network connections Viola makes, what triggers them, and what each connection is for.
Baseline (always running)
These are the only outbound connections the Viola desktop application makes at idle with the default configuration. The desktop app sends no analytics pings, no background service heartbeats, and no behavioral telemetry. The useviola.com website separately uses Cloudflare's cookieless Web Analytics for aggregate page-view counts; see the Privacy Policy.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
| None. At idle with default configuration, the Viola desktop application does not call out. | |||
Telemetry and error reporting (off by default)
Desktop telemetry is disabled by default and requires consent before anything is sent. Error reporting also requires consent; payloads are scrubbed before send.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.useviola.com |
Opt-in telemetry ingestion endpoint | Telemetry enabled + consent given | Your device → Viola cloud |
| Configured Sentry DSN host | Opt-in crash/error reporting | Error reporting consent given | Your device or Viola cloud → Sentry project |
static.cloudflareinsights.com |
Cookieless aggregate page-view counts on useviola.com only | Website page load | Your browser → Cloudflare |
Music providers (user-connected)
Only contacted after you connect or use a supported music provider. Spotify and YouTube/Google are the provider paths shipping today.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
*.googleapis.com, www.youtube.com, music.youtube.com, www.youtube-nocookie.com, youtubei.googleapis.com, *.ytimg.com, img.youtube.com |
YouTube Data API, YouTube Music, privacy-enhanced embeds, and web player assets | Music / YouTube feature | Your device → Google |
api.spotify.com, accounts.spotify.com, open.spotify.com, www.spotify.com, i.scdn.co |
Spotify Web API, OAuth, web player, embeds, track / playlist URLs, and artwork | Spotify connected | Your device → Spotify |
Google OAuth scopes (user-connected)
Google OAuth covers connected Gmail, Calendar, and supported Workspace actions. 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 |
Weather, air quality, and location lookup (command-triggered)
Only contacted when you ask for weather or when Viola needs to resolve a weather location. You can set a location manually to avoid IP-based lookup.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.weather.gov, wttr.in, configured weather-gfs endpoint |
Weather forecast and observation providers | Weather command | Your device or Viola cloud → weather provider |
nominatim.openstreetmap.org, ip-api.com |
Location geocoding or fallback city lookup for weather | Weather command without saved location | Your device or Viola cloud → location provider |
files.airnowtech.org |
Air quality reporting-area data | Weather / air quality enabled | Your device or Viola cloud → AirNow |
AI providers (by execution path)
Only contacted when a prompt is issued. Prompts may include relevant profile fields, learned preferences/facts, and suggestion context when those features are enabled. Managed OpenAI is the default after sign-in; BYOK and local modes can replace it in Settings.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.openai.com |
OpenAI API (BYOK) | LLM prompt, OpenAI path | Your device → OpenAI |
api.anthropic.com |
Anthropic API (BYOK) | LLM prompt, Anthropic path | Your device → Anthropic |
generativelanguage.googleapis.com |
Google Gemini API (BYOK) | LLM prompt, Google path | Your device → Google |
openrouter.ai, api.groq.com, api.together.xyz, api.mistral.ai, api.perplexity.ai, api.deepseek.com, api.fireworks.ai, api.x.ai, api.cohere.ai, or your configured OpenAI-compatible base URL |
OpenAI-compatible BYOK provider presets and custom endpoints | LLM prompt, OpenAI-compatible path | Your device → selected provider |
api.openai.com |
Viola-managed OpenAI API access using Viola's API account; usage counts against your plan allowance. | LLM prompt, managed path | Your device → OpenAI API |
Local (127.0.0.1) — Ollama or similar |
Local LLM inference | LLM prompt, Local path | Your device → your device |
api.openai.com, api.deepgram.com |
Cloud speech-to-text when explicitly configured instead of local transcription | Cloud transcription enabled | Your device or Viola cloud → selected transcription provider |
Phone features (opt-in)
Phone is disabled by default. Launch support uses local phone mode; cloud bridge rows below document the conditional traffic shape for deployments where cloud mode is enabled.
| 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, cloud mode | Your device ↔ Viola bridge |
Configured tunnel host, such as phone.useviola.com for a named tunnel or *.trycloudflare.com for temporary Cloudflare quick tunnels |
Local phone webhooks when you explicitly expose a local phone endpoint | Local phone tunnel enabled | Telnyx / your device ↔ configured tunnel |
| 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, app.useviola.com |
Account auth, session, cross-device sync (opt-in), billing return surfaces, billing webhooks | Account signed in | Your device ↔ Viola cloud |
api.stripe.com, checkout.stripe.com, billing.stripe.com |
Payment processing, hosted checkout, and hosted billing portal | Checkout / billing action | Your device → Stripe |
| Configured BTCPay host | Bitcoin invoice checkout, when that payment path is selected | Bitcoin checkout | Your device → BTCPay |
Messaging, email delivery, and owner alerts (configured)
Only contacted after you connect Telegram or configure cloud/operator delivery. Telegram desktop pairing QR codes are generated locally and are not sent to a third-party QR service.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
api.telegram.org |
Telegram bot messages, status checks, and webhook handling | Telegram connected | Your device or Viola cloud → Telegram |
t.me |
Telegram account-link deep links | Telegram connect link clicked | Your browser → Telegram |
configured SMTP host, api.resend.com, api.cloudflare.com |
User or operator email delivery, and Cloudflare Email routing when configured | Internal messaging or email configured | Your device or Viola cloud → selected provider |
events.pagerduty.com, api.pushover.net, configured alert webhook URL |
Owner safety and operational alerts | Owner alerts configured | Viola cloud → selected alert provider |
Admin dashboard (operator-only)
Only contacted when an authorized operator opens the admin dashboard.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
cdn.jsdelivr.net |
Dashboard charting asset | Admin dashboard opened | Operator browser → jsDelivr |
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, api.duckduckgo.com, lite.duckduckgo.com |
Web search | Search command | Your device → search provider |
| Your Home Assistant URL | Smart home control | Smart home command | Your device → your HA instance |
User-configured API Vault endpoints, connector template endpoints such as api.github.com, slack.com, api.notion.com, mcp.notion.com, maps.googleapis.com, and api.openweathermap.org |
User-authored API tools and connector templates | API Vault command | Your device or Viola cloud → selected API |
login.microsoftonline.com, graph.microsoft.com |
Microsoft calendar OAuth and Microsoft Graph calendar access | Microsoft calendar connected | Your device → Microsoft |
Updates
The desktop app checks a public update manifest for version, rollout, and support-floor metadata. It does not stage installer downloads or apply updates in the background. Updates are manual reinstall only.
| Hostname | Purpose | Triggered by | Direction |
|---|---|---|---|
useviola.com/update/latest.json |
Public update manifest for version, rollout, and min/max supported-version metadata | Startup / periodic update check | Your desktop app → useviola.com |
useviola.com/download, useviola.com/download/latest.exe |
Manual installer page and installer download | User opens Download / reinstall | Your browser → useviola.com |
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 responsible disclosure scope and response timing.