Data and privacy
Patterm keeps its data on the machine that runs it, in files only your account can read, and sends nothing to Patterm's authors.
Where your data lives##
| Install | Data directory |
|---|---|
| Linux server | ~/.local/share/patterm-server |
| Linux desktop app | ~/.config/patterm-desktop |
Set PATTERM_DATA_DIR for the server, or PATTERM_APP_DATA_PATH for the desktop app, to use another directory. The directory is created readable by your account only. Patterm supports Linux only for now.
A server and a desktop app on the same machine keep separate data. Only one Patterm can use a data directory at a time. See Linux server.
If you use the server from a browser, your projects, history and settings are on the server, not in the browser. Settings that belong to a browser, such as a panel's width, stay in that browser.
What is inside##
| File or folder | What it holds |
|---|---|
app.db |
Projects, agents and processes, worktrees, todos, scratchpads, links to issues and PRs, notifications, timers, routines, paired hosts, your MCP servers and their sign-ins, push subscriptions, and your settings. |
history.db |
Conversations imported from your agent CLIs, so you can search and resume them. |
uploads/ |
Files and images you attach or paste into a conversation. |
backups/ |
Automatic copies of both databases made before a migration. |
server-access.json |
Server only. The Remote access choice, and a hash of your password if you set one. The password itself is never stored. |
push-vapid.json |
Server only. The key pair that identifies your server to browsers for push notifications. |
debug.log |
A diagnostic log of Patterm's own events. It stops growing at 10 MiB and is emptied the next time Patterm starts with it nearly full. |
terminal-hosts/ |
Server only. The terminal host programs your running agents use. |
Other folders, such as saved images from conversations and files for the assistant, hold the same kind of data as the files above.
What is not stored##
- Raw terminal output. Patterm does not record the bytes from your agents' terminals to disk by default.
- Your agent CLIs' logins. Claude Code, Codex and OpenCode keep their own credentials where they always did. Patterm does not store copies of them.
- Direct model API calls. Patterm does not call model APIs itself. Your CLIs do, as they always have, under your account.
Conversation history is a copy. Patterm reads your CLIs' own history files and imports them into history.db. It does not change the originals. Reset and re-import… in Settings › Conversation history clears Patterm's copy only.
Imported conversations contain whatever you and your agents wrote, including anything sensitive that was pasted or printed. Treat history.db like the CLIs' own history.
What leaves the machine##
Patterm has no analytics, telemetry or crash reporting. It does not check for updates by itself. You choose when to update.
Things that do leave the machine, and only because you asked for them:
- Your agents. Each CLI talks to its provider under its own terms. Patterm does not sit in between.
- MCP servers you add. A remote server receives what the agent sends it. See Your MCP servers.
- Auto-summaries, if you turn them on. Patterm sends conversation text and a compact recap, with secrets redacted on a best-effort basis, to the provider you choose through that provider's CLI. They are off by default. See Settings.
- Push notifications, if you enable them in a browser. The title and text go through your browser's push service. See Browser and phone access.
- Tailscale, if you use it to reach a server. Patterm only asks the local Tailscale for the machine's name and Serve status, and sets up its own route.
- Paired hosts. Hosts you pair exchange what they need to show each other's agents. See Multiple hosts.
Patterm never uses Tailscale Funnel, so nothing is published to the open internet.
Back up and restore##
Patterm backs up for you before a migration, but you should take your own backups too.
- Stop Patterm. On a server, use Quit Patterm so every terminal host stops, and check that
patterm.serviceand everypatterm-terminal@unit are inactive. - Copy the whole data directory, including
app.db,history.dband their-waland-shmfiles.
Do not copy just a SQLite file from a running Patterm. Committed data can still be in its -wal file.
Keep the two databases as a matching pair. Never run an older Patterm against databases a newer one has migrated. Patterm refuses to open them.
Automatic backups##
When an update has migrations to run, Patterm first saves both databases into backups/pre-migration-<time>/ in the data directory. manifest.json records a SHA-256 hash for each copy. The last two sets are kept. If a backup fails, Patterm does not migrate. Uploads and images are not included.
For the steps to roll back, see Linux server.
Remove your data##
Uninstalling asks before it deletes your data. See Linux server. To remove it by hand, stop Patterm, then delete the data directory.
Abandoning or unlinking a worktree in Patterm changes Patterm's records only. It never deletes the directory or branch.
Licence and notices##
Patterm is MIT licensed. Open Settings › About to read the Licence and the Third-party licences of the open-source software included in Patterm. They ship inside the app and work offline.