Skip to content

Repository files navigation

AI Dash

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

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.

Linux:

curl -L https://github.com/adinhodovic/ai-dash/releases/latest/download/ai-dash-linux-amd64 -o ai-dash
chmod +x ai-dash

macOS:

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.

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

{
  "$schema": "https://raw.githubusercontent.com/adinhodovic/ai-dash/main/config.schema.json",
  "terminal": "ghostty",
  "multiplexer": "auto",
  "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
multiplexer Open sessions in tmux/zellij when ai-dash runs inside one. auto detects via $TMUX/$ZELLIJ; tmux/zellij force one; off disables. Falls back to terminal when no multiplexer is active. auto
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

Inside tmux a new session opens via tmux new-window; inside zellij it opens as a new pane via zellij run. Set multiplexer: "off" to always spawn a fresh terminal emulator instead.

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

make fmt
make build
make test
golangci-lint run ./...

Run the app locally with:

./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

About

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.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages