Privacy and your data
Where your data lives, what leaves your machine and when, and how long Oktapod keeps things.
Oktapod runs on a computer you control and keeps its data there. This page lists what stays local, what leaves your machine, and when.
What stays on your machine
Everything Oktapod stores is in its data folder on the computer that runs it
(~/.oktapod by default on macOS and Linux):
conversations, memory, schedules, approvals, run records, uploaded files, and
credentials. Credentials are kept in owner-only files and are never shown back
in chat.
Importing an existing OpenAI or Claude CLI OAuth sign-in uses the same protected token files. The profile database keeps references and fingerprints instead of the access and refresh token values. A later import replaces the current files without copying those values into the profile row.
What leaves, and to whom
| Data | Goes to | When |
|---|---|---|
| Your messages, relevant memory, and files | The AI provider you connected | Whenever the model is used |
| Requests to your apps | That app, such as Google or Microsoft | When Oktapod reads or acts in it |
| Web searches | The search service in use | When Oktapod searches the web |
| Media to understand or generate | The media or speech service you connected | When you use that feature |
| Web dictation and live meeting speech | Your browser's speech recognition service | While you dictate or a meeting is live |
| A check for new releases | Oktapod's release server, or GitHub on source installs | On the update schedule, and when you ask |
| Phone notifications | Apple or Google push services, including reply previews | When a notification is sent |
| Sign-in codes and token refreshes | Oktapod's hosted sign-in service | Only if you choose hosted sign-in |
| An anonymous installation count | Oktapod | Only if you opt in |
With a local model, model requests stay on hardware you control.
Phone dictation asks for microphone access and uses the phone's speech service to fill a draft. iOS also asks for speech recognition permission and uses on-device recognition when the language supports it. Android prefers offline recognition; either platform may use its speech provider's online service. The draft goes to your agent only when you press Send.
In the web app, dictation and live meeting transcripts use your browser's speech recognition, and some browsers send the audio to their own speech service to turn it into text. Oktapod stores the meeting text, not the audio.
No telemetry by default
An installed Oktapod sends no metrics, traces, logs, errors, prompts, or
activity to its developer. Outside monitoring stays off unless you set
OKTAPOD_OBSERVABILITY_ENABLED=true and also give it a collector or
error-tracking address that you chose. Monitoring variables inherited from
your environment cannot turn it on by themselves. The optional local /metrics
endpoint only answers on this machine and uploads nothing.
If support ever asks you to enable monitoring for debugging, it should be for an agreed session, sent to a destination you approve, and switched off afterwards.
Installation counts (opt-in)
To help count how many installations are in use, you can opt in. It is off by default. When on, Oktapod sends at most once a day: a random installation ID, the kind of client, platform, version, and the day. No messages, addresses, accounts, or hardware IDs are sent. Turning it off stops check-ins and asks for the previous ID to be deleted.
- Android app: Count this installation under Privacy and diagnostics, when the build offers it.
- Oktapod on a computer: set
OKTAPOD_USAGE_COUNTS=1in the service's environment.
Hosted sign-in
If you use Oktapod-hosted sign-in for Google or Microsoft, the hosted service holds the app credentials those providers require. It exchanges the sign-in code for tokens, encrypts them so only your installation can read them, and holds only that encrypted copy for a few minutes until your Oktapod collects it. Your Oktapod keeps the tokens locally. Token refreshes also go through the hosted service. It sees the tokens only while handling one exchange or refresh, and never stores them readable.
Signing in with your own OAuth app keeps both the exchange and token refreshes on your machine. See Connect your apps.
Phone notifications
Push notifications go through Apple or Google. Reply alerts include a bounded preview of your agent's message and an event ID. A gateway without its own push credentials sends the preview through the Oktapod push service, which processes it for delivery without storing or logging its text. Full conversations, agent addresses, and access keys stay out of notification payloads. Your phone's settings control whether previews appear on its lock screen.
How long things are kept
Oktapod cleans up after itself on a daily schedule. Memory follows its retention class, from 7 days for short-lived context to a year for lasting facts; see Memory and personality. Records such as activity logs and delivery receipts are removed after fixed periods, and ordinary uploads are cleaned up over time. Things you saved on purpose, such as manual knowledge and active goals, are kept until you remove them.
Deleting or revoking something in Oktapod removes it and everything derived from it, such as search entries and passages. It does not delete the original in the source app, and it cannot recall something already sent.
Backups
oktapod backup writes an archive of your settings and data, and update
backups are kept automatically. Backups contain the same private data as
Oktapod itself, so store them accordingly. See
Backups and operations.
The Android app excludes its local data from cloud backup and phone-to-phone transfer. Saved access and drafts stay on the original phone. Connect a new phone to your agent to read the conversations kept there. The app applies Android's explicit backup and transfer rules because disabling backup alone does not prevent transfer on every phone.