Skip to main content

Settings CLI

Most configuration is declarative via oobo settings:

Settings Keys

key and api_url can both be set globally or per-project. Project settings take precedence. This is useful for staging environments where only one project should use a different API endpoint and key.remote controls which Git remote receives anchor pushes. Available at both global and per-project scope (project overrides global).

Scopes

  • default (implicit): Global settings in ~/.oobo/config
  • project: Per-project overrides in .oobo/config within the repo
Project settings override defaults for that repository.

Anchor Remote (Project-Level remote)

By default, anchor metadata is pushed to origin - the same Git remote as your code. You can redirect it to a separate repository:
This writes to .oobo/config in the repo:
Use cases:
  • Privacy-sensitive teams who want anchor data in a private repo
  • Keeping audit data separate from application code
  • Enterprise setups with dedicated metadata repositories
Data safety: Anchor data is always written to the local orphan branch first. If the push to the remote fails (permissions, network, wrong URL), the data is safe locally and the user sees a warning on stderr. The CLI retries on contention (non-fast-forward) but does not retry permission errors - the user must fix the config.

Config Files

Global config: ~/.oobo/config

Per-project config: .oobo/config (in the repo root)

Project-level settings override global settings. Resolution order: environment variable > project config > global config > default.

Tool Sections

Each of the 15 supported tools has an optional [toolname] section with enabled = true|false: cursor, claude, gemini, windsurf, aider, copilot, zed, trae, codex, opencode, kiro, continue, droid, junie, amp

Environment Variables

Agent Detection Variables

When any of these are set and non-empty, oobo auto-activates --agent mode:
  • CURSOR_AGENT
  • CLAUDECODE
  • AIDER
  • CONTINUE_SESSION
  • CONTINUE_IDE
  • AICOMMITS

Remote & Self-Hosting

By default, oobo points at api.oobo.ai. Create a free account at oobo.ai, grab an API key, and:
To self-host, point at your own API server:
Or per-project (useful for staging):
Your backend implements these endpoints: Team sync is Git-first - anchors live on the orphan branch and push with your code. There is no cloud upload pipeline.

Privacy & Security

  • Read-only data access - never modifies AI tool conversation history; only writes hook configs during setup
  • Local by default - anchors live on a git orphan branch, config in ~/.oobo/
  • Secret redaction - sessions are scrubbed with gitleaks patterns before sharing
  • No telemetry - does not phone home
  • Config protection - API keys in config get chmod 0600

Agent Configuration

Agents should operate with transparency on:

Skill File

oobo setup installs a skill file at ~/.oobo/skills/oobo/SKILL.md with symlinks in:
  • ~/.agents/skills/oobo/
  • ~/.claude/skills/oobo/
  • ~/.codex/skills/oobo/
  • ~/.cursor/skills/oobo/
  • ~/.gemini/skills/oobo/
AI coding tools discover the skill automatically and know how to install and use oobo.

Debugging

Output Modes

Use --json for complete structured state:
Use --agent for compact plain-text:

Trace Mode

Set OOBO_TRACE=1 to enable internal pipeline trace spans:
The trace fires inside the post-commit hook (oobo hooks post-commit). Trace output requires OOBO_DEBUG to be set.

Debug Logging

OOBO_DEBUG=1 enables file logging to ~/.oobo/logs/oobo.log (daily rolling):
OOBO_DEBUG=2 adds stderr output alongside the file log:
Fine-tune log filtering with OOBO_LOG:

Self-Repair

There is no oobo doctor command. The normal path is self-repair:
  • Hook installation is idempotent
  • Stale hook-buffer files from interrupted sessions are cleaned up automatically
  • Orphan branch state is rebuilt from git history if corrupted
  • Setup is safe to re-run at any time
Manual escape hatch:
Re-installs hooks, re-detects tools, and rebuilds the orphan branch if needed.