Keep the useful bits. Find the right context. Connect what matters. All through tools your agent can use.
Find the meaning. Not just the keywords.
Ask about “the billing database” and find the decision about PostgreSQL. Semantic search retrieves related memories, with optional reranking for a sharper match.
Why did we choose this database?↵
RELATED MEMORY#architecture
PostgreSQL gives our billing service the reliable transactions it needs.
Good context connects the dots.
Build a knowledge graph of entities, observations, and relationships. Give your agent a way to explore how your projects, services, and decisions fit together.
My app
part of
Billing API
uses
PostgreSQL
Your context. Your infrastructure.
Self-host Grove and Qdrant on your own infrastructure. Local ONNX embeddings are the default. No hosted memory subscription standing between you and your work.
Self-hostedLocal embeddingsMIT licensed
Manage the lifecycle. Keep the signal.
Organize by project, session, and tags. Set importance, update what changes, and prune what no longer helps. Keep your memory store relevant as your codebase evolves.
Keep what matters
21 MCP tools. Memory, entities, and relationships. Ready for your agent.
Start Grove and its Qdrant store. Docker Compose brings them up together; npm fits an existing setup.
macOS, Linux, or Windows with Docker
Docker setup
git clone https://github.com/miniaxolotl/grove.git
cd grove
cp .env.example .env
docker compose up -d
Requires Git and Docker with Compose. Builds Grove and starts Qdrant with persistent storage. The first run downloads the local embedding model.
npm setup
# Start a persistent local Qdrant instance
docker run -d --name grove-qdrant \
-p 127.0.0.1:6333:6333 \
-v grove-qdrant:/qdrant/storage \
qdrant/qdrant:latest
npm install -g @miniaxolotl/grove
grove serve
Requires Node.js 22+. The first command starts Qdrant with Docker; skip it if Qdrant is already running. Set QDRANT_URL if your instance is not at localhost:6333.
Check that Grove is ready
Readiness check
curl --fail http://localhost:26081/ready
Wait for initialization to finish. The readiness endpoint returns HTTP 200 when the collections are ready.
02
Make the connection.
Give your agent access to Grove’s MCP tools. Use the OpenCode configuration, or connect your preferred MCP client.
Merge these entries into your existing configuration, then restart OpenCode. The companion plugin adds manual saves, error capture, and memory lifecycle hooks. Set GROVE_PROJECT in OpenCode’s environment to group plugin memories by project.
Streamable HTTP endpoint
http://localhost:26080/mcp
Add a remote MCP server named grove with this URL and the Streamable HTTP transport. Configuration fields vary by client. Replace localhost with your server’s address if Grove runs elsewhere.
Prefer stdio? Install the npm package and configure your client to launch grove without arguments, with QDRANT_URL set to your Qdrant instance.
Plant your first memory.
Ask your agent to save something worth keeping. Open a new session, search for it, and pick up the thread.
Ask your agent to remember
Use Grove to remember: "We use PostgreSQL for billing because we need transactions." Save it under the project "my-app".
Then, in a new session
Ask your agent to recall
Search Grove for "billing database" in project "my-app". What did we decide, and why?
Grove makes memory available through tools. Ask your agent to use them, or add saving and recall instructions to your agent’s workflow.
No Grove account or memory subscription. Run the server and storage on infrastructure you control.
Grove is a persistent memory layer for AI agents, delivered as a Model Context Protocol (MCP) server. Your agent can save useful information, search it by meaning, and connect entities in a knowledge graph. Memories live in Qdrant, so they can outlast a single chat or context window.
Which agents can use it?
Grove exposes MCP tools over HTTP or stdio, so you can connect a client that supports either transport. OpenCode has a ready-to-copy configuration and an optional companion plugin for manual saves, error capture, staleness checks, and memory compaction. Other clients may use different configuration formats.
Does it remember everything automatically?
Your agent saves and retrieves memories by calling Grove’s tools. Ask it to remember a decision or search previous context, or add memory instructions to your agent’s workflow. The OpenCode plugin adds error capture and lifecycle hooks; it does not record every conversation or automatically inject all your memories.
Where does my data go?
Memories are stored in the Qdrant instance you configure. By default, Grove runs embeddings locally with ONNX; the first run downloads the embedding model. Remote embedding and reranking services are optional. Your AI client still follows its own model and data settings.
Is Grove free?
Grove is open source under the MIT license. There is no Grove subscription or per-memory fee. You provide the compute and storage, and any optional external services have their own costs.
What do I need to get started?
Use Docker with Compose and Git for the all-in-one setup. For npm, you need Node.js 22 or newer and a running Qdrant instance. Then connect an MCP-compatible agent. The installation guide includes the commands, client configuration, and a first-memory example.
Can I organize or remove memories?
Yes. Tag memories, attach a project or session, and set an importance score. Search can filter by project and tags. Use the memory tools to update or forget individual memories, compact low-importance entries, or prune by threshold. Project tags are organizational filters, not access-control boundaries.
BUILT FOR DEVELOPERS. BY BRAMBLE LABS INC.
Keep the context. Keep building.
Give your next session the decisions, preferences, and fixes you already worked out.