--- title: Local, cloud, or self-hosted description: The three ways to run ClawMetry — fully local, local compute with an encrypted cloud display, or a self-hosted ingest — and what each implies for your data. keywords: ClawMetry self-hosted, local agent observability, air-gapped agent monitoring eyebrow: Get started --- # Local, cloud, or self-hosted The compute always happens on your machine. What differs is where the *display* lives and who stores the snapshot. ## Local only Nothing leaves the machine. No account, no key, no network call. ```bash clawmetry onboard --local ``` This writes a persistent local-only marker. A later `clawmetry connect` will refuse to override it unless you pass `--force`, which exists so that an automated provisioning script cannot quietly opt a machine into cloud sync. **Choose this when** you are a single developer on one machine, or when policy forbids agent data leaving the host at all. **What you give up:** the cloud dashboard, multi-node fleet view, phone approvals, and the device display. Everything else — every runtime, every dashboard page, Guard, detectors, the MCP server, the query API — works identically. ## Local compute, encrypted cloud display The default when you say yes to an account. The daemon still does all the reading and computing locally; it additionally pushes an encrypted snapshot so you can open the dashboard from another device. ```bash clawmetry connect --key cm_xxx ``` Session content is encrypted with AES-256-GCM before upload using a key held only on your machine. The server stores ciphertext it cannot read and your browser decrypts it. Aggregate counters travel in plaintext so a summary and a device display can render without your key. The exact split is in [End-to-end encryption](/docs/cloud/encryption/). **Choose this when** you run agents on more than one machine, want alerts that reach your phone, or want to look at a fleet without SSHing into each node. Pause or stop it at any time: ```bash clawmetry disconnect # stops sync and removes the key ``` ## Self-hosted ingest You run the ingest endpoint. Nodes push to your server instead of `ingest.clawmetry.com`, and you own the storage. ```bash CLAWMETRY_ENDPOINT=https://clawmetry.internal.example.com clawmetry connect --key ... ``` The self-hosted server exposes the same ingest surface — heartbeat, events, sessions, logs, memory, system snapshots, approvals — plus a read API for the dashboards you point at it. Relevant environment: `CLAWMETRY_SELF_HOSTED`, `CLAWMETRY_SELF_HOSTED_DB`, `CLAWMETRY_SELF_HOSTED_E2E`. **Choose this when** you need data residency guarantees, an air-gapped network, or an audit trail inside your own perimeter. See [Self-hosted ingest](/docs/cloud/self-hosted/) and [Plans and entitlements](/docs/ops/plans/) for the licensing side. ## Comparison | | Local only | Cloud display | Self-hosted | |---|---|---|---| | Account required | No | Yes | Yes (license) | | Data leaves the host | Never | Encrypted snapshot | To your server | | Server can read content | — | No | Your policy | | Multi-node fleet | No | Yes | Yes | | Phone approvals / device | No | Yes | Yes | | All {{RUNTIME_COUNT}} runtimes | Yes | Yes | Yes | | Guard and detectors | Yes | Yes | Yes | | MCP server | Yes | Yes | Yes | ## Switching later Nothing here is a one-way door. The store is the same file in all three modes, so connecting or disconnecting changes only where snapshots go — your history stays. ```bash clawmetry status --json | jq '{cloud: .cloud, node_id: .node_id, endpoint: .endpoint}' ```