DEV Community

Arnab Karmakar
Arnab Karmakar

Posted on

I built an open-source workspace to tame my AI coding agents

The problem

Every AI coding CLI is a snowflake: different flags, different session models, and all of them editing your one working copy. I wanted to run agents in parallel on isolated branches, queue prompts while an agent works, and have a real UI — without handing API keys to yet another app.

What AgentGrove is

AgentGrove is an open-source (MIT) local developer workspace. It launches the agent CLIs already on your machine (Claude Code, opencode, Kimi), translates their event streams into one UI, and scopes every chat to a git worktree.

Feature tour

  • Multi-provider agents — Claude, opencode, Kimi; live model lists, session resume, per-chat model/effort settings
  • Worktrees everywhere — each chat can live in its own worktree; create/restore from the UI, pre-scripts for pnpm install et al, celestial branch names with a galaxy map of where you've been
  • Real chat UX — streaming with coalescing, thinking blocks, tool activity rail, retry, forking, prompt-revert (undo the files a prompt touched)
  • Prompt queue — messages queue while the agent works; auto-drain or manual mode
  • Postgres DB editor — saved connections with inline test, table browser with filters + pagination, SQL editor with schema autocomplete
  • The basics done right — PTY terminal, CodeMirror editor with autosave, sub-10ms fuzzy file search over 100k files, notes scratchpad, team chat
  • Rust + SolidJS — single-binary backend, low memory footprint, hot-reload dev

How it works

No vendor SDKs. Each provider is a small subprocess adapter (~400 lines of Rust) that launches the CLI with its JSON stream flags and translates events into a common enum (Token, Thinking, ToolCall, ToolResult, Done, Error). Auth stays with your local CLI — the app never sees a key. Adding a provider means writing one translator and registering it.

Testing

Two layers keep this honest: a deterministic fake provider for dispatch/queue/resume e2e tests, and real-model Playwright runs against the actual CLIs. The demo videos on the README are recorded by Playwright in an isolated Docker stack (including a seeded Postgres for the DB editor demo), not staged screenshots.

Try it

git clone https://github.com/arnabk/agentgrove.git
cd agentgrove && just dev
Enter fullscreen mode Exit fullscreen mode

Demo videos are on the README. Issues and PRs welcome — I'd love to hear which provider you want next.

Top comments (0)