A local dashboard for monitoring AI agent sessions across Claude Code, OpenCode, and other AI backends.
Sessions · Kanban · Live view · Workflows · Sub-agent tracking
CrewView is a single binary that embeds a React dashboard. Point it at your running AI agents and it gives you:
- Sessions list — every conversation, with status (Running / Done / Failed), duration, and prompt preview
- Kanban board — drag-free view across Running / Needs Approval / Needs Input columns
- Live view — real-time agent cards with sub-agents shown nested under their parent
- Sub-agent tracking — when Claude Code or OpenCode spawns a sub-agent, it appears as a child of the parent session
- Workflow builder — define multi-step agent pipelines and trigger scheduled runs
- Multi-source — connect Claude Code (local JSONL files) and OpenCode (HTTP API) at the same time, add more from the UI
![]() |
![]() |
| Sessions list | Kanban board |
![]() |
![]() |
| Live view with sub-agent chips | Add AI agent source |
Adding an AI agent source from the UI
curl -fsSL https://raw.githubusercontent.com/ovsec/crewview/main/install.sh | shThis downloads the pre-built binary for your OS/arch from the latest GitHub release and installs it to /usr/local/bin. No Go or Node required.
To install to a custom directory:
INSTALL_DIR=~/.local/bin curl -fsSL https://raw.githubusercontent.com/ovsec/crewview/main/install.sh | shTo pin a specific version:
VERSION=v1.0.0 curl -fsSL https://raw.githubusercontent.com/ovsec/crewview/main/install.sh | shGrab the binary for your platform from the releases page, make it executable and move it to your PATH:
# Example for Linux amd64
curl -fsSL https://github.com/ovsec/crewview/releases/latest/download/crewview_linux_amd64 -o crewview
chmod +x crewview
sudo mv crewview /usr/local/bin/| Platform | Binary name |
|---|---|
| Linux x86_64 | crewview_linux_amd64 |
| Linux ARM64 | crewview_linux_arm64 |
| macOS x86_64 | crewview_darwin_amd64 |
| macOS Apple Silicon | crewview_darwin_arm64 |
| Windows x86_64 | crewview_windows_amd64.exe |
| Windows ARM64 | crewview_windows_arm64.exe |
Prerequisites: Go 1.22+, Node 18+
git clone https://github.com/ovsec/crewview
cd crewview
make build
# Binary is now at ./crewviewIf you use Claude Code, this is all you need:
./crewview --claude-codeOpen http://localhost:3456 — your Claude Code sessions appear automatically. CrewView reads ~/.claude/projects/**/*.jsonl every 5 seconds.
# OpenCode running on default port 4096
./crewview
# OpenCode on a different port
./crewview --opencode-url http://localhost:5000
# OpenCode with a password
./crewview --opencode-url http://my-server:4096
# (set the password from the UI: Sources → Add AI agent → OpenCode → Password field)./crewview --claude-code --opencode-url http://localhost:4096./crewview --mockGenerates synthetic sessions so you can explore the UI without any running agents.
--port int Dashboard port (default 3456)
--opencode-url string OpenCode server URL (default "http://localhost:4096")
--claude-code Read Claude Code sessions from ~/.claude
--claude-code-path string Override Claude Code data dir (default ~/.claude)
--db string SQLite database path (default ~/.crewview/history.db)
--mock Run with mock data, no adapters started
--telemetry bool Send anonymous usage stats (default true, --telemetry=false to opt out)
You don't have to restart to add a new agent source. Click + Add AI agent in the sidebar:
| Field | Required | Notes |
|---|---|---|
| Label | Yes | Display name shown in the sidebar |
| Server URL | OpenCode only | Base URL of the OpenCode HTTP API |
| Password | No | Sent as Authorization: Bearer <token> on every request |
| Data Path | Claude Code only | Defaults to ~/.claude |
Sources persist across restarts and reconnect automatically on startup.
CrewView reads ~/.claude/projects/{project}/{session-uuid}.jsonl every 5 seconds using byte-offset tracking so it only reads new lines. Sub-agents are discovered in {session-uuid}/subagents/agent-*.jsonl and linked to their parent via the session tree.
Connects to the OpenCode HTTP API (/session, /session/:id/message, /event SSE). Sessions are upserted into the local SQLite DB. If a password is set it is sent as a Bearer token on every request.
When an agent spawns a sub-agent (e.g. Claude Code's Task tool, or OpenCode's @explore / @general sub-agents), CrewView links the child session to the parent via parentID. In the sidebar they appear indented; in the Live view they appear as chips under the parent card.
All data is stored locally in ~/.crewview/history.db (SQLite). Nothing is sent to external servers unless --telemetry is enabled (anonymous aggregate counts only).
Override the path:
./crewview --db /path/to/my.dbTo start fresh, delete the database:
rm ~/.crewview/history.db# Terminal 1 — Vite dev server (hot reload)
make dev-frontend # runs: cd frontend && npm run dev
# Terminal 2 — Go backend with CORS enabled for Vite
go run . --port 3457 --claude-code
# Open http://localhost:5173The Go backend exposes CORS headers when the Vite origin is detected so the dev server can proxy API calls.
# Start the server first (mock or real)
./crewview --mock &
# Static screenshots (outputs to screenshots/*.png)
make shots
# Full demo GIF (outputs to screenshots/crewview-demo.gif)
make gif-demo
# All GIFs
make gif-allcrewview/
├── main.go # Entry point, CLI flags, seeding
├── internal/
│ ├── agent/adapter.go # Pluggable adapter interface
│ ├── claudecode/adapter.go # Claude Code JSONL reader
│ ├── opencode/client.go # OpenCode HTTP + SSE client
│ ├── registry/registry.go # Dynamic adapter lifecycle manager
│ ├── db/models.go # SQLite schema + CRUD
│ ├── server/server.go # Fiber HTTP + WebSocket server
│ └── ws/hub.go # WebSocket broadcast hub
├── frontend/
│ └── src/
│ ├── pages/ # Route-level page components
│ ├── components/ # UI components
│ ├── contexts/ # AppContext (global state + WS)
│ └── lib/ # API client, utilities
└── tests/ # Playwright screenshot + GIF tests
MIT





