https://github.com/adinhodovic/ai-dash
A terminal UI for browsing coding sessions across multiple tools from local transcripts, session logs, and databases. It currently supports Claude Code, Codex, and OpenCode.
https://github.com/adinhodovic/ai-dash
ai ai-agents claude-code codex opencode session session-management
Last synced: 2 months ago
JSON representation
A terminal UI for browsing coding sessions across multiple tools from local transcripts, session logs, and databases. It currently supports Claude Code, Codex, and OpenCode.
- Host: GitHub
- URL: https://github.com/adinhodovic/ai-dash
- Owner: adinhodovic
- License: apache-2.0
- Created: 2026-03-30T16:21:18.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-02T15:27:56.000Z (2 months ago)
- Last Synced: 2026-04-03T03:43:15.561Z (2 months ago)
- Topics: ai, ai-agents, claude-code, codex, opencode, session, session-management
- Language: Go
- Homepage:
- Size: 13.4 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Agents: AGENTS.md
Awesome Lists containing this project
README
# AI Dash

A terminal UI for browsing coding sessions across multiple tools from local transcripts, session logs, and databases. It currently supports Claude Code, Codex, and OpenCode.
## What it does
- Parses Claude Code JSONL transcripts, Codex session logs, and the OpenCode SQLite database
- Fuzzy search across sessions, live as you type
- Filter by tool, project, or date range
- Sort per table (last active, tool, project, summary)
- Project overview with session counts and tool breakdown
- Detail pane with tokens, cost, metadata, related sessions
- Picks up subagent/child sessions (Claude subagents, OpenCode parent/child)
- Nerd Font icons when available, falls back to Unicode
- Resume or start sessions from the dashboard
## Install
### From source
```bash
git clone https://github.com/adinhodovic/ai-dash.git
cd ai-dash
make build
./ai-dash
```
### Binary
Pre-built binaries are available on the [releases page](https://github.com/adinhodovic/ai-dash/releases).
**Linux:**
```bash
curl -L https://github.com/adinhodovic/ai-dash/releases/latest/download/ai-dash-linux-amd64 -o ai-dash
chmod +x ai-dash
```
**macOS:**
```bash
curl -L https://github.com/adinhodovic/ai-dash/releases/latest/download/ai-dash-darwin-arm64 -o ai-dash
chmod +x ai-dash
```
For other architectures, see all binaries on the [releases page](https://github.com/adinhodovic/ai-dash/releases).
## Configuration
Config file: `~/.config/ai-dash/config.json`
### Sources
Sessions are discovered from default paths. Override them if needed:
| Tool | Default path | Config key |
|------|-------------|------------|
| OpenCode | `~/.local/share/opencode/opencode.db` or `~/Library/Application Support/opencode/opencode.db` on macOS | `opencode_path` |
| Codex | `~/.codex/config.toml` | `codex_path` |
| Claude Code | `~/.claude/projects/` | `claude_path` |
### Options
```json
{
"$schema": "https://raw.githubusercontent.com/adinhodovic/ai-dash/main/config.schema.json",
"terminal": "ghostty",
"poll_interval": "10s",
"default_age_filter": "14d",
"default_tool": "claude",
"auto_select_tool": false,
"nerd_font": null,
"age_presets": ["1h", "1d", "3d", "7d", "14d", "30d"]
}
```
| Option | What it does | Default |
|--------|-------------|---------|
| `terminal` | Terminal emulator used to open/resume sessions (e.g. `ghostty`, `kitty`) | `$TERMINAL` |
| `poll_interval` | How often sessions reload | `10s` |
| `default_age_filter` | Default age filter used on load and when clearing filters | `14d` |
| `default_tool` | Pre-selected tool when pressing `n` | none |
| `auto_select_tool` | Skip the tool picker for new sessions | `false` |
| `nerd_font` | Force Nerd Font on/off, `null` auto-detects | auto |
| `age_presets` | Options when cycling with `D` | `1h,1d,3d,7d,14d,30d` |
Add the `$schema` line to get autocompletion in your editor. You can also run `ai-dash schema` to print it.
On macOS, `terminal` should be a CLI terminal binary like `ghostty` or `kitty`.
## Keys
| Key | Action |
|-----|--------|
| `/` | Search |
| `r` | Resume session |
| `n` | New session |
| `t` / `p` | Filter by tool / project |
| `s` | Cycle sort |
| `D` | Cycle age range |
| `a` | Toggle subagents |
| `c` | Clear filters/search |
| `tab` | Switch focus |
| `?` | Full help |
| `q` | Quit |
Press `?` in the app to see the full context-aware keymap.
## Development
### Common tasks
```bash
make fmt
make build
make test
golangci-lint run ./...
```
Run the app locally with:
```bash
./ai-dash
```
### Project layout
- `cmd/ai-dash` - cobra entrypoint
- `internal/config` - config loading and schema generation
- `internal/session` - shared session model and sorting
- `internal/sources/claude` - Claude Code parser
- `internal/sources/codex` - Codex parser
- `internal/sources/opencode` - OpenCode parser
- `internal/sources/shared` - shared source discovery helpers
- `internal/ui` - Bubble Tea TUI
### Source support
Only official provider files are supported:
- Claude Code transcripts
- Codex session JSONL files
- OpenCode SQLite database
Do not add generic or custom session JSON loaders.
### Testing notes
- Add provider-specific tests when changing importer or parser logic
- Keep fixtures under each source package's `testdata/` directory
- Run `make fmt`, `make build`, `make test`, and `golangci-lint run ./...` before finishing changes
## License
Apache License 2.0