> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oobo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool Integrations

> What oobo reads from each AI coding tool and how.

## Overview

Oobo integrates with 15 AI coding tools. All integrations are **read-only** for session data. Oobo never modifies any tool's conversation history or databases. It does write hook configuration files (e.g. `~/.cursor/hooks.json`, `~/.claude/settings.json`) during `oobo setup` to register lifecycle event handlers.

| Tool           | Sessions | Transcripts | Native Tokens | Agent Hooks |
| -------------- | :------: | :---------: | :-----------: | :---------: |
| Cursor         |    yes   |     yes     |   estimated   |     yes     |
| Claude Code    |    yes   |     yes     |      yes      |     yes     |
| Gemini CLI     |    yes   |     yes     |      yes      |     yes     |
| OpenCode       |    yes   |     yes     |      yes      |     yes     |
| Codex CLI      |    yes   |     yes     |      yes      |      no     |
| Aider          |    yes   |     yes     |     yes\*     |      no     |
| GitHub Copilot |    yes   |     yes     |   estimated   |      no     |
| Zed            |    yes   |     yes     |      yes      |      no     |
| Continue       |    yes   |     yes     |       no      |     yes     |
| Factory Droid  |    yes   |     yes     |       no      |     yes     |
| Windsurf       |    yes   |   partial   |       no      |      no     |
| Trae           |    yes   |   partial   |       no      |      no     |
| Amp            |    yes   |     yes     |       no      |      no     |
| Junie          |    yes   |     yes     |       no      |      no     |
| Kiro           |    yes   |     yes     |       no      |     yes     |

\*Aider native telemetry requires user configuration (see below).

**Native tokens** means the tool stores actual token counts in its local files (accurate). When not available, oobo estimates tokens using tiktoken and marks them with `is_estimated: true`.

<Note>
  The first 10 tools (Cursor, Claude Code, Gemini, OpenCode, Codex, Aider, GitHub Copilot, Zed, Continue, Factory Droid) are enabled by default. The remaining 5 (Windsurf, Trae, Kiro, Junie, Amp) are **experimental** and require:

  ```bash theme={null}
  oobo settings default set tools.experimental on
  ```
</Note>

***

## Cursor

**Data sources:**

* `~/Library/Application Support/Cursor/User/globalStorage/state.vscdb`: conversation history (composerData), session metadata
* `~/.cursor/projects/`: workspace state and agent session data

**What oobo extracts:** Sessions, full conversations, model names, session duration. Token counts are estimated via tiktoken (Cursor does not expose native token counts in local storage).

**Hooks:** `~/.cursor/hooks.json` (installed automatically by `oobo setup`).

***

## Claude Code

**Data sources:**

* `~/.claude/projects/{slug}/{session_id}.jsonl`: full session transcripts with native `usage` blocks

**What oobo extracts:** Sessions, full conversations, native per-message token counts (input, output, cache read, cache creation), model name, tool calls with file paths.

**Hooks:** `~/.claude/settings.json` (installed automatically by `oobo setup`).

**Multi-agent teams:** When Claude Code runs multiple agents in parallel (via tmux or Agent Teams), each agent is a separate CLI process with its own session UUID and `.jsonl` file in the same project directory. Oobo discovers all of them automatically. Every agent's conversation and tokens appear as separate sessions. Team coordination data (task lists at `~/.claude/tasks/`, mailboxes at `~/.claude/teams/`) is not captured.

***

## Gemini CLI

**Data sources:**

* `~/.gemini/projects.json`: project path to slug mapping
* `~/.gemini/tmp/{slug}/chats/session-*.json`: full session transcripts

**What oobo extracts:** Sessions, full conversations, native per-message token counts (input, output, cached, thoughts), model name, tool calls, session duration, summary.

**Hooks:** `~/.gemini/settings.json` (installed automatically by `oobo setup`).

***

## OpenCode

**Data sources:**

* `~/.local/share/opencode/opencode.db` (SQLite, Linux) or `~/Library/Application Support/opencode/opencode.db` (macOS): sessions, messages with embedded token JSON

**What oobo extracts:** Sessions, conversations, native per-message tokens (input, output, reasoning, cache), model, diff summaries.

**Hooks:** `~/.config/opencode/plugins/oobo.ts` (installed automatically by `oobo setup`).

***

## Codex CLI (OpenAI)

**Data sources:**

* `~/.codex/state_5.sqlite`: session index (fast discovery)
* `~/.codex/sessions/{YYYY}/{MM}/{DD}/rollout-*.jsonl`: full transcripts with native `token_count` events

