Skip to content
/

grov

grov · TonyStef/Grov · ★ 192 · last commit 2026-01-29

Primitive shape 1 total
MCP tools 1
00

Summary

grov — Summary

Grov is collective AI memory for engineering teams: when one developer's AI agent figures something out, every team member's agent automatically knows it. It intercepts AI API calls via a local proxy (for Claude Code/Codex) or native MCP (for Cursor/Zed/Antigravity), extracts CONCLUSION/INSIGHT reasoning traces when tasks complete, syncs them to a cloud team dashboard, and injects relevant memories into future sessions via hybrid semantic+lexical search. Beyond memory, Grov adds anti-drift detection (monitors agent actions vs stated intent and injects corrections), extended Anthropic prompt-cache warming, and auto-compaction with goal preservation. At 192 GitHub stars (Apache-2.0), it occupies a unique position as the only AI agent memory system explicitly designed for team sharing rather than individual persistence.

differs_from_seeds: Closest to ccmemory (memory-focused, cross-session injection, team awareness) but operates through a transparent proxy rather than an MCP server, targets teams rather than individuals, and stores memories in a cloud Supabase backend rather than a local Neo4j graph. Unlike ccmemory's typed graph nodes (Decision, Correction, Insight), Grov extracts untyped reasoning traces (CONCLUSION/INSIGHT pairs). The anti-drift detection and prompt-cache-warming features have no equivalent in any seed.

01

Overview

grov — Overview

Origin

Created by Tony Stef ("TonyStef"). Apache-2.0 licensed, actively developed as of January 2026. Free for individuals and teams up to 3 developers; team sync requires login via GitHub (grov login).

Philosophy

"When one dev's AI figures something out, every dev's AI knows it."

"Measured impact: Tasks drop from 10+ minutes to 1-2 minutes when team context is available."

The core problem Grov solves: AI agents learn the same things repeatedly. Dev A's Claude spends 10 minutes understanding the auth system. Dev B's Claude does the same exploration next day. Dev C asks a question answered last week. Every session starts from zero. Grov captures the reasoning (the WHY behind decisions), not just the facts, and makes it available team-wide.

"Your team's AI agents are learning in silos."

The secondary philosophy is that agent drift is a real problem:

"Grov monitors what Claude does (not what you ask) and corrects when it goes off-track."

Anti-Drift Vision

The anti-drift feature extracts intent from the first prompt, monitors subsequent tool calls, scores alignment 1-10 via Claude Haiku, and injects corrections at 4 levels: nudge → correct → intervene → halt. This is a novel safety primitive not present in any other memory framework.

Extended Cache Vision

"Anthropic's prompt cache expires after 5 minutes of inactivity. Grov keeps it warm."

The --extended-cache flag sends minimal keep-alive API requests during idle periods (~$0.002 each) to prevent cache recreation. This is an opt-in behavior that requires explicit consent.

02

Architecture

grov — Architecture

Distribution

npm package (npm install -g grov). TypeScript monorepo (Turborepo) with Vitest tests.

Two Integration Modes

Mode 1: Proxy (Claude Code, Codex)

  • grov proxy runs a local HTTP proxy that intercepts Anthropic API calls
  • Claude Code uses the proxy via ANTHROPIC_BASE_URL environment variable
  • Proxy captures full conversation, extracts memories on task completion, injects context at session start

Mode 2: Native MCP (Cursor, Zed, Antigravity)

  • grov init cursor / grov init antigravity configures native MCP server
  • No proxy needed; memories delivered via MCP tools
  • Configured via .cursor/mcp.json or equivalent

Directory Layout

grov/
├── src/
│   ├── cli/            # CLI entry point (commander.js)
│   │   └── commands/   # init, proxy, status, sync, login, etc.
│   ├── core/
│   │   ├── extraction/ # CONCLUSION/INSIGHT reasoning extractor
│   │   ├── store/      # SQLite local storage (better-sqlite3)
│   │   └── cloud/      # Supabase team sync
│   ├── integrations/   # IDE-specific adapters
│   └── utils/
├── dashboard/          # Next.js + React 19 + Supabase web dashboard
│   └── (app.grov.dev)  # Cloud dashboard at app.grov.dev
├── api/                # Backend API (Supabase edge functions)
└── landing/            # Marketing site (grov.dev)

