INTERFACES / OPEN SOURCE

Open by default. Auditable by design.

The public ottto-ai/ottto runtime ships the daemon, the connector registry, and the SDK and testkit crates. The code that sees your usage is the code you can read.

Apache-2.0 runtime · no account needed to read or build · runs on your machine
The connector SDK

Every source is a manifest you can audit.

A connector is a declared source plus registered collectors - no hidden scraping, no opaque binary. The ottto-connector-sdk crate gives you validation helpers; ottto-connector-testkit turns the manifests into passing tests. Source manifests declare identity and operations; collector manifests declare risk classes and raw-content policy.

  • Manifest-backed source + collector registry. Each connector declares what it reads and which collector runs it; the registry is the source of truth.
  • ottto-connector-sdk validation helpers. Schema, capability, and policy checks you call from your own connector code.
  • ottto-connector-testkit manifest tests. Drop in your source.toml and the testkit asserts it loads, validates, and round-trips.
  • Review tiers official → community, with maturity levels. Every source and collector carries where it sits and how proven it is, surfaced before you enable it.
  • Collector risk classes & raw-content policy. risk_classes and uploads_raw_content live on collector manifests, where the actual read behavior is declared.
source.toml - claude-code
# ottto-ai/ottto · connectors/sources/claude-code/source.toml schema_version = "source_manifest.v1" source_id = "claude_code" app_slug = "claude_code" display_name = "Claude Code" publisher = "ottto" review_tier = "official" maturity = "stable" operations = ["detect", "collect_usage", "monitor_quota", "upload_snapshot"] collectors = ["local_sessions", "otel_config", "quota_status"] $ cargo test -p ottto-connector-testkit manifest valid · registered · tests passed
The local daemon

ottto-service runs on your machine, on your terms.

It parses local transcript metadata into snapshots, holds setup keys in the macOS Keychain, and uploads schema-v6 usage snapshots through a relay device you register. It self-heals within approval boundaries - never blind remote control, never silent key rotation. The process that reads your usage is the process you compiled.

  • Transcripts → snapshots, locally. Parsing happens on-device; only the reconciled snapshot leaves.
  • Keys live in the Keychain. Setup keys are OS-protected, not in plaintext config.
  • schema-v6 exact-usage uploads. Sent via a relay device you explicitly register and can revoke.
  • Self-heals inside approval boundaries. It fixes itself within what you allowed - no blind remote control, no silent key rotation.
Apple Silicon · macOS Sonoma+
zsh - ottto-service
$ brew install ottto-ai/tap/ottto ottto-service installed · daemon running $ ottto status --json { "protocol_version": 11, "daemon": "running" } parsed locally · only the snapshot leaves the Mac

Read the code, then run it.

The daemon, the connector registry, and the SDK are all in the open. Install the runtime, connect your accounts, and watch your AI coding spend reconcile - with nothing you can't audit.

Free to start · no credit card · the runtime is open source