Skip to content

ovsec/crewview

Repository files navigation

CrewView demo

CrewView

A local dashboard for monitoring AI agent sessions across Claude Code, OpenCode, and other AI backends.
Sessions · Kanban · Live view · Workflows · Sub-agent tracking


What it does

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

Screenshots

Sessions Kanban
Sessions list Kanban board
Live view Add agent
Live view with sub-agent chips Add AI agent source

Adding an AI agent source
Adding an AI agent source from the UI


Install

Option A — curl (Linux & macOS)

curl -fsSL https://raw.githubusercontent.com/ovsec/crewview/main/install.sh | sh

This 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 | sh

To pin a specific version:

VERSION=v1.0.0 curl -fsSL https://raw.githubusercontent.com/ovsec/crewview/main/install.sh | sh

Option B — Download binary manually

Grab 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

Option C — Build from source

Prerequisites: Go 1.22+, Node 18+

git clone https://github.com/ovsec/crewview
cd crewview
make build
# Binary is now at ./crewview

Usage

Quick start — Claude Code only

If you use Claude Code, this is all you need:

./crewview --claude-code

Open http://localhost:3456 — your Claude Code sessions appear automatically. CrewView reads ~/.claude/projects/**/*.jsonl every 5 seconds.

With OpenCode

# 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)

Both at once

./crewview --claude-code --opencode-url http://localhost:4096

Mock mode (no agents needed)

./crewview --mock

Generates synthetic sessions so you can explore the UI without any running agents.


All flags

--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)

Adding agents from the UI

You don't have to restart to add a new agent source. Click + Add AI agent in the sidebar:

Configure OpenCode

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.


How sessions are tracked

Claude Code

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.

OpenCode

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.

Sub-agents

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.


Data storage

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

To start fresh, delete the database:

rm ~/.crewview/history.db

Development

# 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:5173

The Go backend exposes CORS headers when the Vite origin is detected so the dev server can proxy API calls.

Running the Playwright screenshot/GIF tests

# 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-all

Project structure

crewview/
├── 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

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors