The Problem

Developers using Claude Code must juggle a terminal‑only interface, manual project navigation, and ad‑hoc scripts for custom agents. This fragmentation makes it hard to keep session context, monitor usage costs, and reuse agent configurations across projects.

What This Does

opcode delivers a desktop command‑center built on Tauri 2 (Rust + React). The UI lives in src/ (87 TSX files) while the native backend resides in src‑tauri/ (Rust entry points src-tauri/src/main.rs and src-tauri/src/lib.rs). Key capabilities are:

Project & Session Browser – UI components such as src/components/ProjectList.tsx and src/components/SessionList.tsx read Claude project directories (~/.claude/projects/) and display session metadata. Custom CC Agents – Agent definitions are JSON files in ccagents/ (e.g., git-commit-bot.opcode.json). The backend command src-tauri/src/commands/agents.rs spawns isolated Rust processes to run these agents without blocking the UI. Usage Analytics – src/components/UsageDashboard.tsx aggregates token and cost data supplied by the Rust module src-tauri/src/commands/usage.rs. MCP Server Management – UI in src/components/MCPManager.tsx talks to the backend src-tauri/src/commands/mcp.rs to add, import, or export server configurations.

All interactions funnel through the Tauri bridge (src-tauri/src/webmain.rs), ensuring the React front‑end can invoke secure Rust APIs.

How To Use It

Setup

Install the required toolchains: # Node (npm) and Rust (via rustup) curl -fsSL https://sh.rustup.rs | sh npm ci # reads package-lock.json Pull the Rust dependencies: cd src-tauri cargo fetch

Configuration

Create a file src-tauri/.env (or export in the shell) with your Claude API key: CLAUDEAPIKEY=sk-…

The backend reads this variable in src-tauri/src/claudebinary.rs.

Agent definitions are placed under ccagents/. Add or edit JSON files to define new agents; the UI automatically picks them up.

Running

Development (hot‑reload UI, debug backend): npm run tauri dev

This launches the Tauri window using src-tauri/src/main.rs.

Production build (installable binaries): npm run tauri build

Artifacts appear in src-tauri/target/release/.

The main UI entry is src/App.tsx, which mounts the component tree under index.html.

Real‑World Use

A team building a microservice can store its repo under ~/.claude/projects/service‑api. Using opcode, a developer opens the Project Browser, selects the service, and clicks Create Agent → Git‑Commit Bot (defined in cc_agents/git-commit-bot.opcode.json). The agent runs in the background, generates a commit message, and the UI shows the result in AgentRunOutputViewer.tsx. Meanwhile, the Usage Dashboard tracks token spend per project, helping the team stay within budget.

Code Health & Issues

Low – Limited Rust unit tests – Only 4 test files exist under src-tauri/tests/; most backend logic (commands/, process/) lacks coverage. Medium – API key handling – The repo does not ship a secure secret‑management guide; the key is read directly from the environment, which may be insecure on shared machines. Low – UI component duplication – Files like App.cleaned.tsx and App.tsx suggest legacy artifacts; could cause maintenance overhead. None – CI/CD – GitHub Actions (.github/workflows/*.yml) build Linux/macOS binaries and run tests, indicating a functional pipeline. None – Licensing – LICENSE present, no ambiguity. Low – Dependency hygiene – package-lock.json and Cargo.lock are committed, but no automated vulnerability scanning is configured.

Overall the repository compiles cleanly, has a clear separation between UI and native code, and includes basic documentation and CI.

The Bottom Line

opcode provides a functional, Tauri‑based desktop UI that bridges Claude Code’s CLI into a manageable, agent‑centric workflow. It is suitable for solo developers or small teams that need visual project management and basic usage analytics, provided they are comfortable handling the modest backend test coverage and managing API secrets themselves.