Storage

  • Local: SQLite (via better-sqlite3) stores tasks and memories before cloud sync
  • Cloud: Supabase (PostgreSQL) for team memory sharing, hybrid search (semantic + lexical)
  • Sync: grov sync --enable --team <ID> enables real-time team sync

Required Runtime

  • Node.js
  • npm (global install)
  • ANTHROPIC_API_KEY in shell profile (not just export)
  • Optional: Supabase account for team sync

Target Tools

Primary: Claude Code (proxy mode). Also: Cursor, Zed, Codex, Antigravity (native MCP).

03

Components

grov — Components

CLI Binary: grov

Command Purpose
grov init Configure for Claude Code (proxy mode)
grov init cursor Configure for Cursor CLI
grov init antigravity Configure for Antigravity
grov setup Interactive setup wizard (Cursor, Zed, Codex)
grov proxy Start local Anthropic API proxy
grov proxy --extended-cache Start proxy with cache-warming enabled
grov proxy-status Show active proxy sessions
grov status Show captured tasks and memory count
grov login Authenticate via GitHub for team sync
grov sync Sync memories to team dashboard
grov sync --enable --team <ID> Enable real-time team sync
grov doctor Diagnose setup issues
grov disable Disable grov proxy/MCP
grov uninstall Remove all grov data and config
grov drift-test Test anti-drift detection

Core Systems

System Purpose
Reasoning Extractor Extracts CONCLUSION/INSIGHT pairs from completed task conversations
Anti-Drift Detector Monitors agent actions vs intent; scores alignment 1-10 via Claude Haiku
Memory Injection Injects relevant memories at session start via hybrid search
Auto-Compaction Pre-computes summary at 85% context capacity; preserves goal+decisions
Cache Warmer Sends keep-alive requests to maintain Anthropic prompt cache during idle
Team Sync Real-time Supabase sync of memories across team members

Web Dashboard (app.grov.dev)

Next.js + React 19 + Supabase hosted dashboard showing:

  • Captured reasoning traces
  • Team memory with semantic search
  • Task history with files-touched
  • Architectural decisions + constraints discovered
05

Prompts

grov — Prompts

Note

Grov is primarily a TypeScript proxy/MCP system. Most of its "prompts" are system-level injections constructed programmatically. No SKILL.md or markdown prompt files were found in the repository. The following are from the README documentation.

Excerpt 1: Memory Injection Pattern (from README)

Prompting technique: Context injection before task, asserting verified team knowledge to skip exploration

Dev B: "Should we add password salting?"

[Grov injects:]
"Based on verified team knowledge, no — this codebase uses OAuth-only, no passwords stored"

[Result:]
No exploration needed. Instant expert answer.

Excerpt 2: Anti-Drift Detection (from README)

Prompting technique: Intent-action alignment scoring with hierarchical correction prompts

grov drift-test "refactor the auth system" --goal "fix login bug"

[Output:]
Intent: fix login bug
Current action: refactoring auth system (unrelated)
Alignment score: 2/10

[Intervention level: CORRECT]
"You're currently refactoring the auth system but the stated goal was to fix 
the login bug. Please stop the refactoring and focus on the login bug fix."

Excerpt 3: Memory Capture Format (from README)

Prompting technique: Structured extraction of architectural reasoning

Every captured memory includes:
- Reasoning trace — The WHY behind decisions (CONCLUSION/INSIGHT pairs)
- Key decisions — What was chosen and why alternatives were rejected
- Files touched — Which parts of the codebase are relevant
- Constraints discovered — What can't break, what must stay compatible
09

Uniqueness

grov — Uniqueness

differs_from_seeds

Closest seed: ccmemory (persistent cross-session memory, MCP-bridged, global scope). Grov differs in: (1) cloud-first team sharing vs ccmemory's local-first individual storage; (2) transparent proxy integration rather than explicit MCP tools; (3) unstructured CONCLUSION/INSIGHT traces vs ccmemory's typed graph nodes with relationship edges; (4) anti-drift detection (novel — not in any seed) and prompt-cache warming (also novel). The proxy architecture makes Grov invisible to the agent — no tool calls needed, no hook configuration required.

