Bramble Labs Inc. Meet Burrow
grove.

GROVE / AGENT MEMORY

New session.
Same context.

Persistent memory for the agents you build with. Save decisions, search by meaning, and connect project knowledge through one self-hosted MCP server.

Your stack. Your data. Context that survives the session.

$npm i -g @miniaxolotl/grove
Free & open source Your infrastructure Your memory
Your agent Persistent context
grove / MCPEXAMPLE

SESSION 01 · SAVE A DECISION

memory_save

{ "information": "Use Postgres for billing: we need ACID transactions.", "metadata": { "project": "billing-api" } }

Stored in Qdrant

SESSION 02 · RECALL THE CONTEXT

memory_search

{ "query": "Why this database?", "project": "billing-api" }

RELATED MEMORY

Use Postgres for billing: we need ACID transactions.

Illustrative tool calls · your agent decides what to save and recall

BUILT FOR YOUR STACK

MCP

HTTP & stdio transport

Qdrant

Persistent vector storage

ONNX

Local embeddings by default

OpenCode

Optional agent plugin

SOUND FAMILIAR?

You already explained this.
Let’s keep it that way.

The architecture decision. The coding convention. The bug that took all afternoon. Give your agent something to come back to.

Interactive example
01 / A PREVIOUS SESSION
Saved to Grove

“Use PostgreSQL for billing. We need reliable transactions, and the team already knows it.”

project: my-app#architecture

The chat ends. The memory stays.

02 / A FRESH START
You

Let’s build the billing service. Which database are we using?

memory_search “billing database”
Your agent, with context

PostgreSQL. You chose it for reliable transactions and the team’s familiarity. Let’s build on that decision.

Illustrative workflow, not a live agent. Your agent uses Grove’s tools to save and retrieve context.

Make it your workflow

THE MEMORY TOOLKIT

Useful context.
Ready to retrieve.

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.

Explore the tool reference

SIMPLE ARCHITECTURE

Your agent calls the tools.
Grove keeps the context.

A focused MCP server between your agent and a persistent store. Explicit tool calls. Local embeddings. Durable storage.

Your AI agentOpenCode or an MCP client
MCP TOOLS
GroveSemantic memory + knowledge graph
PERSISTENT STORAGE
QdrantOn infrastructure you control
01

Save the useful things.

Your agent calls memory_save or memory_note to store a decision, a preference, or a finding. Add a project and tags to keep it organized.

02

Store and connect.

Grove embeds the text and stores it in Qdrant. Create entities and relationships when you want to connect the bigger picture.

03

Pick up where you left off.

In a later session, your agent searches by meaning and uses the relevant memories as context. Less repetition. More forward motion.

Local embeddings by default. Remote embeddings and reranking when you want them.

QUICKSTART

Add memory
to your stack.

Start Grove and Qdrant, connect your MCP client, and save your first project decision.

Open the installation guide
  1. 01

    Give your memories a home.

    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.

    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.

  2. 02

    Make the connection.

    Give your agent access to Grove’s MCP tools. Use the OpenCode configuration, or connect your preferred MCP client.

    Client configuration reference
    opencode.json
    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@miniaxolotl/grove-opencode-plugin"],
      "mcp": {
        "grove": {
          "type": "remote",
          "url": "http://localhost:26080/mcp"
        }
      }
    }

    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.

  3. 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.

Deployment reference

A FEW GOOD QUESTIONS

Curious?
Dig a little deeper.

Everything you need to know before giving your agent a longer memory.

Ask a question on GitHub
What exactly is Grove?

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.

Install Grove Explore on GitHub OPEN SOURCE · SELF-HOSTED · MIT LICENSED