{"id":50514447,"url":"https://github.com/arnabk/agentgrove","last_synced_at":"2026-07-01T07:01:29.320Z","repository":{"id":361046804,"uuid":"1252868057","full_name":"arnabk/agentgrove","owner":"arnabk","description":"High-performance local developer workspace — editor, terminals, AI chat, git diff, notes, prompt queue. Rust BE + SolidJS FE. Cross-platform.","archived":false,"fork":false,"pushed_at":"2026-07-01T02:16:00.000Z","size":1566,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-01T04:14:05.586Z","etag":null,"topics":["ai-chat","code-editor","cross-platform","developer-tools","git-worktree","ide","open-source","rust","solidjs","terminal"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arnabk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-29T00:32:50.000Z","updated_at":"2026-07-01T02:16:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/arnabk/agentgrove","commit_stats":null,"previous_names":["arnabk/agentgrove"],"tags_count":107,"template":false,"template_full_name":null,"purl":"pkg:github/arnabk/agentgrove","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnabk%2Fagentgrove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnabk%2Fagentgrove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnabk%2Fagentgrove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnabk%2Fagentgrove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arnabk","download_url":"https://codeload.github.com/arnabk/agentgrove/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnabk%2Fagentgrove/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34996290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-chat","code-editor","cross-platform","developer-tools","git-worktree","ide","open-source","rust","solidjs","terminal"],"created_at":"2026-06-02T23:00:25.102Z","updated_at":"2026-07-01T07:01:29.287Z","avatar_url":"https://github.com/arnabk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AgentGrove\n\n[![CI](https://github.com/arnabk/agentgrove/actions/workflows/ci.yml/badge.svg)](https://github.com/arnabk/agentgrove/actions/workflows/ci.yml)\n[![Release](https://github.com/arnabk/agentgrove/actions/workflows/release.yml/badge.svg)](https://github.com/arnabk/agentgrove/actions/workflows/release.yml)\n[![Nightly](https://github.com/arnabk/agentgrove/actions/workflows/nightly.yml/badge.svg)](https://github.com/arnabk/agentgrove/actions/workflows/nightly.yml)\n\nHigh-performance, low-footprint, open-source local developer workspace.\nRust backend + SolidJS frontend. Cross-platform (Linux, macOS, Windows).\n\n## Features\n\n### Project Management\n- **Folder-based projects** — add any folder; name auto-derived from the path\n- **BE-driven folder picker** — no native file dialog needed; browse the filesystem from the UI\n- **Multi-project support** — multiple projects open simultaneously with independent expand/collapse\n- **Per-project settings** — pre-worktree scripts, inherited by every worktree\n- **Project-scoped state** — each project/worktree gets its own tabs, editor state, and chat history\n\n### Git \u0026 Worktrees\n- **Git worktree management** — create, rename, delete worktrees from the UI\n- **Remote-only worktrees** — worktrees gated on projects with a configured git remote\n- **Pre-fetch from remote** — always pulls latest remote before creating a worktree\n- **Pre/post scripts** — run setup commands (e.g. `pnpm install`) with live console output\n- **Worktree history** — soft-deleted worktrees can be searched and restored\n- **Branch switching** — switch branches from the UI with a branch picker\n- **Random branch names** — unique two-word suggestions with hex-suffix fallback for collisions\n- **VSCode-style git diff** — staged/unstaged file groups with inline CodeMirror merge view\n- **Per-file discard** — restore tracked files or delete untracked, with confirmation\n\n### Editor\n- **CodeMirror 6 editor** — syntax highlighting for JS/TS, JSON, Markdown, Rust, and more\n- **Autosave** — debounced 600ms + blur + file-switch + Cmd/Ctrl+S; no save button needed\n- **Code folding** — fold/unfold with gutter markers and keyboard shortcuts\n- **File size guard** — large files blocked to prevent crashes\n- **Disabled state** — editor disabled with helpful message when no file is selected\n\n### Terminal\n- **WebSocket-powered terminal** — bidirectional WS for instant output streaming and keystroke delivery\n- **Multiple terminals** — unlimited terminal tabs per project/worktree\n- **Per-project cwd** — terminals open in the correct project or worktree directory\n- **Auto-close on exit** — Ctrl+D / `exit` closes the tab within ~200ms\n- **Session persistence** — terminal sessions survive page refresh (PTY stays alive on BE)\n- **Resize sync** — xterm dimensions synced to backend PTY on window resize\n\n### AI Chat\n- **Multi-provider** — Claude and opencode supported via CLI subprocess passthrough (legal, user-authenticated)\n- **Live model discovery** — models fetched live from providers with cache + manual refresh\n- **Per-chat settings** — model, effort (thinking level), slash commands configurable per chat\n- **Streaming responses** — real-time token streaming via WebSocket with coalescing (64B/50ms)\n- **Markdown rendering** — assistant output rendered with `marked` + `DOMPurify`; syntax-highlighted code blocks\n- **Thinking blocks** — extended thinking events rendered as collapsible disclosure blocks\n- **Tool activity rail** — tool calls displayed as icon + name + command preview rows\n- **File upload \u0026 paste** — drag-drop, paste, or attach files; absolute paths appended to prompt\n- **Chat forking** — fork a conversation from any point to explore a different direction\n- **Message resend** — re-trigger any user message to re-run it through the agent\n- **Prompt revert** — ask AI to undo the file changes a specific prompt produced\n- **Delete from point** — truncate the conversation from any prompt onwards, clearing the timeline to that point\n- **Copy buttons** — hover to copy user or assistant messages\n- **Smart input** — Tiptap rich-text composer with bullet/number/blockquote/code-fence autoformat\n- **Slash commands** — `/` menu with provider commands + user-defined prompt templates\n- **PR detection** — auto-detects GitHub PR URLs in agent output; shows PR badge in chat header\n- **Session resume** — Claude uses `--resume`, opencode uses `--session` + `--dir` for continuity\n- **Auto-approve tools** — `--dangerously-skip-permissions` flag with per-chat override\n- **Stop button** — cancel in-flight agent turns; kills the CLI subprocess cleanly\n\n### Prompt Queue\n- **Per-chat queue** — messages sent while AI is busy auto-enqueue\n- **Auto-drain** — in auto mode, queued items dispatch back-to-back after each turn\n- **Manual mode** — toggle to hold queue items until explicit \"Run next\"\n- **Inline editing** — double-click queue items to edit text; attachments preserved\n- **Reorder** — drag queue items up/down to change execution order\n- **Right-side dock** — always-visible queue panel inside the chat pane, resizable\n\n### Notes / Scratchpad\n- **Per-project rich-text scratchpad** — Tiptap editor with headings, bullets, numbers, checkboxes, code, quotes, links\n- **Drag-to-reorder** — grab handle in left gutter to move blocks up/down\n- **Rounded checkboxes** — transparent-bg custom checkbox styling\n- **Autosave** — debounced with blur/visibility-change flush; never overwrites non-empty with empty\n- **Cross-instance sync** — edits propagate to other browser tabs/windows via WebSocket\n\n### Reusable Prompt Templates\n- **Settings → Prompts** — CRUD for named prompt templates\n- **Default seeds** — ships with 9 templates (Create PR, Code review, Explain code, Write tests, Refactor, Debug, Commit message, Summarise, Merge from remote)\n- **Quick picker** — sparkle icon in chat input opens prompt list for instant insertion\n\n### File Search (Cmd+P)\n- **Fuzzy file finder** — `nucleo-matcher` powered; sub-10ms search across 100k files\n- **Gitignore-aware** — uses `ignore` crate's parallel walker (same as ripgrep)\n- **Live index** — per-project file index with manual refresh\n\n### Settings\n- **Tabbed modal** — Appearance, Prompts, Providers, Agents, Backups\n- **Themes** — 4 built-in themes (Dark, Light, Solarized, Tokyo Night) with CSS variable system\n- **Fonts** — 10+ Google Fonts presets for UI and mono; live-loaded on selection\n- **Font size** — global size control (12–28px) via CSS zoom scaling\n- **Provider management** — CLI providers show detection status; HTTP providers have config forms\n- **Auto-approve toggle** — global default with per-chat override\n- **Database backups** — list snapshots, restore with confirmation, auto-snapshot before migrations\n\n### Memory \u0026 Performance\n- **Memory indicator** — top-right pill showing AG (app-attributable), BE (Rust RSS), JS+DOM breakdown\n- **Subsystem attribution** — tracks chat events, terminal scrollback, editor document, project state\n- **Performance budget** — per-prompt 4096-event cap with Truncated sentinel; windowed chat loading (50 prompts)\n- **Virtualized timeline** — `@tanstack/solid-virtual` with flow-layout for smooth chat scrolling\n- **Delta terminal polling** — WS streams output; no more 200ms HTTP poll loops\n\n### Cross-Instance Sync\n- **WebSocket broadcast** — project/worktree/chat/notes mutations propagate to all connected clients\n- **Echo suppression** — 3s self-echo guard prevents reload loops on your own edits\n- **Layout persistence** — per-scope UI state (active tab, pane, file) persisted to BE via layout API\n\n### Data Safety\n- **SQLite persistence** — chats, prompts, events, queue, layout all survive BE restarts\n- **Auto-snapshots** — DB snapshotted before every migration; rotated to last 10\n- **Forward-only migrations** — pre-commit hook + CI guard prevent editing applied migrations\n- **Restore CLI** — `just restore-db \u003cname\u003e` to recover from any snapshot\n- **Encrypted secrets** — provider API keys encrypted at rest with XChaCha20-Poly1305\n\n### Developer Experience\n- **Hot reload** — `just dev` runs BE (cargo-watch) + FE (Vite HMR) together\n- **Cross-platform** — Linux/macOS/Windows; `.sh` + `.ps1` script pairs; `PathBuf` only\n- **Draggable panels** — left rail + right sidebar + queue dock all resizable with min/max constraints\n- **Kebab menus** — project/worktree row actions in overflow menus; no icon clipping on narrow rail\n- **Custom dialogs** — themed `confirm`/`alert` replace all native dialogs\n- **URL routing** — scope/pane/chat/file encoded in URL; refresh restores deep state\n- **Invalid path handling** — back-nav to deleted projects redirects with toast notification\n- **Min app width** — 1024px floor with horizontal scroll below threshold\n- **App icon** — visible in top bar when left rail is collapsed\n\n### Testing \u0026 CI\n- **118+ BE e2e tests** — every API route covered with L4 endpoint tests\n- **20+ FE Playwright specs** — chat routing, scope placement, settings, draft persistence\n- **6 scope unit tests** — proven to catch the `:` vs `::` key drift regression\n- **Route inventory** — `route_inventory.rs` + `coverage.txt` enforced; missing routes fail CI\n- **3 CI badges** — CI, Release, Nightly all green\n- **Cross-platform nightly** — ubuntu + macOS + Windows matrix\n- **Auto-release** — every merge to main bumps version + builds 4-platform binaries + GitHub Release\n\n### Open Source\n- **MIT licensed**\n- **Contributing guide** — TDD policy, unit + integration tests mandatory, PR template\n- **Code of Conduct** — Contributor Covenant\n- **Security policy** — responsible disclosure channel\n- **ADRs** — 7 architecture decision records documenting key choices\n- **Comparison doc** — detailed matrix vs Cursor, Conductor, Windsurf, aider, and 10+ others\n\n## Quick Start\n\n```sh\n# Prerequisites: rustup (1.95+), node (20+), pnpm (10+)\ngit clone https://github.com/arnabk/agentgrove.git\ncd agentgrove\njust dev    # starts BE (hot reload) + FE (HMR) on http://localhost:5173\n```\n\n## Documentation\n\nAll detailed docs live under [`docs/`](./docs/):\n\n- [Architecture](./docs/architecture/overview.md)\n- [Contributing](./docs/CONTRIBUTING.md)\n- [Local dev guide](./docs/guides/local-dev.md)\n- [Agent providers](./docs/guides/agent-providers.md)\n- [Chat \u0026 queue routing](./docs/architecture/chat-queue-routing.md)\n- [Data safety \u0026 restore](./docs/operations/data-safety.md)\n- [Comparison with other tools](./docs/comparison.md)\n- [ADRs](./docs/adr/)\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnabk%2Fagentgrove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farnabk%2Fagentgrove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnabk%2Fagentgrove/lists"}