Key Innovations

  1. Team memory sharing — the only memory system in the corpus explicitly designed for team-wide knowledge sharing across developers
  2. Anti-drift detection — monitors agent actions vs stated goal, scores alignment 1-10 via Haiku, injects corrections at 4 severity levels
  3. Prompt cache warming — keeps Anthropic's 5-minute prompt cache alive during idle periods via opt-in keep-alive requests
  4. Transparent proxy — no code changes, no hooks, no skill installation; just set ANTHROPIC_BASE_URL
  5. Auto-compaction with goal preservation — pre-computes summary at 85% capacity, preserves goal+decisions, drops verbose exploration

Observable Failure Modes

  1. Proxy dependency — ANTHROPIC_API_KEY must be set in shell profile (not just export), or proxy can't intercept calls
  2. Cloud dependency — team sync requires Supabase account and internet connectivity
  3. Privacy/security — reasoning traces containing sensitive code patterns are sent to Supabase cloud; enterprise users may have compliance concerns
  4. Cache-warming cost--extended-cache sends API requests on behalf of user; requires explicit opt-in consent per README
  5. Alignment scoring cost — anti-drift uses Claude Haiku per agent turn; adds latency and cost to every action

Competitive Positioning

Grov is the only framework explicitly targeting the "team knowledge silo" problem. Most memory frameworks (ccmemory, planning-with-files, Continuous Claude) are individual-developer tools. Grov's closest conceptual competitor is Microsoft Copilot Work's enterprise RAG — the only competitor named in ccmemory's README.

04

Workflow

grov — Workflow

Phases

Phase Trigger Artifact
1. Setup grov init ANTHROPIC_BASE_URL set to proxy
2. Proxy Start grov proxy Transparent Anthropic API proxy running
3. Session Start New Claude Code session Hybrid-search retrieves relevant team memories; injected as context
4. Active Work Each API call via proxy Proxy records conversation; drift detection monitors action alignment
5. Task Completion Agent stops working Reasoning extractor identifies CONCLUSION/INSIGHT pairs
6. Memory Storage Post-completion Memories stored locally in SQLite
7. Team Sync grov sync or auto Memories uploaded to Supabase for team access
8. Next Developer New session Their agent receives relevant memories extracted by Dev A

Approval Gates

None — fully automatic memory capture and injection.

Anti-Drift Loop

Session Start → extract goal from first prompt
    → monitor each tool call (file edits, commands, explorations)
    → score alignment 1-10 via Claude Haiku
    → if score < threshold: inject correction
        Level 1 (nudge): "You're exploring X but goal was Y"
        Level 2 (correct): "Stop X, refocus on Y"
        Level 3 (intervene): "You're off track, please confirm goal"
        Level 4 (halt): "Stopping until goal is confirmed"

Auto-Compaction Flow

Context reaches 85% capacity
    → Grov pre-computes summary
    → Preserves: original goal, key decisions with reasoning, current state, next steps
    → Drops: verbose exploration, redundant file reads, superseded reasoning
    → Claude continues seamlessly
06

Memory Context

grov — Memory & Context

Memory Model

Hybrid: SQLite local + Supabase cloud PostgreSQL. Two tiers:

Tier Storage Scope Purpose
Local SQLite (better-sqlite3) Individual developer Task cache before sync
Cloud Supabase PostgreSQL Team Shared memory accessible to all team members

Memory Types Captured

Unlike ccmemory's typed graph nodes, Grov extracts unstructured reasoning traces:

Type Description
Reasoning trace CONCLUSION/INSIGHT pairs from completed tasks
Key decisions What was chosen and why alternatives were rejected
Files touched Which parts of the codebase are relevant
Constraints What can't break, what must stay compatible

Persistence Scope

global (for team sync) — memories are shared across all developers on the team, keyed by repository/project context. Individual memories are also persisted locally.

Search Mechanism

Hybrid — semantic (vector/AI understands meaning) + lexical (keyword matching). The README describes this as the core retrieval mechanism for injecting relevant memories.

Context Injection

At each new session start, Grov queries the memory store for memories relevant to the current task/context, and injects them as system context before the conversation begins. This prevents redundant exploration.

