Rebon has no telemetry. No analytics SDK, no crash reporter, no usage events, no anonymous install ID, no device fingerprint, no A/B experiment service. There is no Rebon server that collects anything about you, your machine, your prompts, or your sessions.
The rest of this document lists every outbound request the binary can make, so you can check the claim instead of taking it on faith. Each entry names the file it lives in.
· 中文
One request, ever: the update check.
GET https://registry.npmjs.org/@rebon%2fcli — reads the package's
dist-tags and compares versions locally
(crates/plugins/updater/src/check.rs).
- No identifiers. Bare HTTP client, no
User-Agent, no query string, no headers of our own. Your current version is not sent — the comparison happens after the response arrives. - Lazy. The check starts when a front end that can actually draw an
update notice polls for it, so
rebon exec, ACP sessions and background workers never issue it at all (crates/plugins/updater/src/seat.rs). - Skipped in dev builds (version
0.0.1). - Off switches:
update.disabledin~/.rebon/config.json;plugins.updater.enabled = false(the plugin is then never loaded, so no seat exists and/updateis not on the command seat either); orREBON_UPDATE_PACKAGEto point at your own package.
What npm learns: your IP, and that someone asked for @rebon/cli's public
metadata. That is the entire unsolicited footprint.
There is no startup ping, no heartbeat, no background sync, and no "first run" registration.
Everything below is triggered by you or by a tool call you approved. None of it is reported to Rebon.
| Trigger | Goes to | Carries |
|---|---|---|
| Any model turn | your configured provider base URL | your prompt, files, and tool output — this is the product |
| Sign-in / token refresh | the provider's auth host (e.g. auth.openai.com) |
OAuth credentials only |
/model refresh |
https://reboncode.ai/api/models |
nothing — a plain GET, no request body. Override with REBON_MODEL_TABLE_URL to self-host |
WebFetch tool |
the URL the agent fetched | a plain fetch of that URL |
WebSearch tool (fallback) |
api.search.brave.com, html.duckduckgo.com, or www.bing.com |
the search query. Used only when the active provider has no server-side search |
| MCP tools | the MCP servers you configured | whatever that server's protocol carries |
| Hooks | wherever your hook points | whatever your hook sends |
rebon node install |
https://nodejs.org/dist |
nothing; archives are SHA-256 pinned, and a mirror base can be passed |
rebon remote |
registry.npmjs.org for the server tarball, then your host over ssh |
the session runs on the far machine you named |
| Image generation | the provider's image endpoint | your prompt |
The model table (/model refresh) is the only one of these that touches a
Rebon-operated host, it must be run by hand, and its only caller is the
/model command
(crates/rebon-session-runtime/src/commands/model.rs).
Rebon never refreshes it on its own; at startup it reads the local cache or
the snapshot embedded in the binary.
- The one header that looks like telemetry. Requests the embedded dsh
runtime sends to DeepSeek carry
x-deepseek-harness-user-id. The upstream package generates a random ID and persists it for telemetry correlation; Rebon's shim replaces that with the fixed stringrebon-embedded, which identifies the harness and nothing about you (runtimes/node/compose-runtime/payload/compose/shims/dsh-anonymous-user-id.js). It rides onchat/completionscalls you were making anyway; it is not a separate request. npm installdoes no network work of its own. The postinstall script only picks the right native binary that npm already fetched.- The web UI (
rebon serve) is fully self-hosted. No CDN, no external fonts, no third-party scripts, and the page sets<meta name="referrer" content="no-referrer">. - Remote control has no built-in endpoint.
apiBaseUrlis yours to configure; nothing is contacted until you do. - The browser extension has its own statement — no analytics, no
telemetry, no advertising
(
runtimes/node/plugins/rebon-browser/PRIVACY.md).
All of it stays on your disk, unencrypted and readable by you:
~/.rebon/config.json— providers, models, defaults~/.rebon/.credentials.json— API keys and OAuth tokens~/.rebon/sessions/— full transcripts~/.rebon/skills/,~/.rebon/agents/,~/.rebon/memory/— your assets$REBON_LOG_DIR/rebon.log— the TUI log
Nothing here is uploaded, synced, or backed up anywhere by Rebon. Deleting the directory is a complete uninstall of your data.
The source is here, so audit it rather than trust the list:
# Every module that can make an HTTP request
grep -rln reqwest --include=*.rs crates services
# Every hardcoded external host
grep -rhoE 'https?://[a-zA-Z0-9.-]+' --include=*.rs crates services | sort -u
# No telemetry SDKs are in the dependency tree
grep -niE 'sentry|statsig|opentelemetry|posthog|amplitude|mixpanel|datadog' Cargo.lockOr run rebon under a network monitor with plugins.updater.enabled = false
and confirm the process makes no requests until you send a prompt.
If you find an outbound request this document does not describe, please open an issue — that is a bug, not a feature.