Nothing is sent to us.
co-maintainer runs on your machine or your own server. This page says what it stores, where, and what leaves the machine.
The only hosts the product talks to are the ones you configured, plus your provider's price list when probe prices an estimate. This covers the CLI, serve and the dashboard.
What leaves your machine
| When | Sent to | What |
|---|---|---|
probe, init, sync | GitHub | API reads through gh or a personal access token |
init, sync, review | Your AI provider: OpenRouter, OpenAI, Anthropic or OpenCode | The prompts: sampled code, pull request text, diffs and guides |
review --remote | Your serve instance | The git diff, plus codegraph tool requests and results |
review --remote with your own key | Your serve instance | Your AI key, kept in memory for that review and never stored |
| GitHub App review | GitHub | The review comment, the check run and the inline comments |
This website
co-maintainer.com uses Umami for page analytics and session recordings. If you sign up for the newsletter, your email is stored by Buttondown.
What is stored, and where
Everything lives under the config and cache directories. Nothing is written into your git clone.
| Item | Location | Secrets |
|---|---|---|
config.json | Config directory | Yes. Tokens, access tokens, the App private key, webhook and OAuth secrets, a scrypt password hash. Plain text, chmod 0600 where supported. |
repos/<slug>/ | Config directory | No. The generated guides: SKILL.md, CODEBASE.md, review guides. |
cache.db | Cache directory | No. Evidence and AI job cache. It does hold sampled code and PR text from your repository. |
app.db | Cache directory | No. Server state: repos, jobs, reviews, token hashes, webhook dedup. |
clones/, wt/ | Cache directory | No. Disposable clones and per-PR worktrees on a serve host. |
tools/ | Cache directory | No. Pinned helper binaries such as codegraph. |
Secrets
config.jsonis the one file with plain-text secrets. On a shared or CI machine, use--env=PATHor flags and keep the file out of version control.--github-app-private-key-pathstores only the path to the App key, so the key never entersconfig.json.- Remote review tokens are stored as hashes. The dashboard shows a new token once and cannot show it again.
config listmasks secrets.config getprints the real value, so treat its output as a secret.- A review never prints a token. Known secret shapes are redacted from provider text before it is shown.
What a review sends to the model
The diff, the review guides, the codebase conventions, the pull request title and body, and any existing review comments. Codegraph results are added as text when a tool is used. It never contains your API keys, your config.json or your GitHub credentials.
Deleting data
| To | Run |
|---|---|
| Remove one repository's guides and settings | co-maintainer clear owner/repo |
| Also remove its fetched evidence, AI job cache, clones and worktrees | co-maintainer clear owner/repo --include-cache |
| Do that for every repository | co-maintainer clear all |
| Delete every co-maintainer data file on this machine | co-maintainer uninstall |
| Remove the CLI itself (not data, only CLI) | npm uninstall -g co-maintainer |