Overview
Oobo is designed to be used by AI agents, not just humans. Every command supports two structured output modes, and oobo ships with a skill file that agents can read to discover its capabilities.Output modes
Two global flags control structured output. They work on every command and are mutually exclusive.| Flag | Format | Use when |
|---|---|---|
--agent | Compact text — pipe-delimited rows for lists, key: value for single objects | Default for agents. Minimal token cost. |
--json | Full JSON | You need the complete object graph (messages, file attribution, etc.) |
--agent. Fall back to --json when compact output lacks a field you need (e.g. sessions show --agent omits messages; sessions show --json includes them).
—agent examples
Lists start with a schema header, then one record per line:Skill file
Oobo installs a skill file at~/.oobo/skills/oobo/SKILL.md during oobo setup, with symlinks in:
~/.agents/skills/oobo/(universal — always created)~/.claude/skills/oobo/,~/.codex/skills/oobo/,~/.cursor/skills/oobo/,~/.gemini/skills/oobo/(created when the tool is already installed)
Recommended agent settings
| Setting | Value | Why |
|---|---|---|
transparency.mode | on | Metadata + redacted transcripts sync |
git.alias_enabled | true | Automatic enrichment on every commit |
server.sync | true | Auto-push anchor data to backend |
--agent flag | Always | Compact output, minimal token cost |
Agent lifecycle hooks
For tools that support it (Cursor, Claude Code, Gemini CLI, OpenCode), oobo installs hooks that track session start/end, tool calls, subagent spawns, and thinking events. This enables real-time session linking during commits..git/oobo-sessions/<id>.json. Oobo reads them at commit time to link sessions to anchors.
For tools without hook support (Aider, Copilot, Windsurf, Zed, Trae, Codex), oobo discovers sessions from tool storage after the fact via time-window correlation.
Agent-first setup
Installation
Non-interactive configuration
JSON field reference
These are the fields returned by--json. The --agent flag returns the same data in compact text.
anchors: commit_hash, message, author, author_type, branch, committed_at, contributors[], files_changed[], added, deleted, file_changes[], ai_percentage, sessions[] (each with session_id, agent, model, link_type, files_touched[], parent_session_id?, subagent_type?, peer_session_ids[]), transparency_mode, file_interactions[]?
sessions list: session_id, name, source, mode, project_path, created_at, updated_at, model, input_tokens, output_tokens, duration_secs, is_estimated, files_touched, tool_calls, parent_session_id?, subagent_type?, peer_session_ids[]?
sessions show: All list fields plus messages[] (role, text, timestamp_ms), message_count
stats: sessions, input_tokens, output_tokens, total_tokens, per_tool[], per_model[], ai_code, productivity, daily[]
share: session_id, source, model, messages[], stats, shared_at, oobo_version