Cross-Session Handoff

Yes, and cross-developer. This is Grov's primary value: memories captured by Dev A's session become available to Dev B's agent in their next session.

Auto-Compaction

At 85% context capacity, Grov pre-computes a summary that preserves:

  • Original goal
  • Key decisions with reasoning
  • Current state
  • Next steps

And drops: verbose exploration, redundant file reads, superseded reasoning. No manual /compact needed.

Comparison to ccmemory

Dimension Grov ccmemory
Graph type Unstructured traces Typed DAG (Decision, Correction, etc.)
Storage SQLite + cloud Supabase Local Neo4j + Docker
Scope Team-wide Individual + optional team (curated)
Relationships None (flat) CONTINUES, SUPERSEDES, CONFLICTS_WITH
Search Hybrid semantic+lexical Vector (cosine) + full-text
Setup npm install-g docker compose
07

Orchestration

grov — Orchestration

Multi-Agent: No

Grov is a memory and monitoring layer for individual agents. It does not orchestrate multiple agents. The "team" aspect is asynchronous memory sharing, not simultaneous agent coordination.

Orchestration Pattern: none

Execution Mode: background-daemon

grov proxy runs as a background proxy server that all Claude Code sessions route through. This is continuous daemon mode — not one-shot.

Anti-Drift as Implicit Orchestration

The anti-drift system is the closest thing to orchestration: an external monitor (Claude Haiku called by Grov) evaluates the primary agent's actions and injects corrections. This is a lightweight supervisor pattern, not full multi-agent.

Isolation: process

The proxy runs as a separate OS process. Sessions are isolated at the OS process level.

Multi-Model: Yes

The anti-drift detector specifically uses Claude Haiku for alignment scoring (cheap, fast). The primary agent uses whatever model the user configured. This is implicit multi-model routing.

Crash Recovery: unknown

If the proxy crashes, Claude Code falls back to direct Anthropic API calls (ANTHROPIC_BASE_URL variable would need to be unset/reset).

Context Compaction: Yes

Auto-compaction at 85% context capacity, with goal-preservation summarization.

08

Ui Cli Surface

grov — UI & CLI Surface

CLI Binary: grov

Full-featured CLI built with commander.js. 14 subcommands (see components). Binary registered as "grov": "dist/cli/index.js" in package.json.

Local Web Dashboard

Cloud dashboard at app.grov.dev (not local). Built with:

  • Next.js 16 + React 19
  • Supabase (auth + database)
  • @tanstack/react-query
  • Tailwind CSS + tailwind-merge
  • zustand for state management

Features visible in dashboard: captured reasoning traces, team memory browse/search, task history, architectural decisions.

Local UI

No local web dashboard — the dashboard is cloud-hosted at app.grov.dev. The local process is the proxy server only.

Proxy Mode Observability

grov proxy-status shows active sessions through the proxy. The proxy logs API calls and memory captures to local SQLite.

Diagnostic Tool

grov doctor diagnoses setup issues (proxy not running, API key not found, MCP config missing, etc.).

Anti-Drift CLI Test

grov drift-test "<action>" --goal "<goal>" lets users test the drift detection system with custom inputs before relying on it in production.

Related frameworks

same archetype · same primary tool · same memory type

MemPalace ★ 53k

Verbatim local-first AI memory with 96.6% R@5 retrieval on LongMemEval using zero API calls — structured into a palace hierarchy…

Beads (Yegge) ★ 24k

Dolt-powered distributed graph issue tracker where AI agents track tasks with hierarchical IDs and dependency edges, claim work…

deepagents (LangChain) ★ 23k

Opinionated Python agent harness on top of LangGraph with sub-agents, filesystem, memory, and context compaction bundled in

agentmemory ★ 18k

Persistent, searchable memory for AI coding agents that captures every tool interaction, compresses it via LLM, and injects…

Open Multi-Agent ★ 6.3k

Give a natural-language goal to a coordinator agent and get a dynamically decomposed, parallelized task DAG executed by…

Basic Memory ★ 3.1k

Gives AI agents a persistent, human-readable knowledge graph of project decisions, observations, and relations stored as plain…