**What oobo extracts:** Sessions, conversations, native cumulative token counts (input, output, cached, reasoning), model, git context (sha, branch, origin).

***

## Aider

**Data sources:**

* `{project}/.aider.chat.history.md`: per-project chat history in markdown
* `~/.oobo/aider-analytics.jsonl`: native telemetry (tokens, model) when configured

**What oobo extracts:** Sessions (delimited by `# aider chat started at` headers), conversations, model name. Native tokens are only available when the user adds this to `~/.aider.conf.yml`:

```yaml theme={null}
analytics-log: ~/.oobo/aider-analytics.jsonl
```

Without that config line, oobo still discovers Aider sessions and estimates tokens with tiktoken.

***

## GitHub Copilot Chat

**Data sources:**

* `~/Library/Application Support/Code/User/workspaceStorage/{hash}/chatSessions/*.json|*.jsonl`: per-workspace session files

**What oobo extracts:** Sessions, conversations (user messages + assistant responses), model name. No native token counts available, so oobo uses tiktoken estimation.

**Cross-platform paths:**

* macOS: `~/Library/Application Support/Code/`
* Linux: `~/.config/Code/`
* Windows: `%APPDATA%/Code/`

***

## Windsurf

**Data sources:**

* `~/.codeium/windsurf/cascade/{uuid}.pb`: encrypted session files (ChaCha20-Poly1305)
* `~/Library/Application Support/Windsurf/User/workspaceStorage/`: workspace associations

**What oobo extracts:** Session IDs, timestamps, project associations. Conversation content is encrypted and unreadable. Metadata only.

***

## Zed

**Data sources:**

* `~/Library/Logs/Zed/telemetry.log`: per-request native token usage (JSONL)
* `~/Library/Application Support/Zed/threads/threads.db`: conversations (zstd-compressed JSON blobs)

**What oobo extracts:** Sessions, conversations, native per-request tokens (input, output, cache creation, cache read), model name, turn timing, tool calls.

***

## Trae

**Data sources:**

* `~/Library/Application Support/Trae/User/workspaceStorage/{hash}/state.vscdb`: session IDs and first user message (plaintext)
* `~/Library/Application Support/Trae/ModularData/ai-agent/database.db`: encrypted (SQLCipher)

**What oobo extracts:** Session IDs, timestamps, first user message, project associations. The main conversation database is encrypted, so data extraction is limited.

***

## Amp

**Data sources:**

* `~/.local/share/amp/threads/<thread-id>.json`: per-thread JSON files with message history
* macOS also checks `~/Library/Application Support/amp/threads/`

**What oobo extracts:** Sessions, conversations, model name. Token counts are estimated via tiktoken.

***

## Continue

**Data sources:**

* `~/.continue/sessions/<session-id>.jsonl`: per-session JSONL files with conversation history

**What oobo extracts:** Sessions, conversations, model name. Token counts are estimated via tiktoken.

**Hooks:** `~/.continue/settings.json` (installed automatically by `oobo setup`).

***

## Factory Droid

**Data sources:**

* `~/.factory/sessions/`: JSONL session files (Claude Code-compatible format)
* `~/.factory/projects/<slug>/`: per-project sessions
* `.factory/` in the repo root: project-level sessions

**What oobo extracts:** Sessions, conversations, model name. Token counts are estimated via tiktoken.

**Hooks:** `~/.factory/settings.json` (installed automatically by `oobo setup`).

***

## Junie

**Data sources:**

* `~/.junie/sessions/` or `~/.local/share/junie/sessions/`: JSONL session files

**What oobo extracts:** Sessions, conversations, model name. Token counts are estimated via tiktoken.

***

## Kiro

**Data sources:**

* `~/.kiro/data.sqlite3` (SQLite): conversations\_v2 table with session metadata and messages

**What oobo extracts:** Sessions, conversations, model name. Token counts are estimated via tiktoken.

**Hooks:** `~/.kiro/agents/oobo.json` (installed automatically by `oobo setup`).

***

## Viewing Integration Data

```bash theme={null}
oobo setup --repair          # re-detect tools and reinstall hooks
oobo                         # see enriched commit history
oobo recall "query"          # search sessions and anchors
oobo anchor show <sha>       # see which tools contributed to a commit
```

## Token Estimation

For tools without native token counts (Cursor, Copilot, Windsurf, Trae, Amp, Continue, Droid, Junie, Kiro), oobo estimates tokens using tiktoken with the appropriate BPE encoding per model family (cl100k for Claude, o200k for GPT-4o/o1/o3). Estimated counts are marked with `is_estimated: true` in JSON output.
