Desktop and phone
Privacy and what leaves your device
A plain account of where your notes live, what can make a network request, and what triggers it.
On this page
The short version: no telemetry, no analytics, no account, and nothing uploaded in the background. Your notes are rows in a SQLite database in the app's own folder on your device.
Everything that can make a network request
This is the complete list. Apart from the desktop's update check, every one of these is off until you set it up, and goes only to an address you chose yourself.
- Chat, Insights, Polish
- When it happens: When you press the button
- Where it goes: Your configured inference server
- A note's images
- When it happens: With Insights, Polish or Chat, only when Send a note's images to the model is on (off by default)
- Where it goes: Your configured inference server, shrunk to 1,024 or 480 pixels first
- Model list refresh
- When it happens: When you press Test connection
- Where it goes: Your configured inference server
- Transcription
- When it happens: When you transcribe a recording, if you chose a server rather than on-device
- Where it goes: Your configured speech server
- Text to speech
- When it happens: When you press listen, if you chose an API rather than a local voice
- Where it goes: Your configured speech API
- Web search
- When it happens: During a chat, only with web search switched on
- Where it goes: The door you chose: your own SearXNG instance, Brave Search with your key, or your model provider (OpenRouter)
- Update check (desktop)
- When it happens: Once a day, on by default; switch off Tell me when a new version is out in Settings
- Where it goes: One small file from silonotes.app. Nothing about you or your notes is sent
- Sync over WebDAV
- When it happens: When you sync, if you chose a WebDAV server rather than a folder
- Where it goes: Your server. What it receives is an encrypted archive
- On-device models and voices
- When it happens: When you press download for one in Settings
- Where it goes: GitHub, where the model files are published
- Voice typing (phone)
- When it happens: When you dictate with the phone's own recognizer
- Where it goes: Android may send the audio to Google unless Keep device dictation on-device is on
| What | When it happens | Where it goes |
|---|---|---|
| Chat, Insights, Polish | When you press the button | Your configured inference server |
| A note's images | With Insights, Polish or Chat, only when Send a note's images to the model is on (off by default) | Your configured inference server, shrunk to 1,024 or 480 pixels first |
| Model list refresh | When you press Test connection | Your configured inference server |
| Transcription | When you transcribe a recording, if you chose a server rather than on-device | Your configured speech server |
| Text to speech | When you press listen, if you chose an API rather than a local voice | Your configured speech API |
| Web search | During a chat, only with web search switched on | The door you chose: your own SearXNG instance, Brave Search with your key, or your model provider (OpenRouter) |
| Update check (desktop) | Once a day, on by default; switch off Tell me when a new version is out in Settings | One small file from silonotes.app. Nothing about you or your notes is sent |
| Sync over WebDAV | When you sync, if you chose a WebDAV server rather than a folder | Your server. What it receives is an encrypted archive |
| On-device models and voices | When you press download for one in Settings | GitHub, where the model files are published |
| Voice typing (phone) | When you dictate with the phone's own recognizer | Android may send the audio to Google unless Keep device dictation on-device is on |
How the desktop app is locked down
- The page that renders your notes is fully sandboxed, with no Node access and a strict content-security policy. The page itself has no network access at all.
- Every request goes through an audited bridge in the main process that permits only
httpandhttps, and blocks cloud-metadata and link-local addresses. - Disk access is default-deny and scoped to the app's own folder. Files outside it enter only through a native open or save dialog that you drove.
- Archive extraction is guarded against path-traversal.
- External links open in your browser, never inside the app.
Where API keys are kept
On the phone, all API keys live in the Android Keystore. On the desktop they are encrypted with the operating system keyring: Keychain on macOS, DPAPI on Windows, libsecret on Linux.
API keys are always stripped from .silo archives, so sharing a backup cannot leak one.
Yes. Every answer carries a usage line with exact token counts, and the context inspector shows the material that made up the prompt.