Skip to main content

What syncing does

By default, Nanny runs local-only: it enforces your limits and rules on your machine and writes an event log to stdout. Nothing leaves the box. Once a machine is logged in, nanny run additionally forwards a copy of your run’s event log to Nanny Cloud. In return you get, per organization:
  • A dashboard of every run: steps, tokens, stop reasons, models
  • Spend and usage trends across all your agents
  • Alerts when a run starts to spiral
  • A durable, exportable audit trail (compliance tiers)
Enforcement never depends on the network. If the cloud is slow or unreachable, your agent runs exactly as it would locally. Forwarding is best-effort and never blocks or fails a run.
Syncing is additive. It changes nothing about how limits and rules are enforced, only whether a copy of the event log is sent to your dashboard.

Turn it on

One step, no config to edit, no secret in nanny.toml:
This opens your browser to approve. Approve, and the machine is connected: nanny run self-mints an app-scoped credential the first time it runs in a given app directory, stored in a gitignored .nanny/credentials.local.json alongside your permanent .nanny/app.json identity. Now run as usual:
Your run appears in the dashboard within a few seconds of finishing. No code changes, no per-call instrumentation.
Syncing needs only one thing: being logged in on the machine (nanny auth login). A machine that never logged in never syncs; there’s no separate project-level switch to flip.

CI and headless machines

A browser flow needs a person. For CI or a headless machine, log in with an API key instead, supplied through NANNY_API_KEY (a CI secret) or stdin, never a command argument:
This logs in without opening a browser. --env is required so it targets the right cloud.

Skip a single run

Forward nothing for one run, without logging out:

Local vs synced

Turning it off

  • One run: nanny run --no-sync.
  • Your machine, for good: nanny auth logout. To revoke the key everywhere, use the dashboard.