
Waggle gives Claude and other MCP clients a persistent graph memory that survives context windows. It stores decisions, their reasons, and contradictions as typed nodes and edges in SQLite or Neo4j, then retrieves relevant subgraphs on demand. You get three core tools: query_graph for retrieval, observe_conversation to persist turns, and prime_context to hydrate sessions. Setup is one command (waggle-mcp setup --yes) that auto-configures Claude Code, Cursor, and others. Includes local sentence-transformers embeddings with a deterministic fallback, so no API keys required. Ships with Graph Studio for inspection and a demo mode that runs sample queries against a preloaded graph. Built for agents that need to remember what they decided three sessions ago and why.
Public tool metadata for what this MCP can expose to an agent.
searchFind A2A agents by capability or use case using semantic search.10 paramsFind A2A agents by capability or use case using semantic search.
autharraycapabilitiesarrayhealthy_onlybooleaninput_modesarraylimitintegeroffsetintegeroutput_modesarrayproviderstringquerystringverified_onlybooleaninvokeSend a message to an A2A agent directly (pass-through proxy). Provide either url_hash (from search) or agent_url (direct URL).7 paramsSend a message to an A2A agent directly (pass-through proxy). Provide either url_hash (from search) or agent_url (direct URL).
agent_urlstringcontext_idstringconversation_idstringmessagestringprotocol_versionstringtask_idstringurl_hashstringpollCheck the status of an async A2A task.5 paramsCheck the status of an async A2A task.
agent_urlstringcontext_idstringconversation_idstringprotocol_versionstringtask_idstringinfoGet full details about a specific agent — skills, health, ratings, and capabilities.1 paramsGet full details about a specific agent — skills, health, ratings, and capabilities.
url_hashstringregisterSubmit a new A2A agent URL for indexing in Waggle.1 paramsSubmit a new A2A agent URL for indexing in Waggle.
urlstringcheck_usageView your current API quota, daily usage, and rate limit status.View your current API quota, daily usage, and rate limit status.
No parameter schema in public metadata yet.
rate_transactionRate an agent interaction to improve ranking quality.6 paramsRate an agent interaction to improve ranking quality.
conversation_idstringnotesstringqualityintegerrating_idstringsuccessbooleanurl_hashstring
Project memory for humans and AI agents.
Keep decisions, context, and the reasons behind them across conversations.
Install Waggle · Try the browser workspace · Documentation
Waggle is an open-source, local-first memory layer for AI agents. It stores project knowledge as a graph: what you decided, why it matters, what it depends on, and what has changed. Your next conversation can pick up from that context instead of starting over.
Use Waggle with your MCP client, inspect and edit memory in Graph Studio, or bring a portable memory graph into the browser workspace.
.abhi files across supported
workflows without tying your graph to one client.The Python package requires Python 3.11+ and pipx. On macOS, you can install
pipx with brew install pipx; see the installation guide
for client-specific options.
pipx install waggle-mcp
pipx ensurepath
Restart your terminal after the first pipx ensurepath, then run:
waggle-mcp setup --yes
waggle-mcp doctor
Restart your MCP client to load Waggle. Setup detects supported clients and writes their configuration; automatic memory behavior uses the client's installed hooks, skills, or project instructions.
To check continuity, ask your agent to remember a project decision, then open a fresh session in the same project and ask what was decided. Keep the same project identifier across sessions.
| Client | Setup guide |
|---|---|
| Codex | Install the Waggle plugin or configure the MCP server |
| Claude Code | MCP server and automatic memory hooks |
| Claude Desktop | Desktop extension and manual configuration |
| VS Code | Waggle extension and workspace setup |
| Cursor | Connect the local MCP server |
| Antigravity | Client configuration |
| Other MCP clients | Standard MCP configuration |
| ChatGPT with Site tools | Use the browser workspace |
For clients that accept an mcpServers configuration:
{
"mcpServers": {
"waggle": {
"command": "waggle-mcp",
"args": ["serve", "--transport", "stdio"]
}
}
}
If the command is not found, run pipx ensurepath and reopen your terminal.
Use the troubleshooting guide for installation,
startup, and client connection issues.
Waggle separates durable project knowledge from the model's context window. An agent retrieves relevant memory when needed and records meaningful outcomes for later conversations.
The core MCP workflow uses prime_context to load project context,
query_graph to retrieve relevant history, and observe_conversation to
record durable outcomes. build_context assembles a compact context pack for
a specific task. Tool availability alone does not make an agent use memory
automatically; its hooks, skills, or instructions must call these tools.
See the tool reference and configuration reference for the full API and retrieval settings.
Graph Studio makes project memory inspectable and editable. Browse nodes and relationships, add or remove graph content, inspect source evidence, and review how a memory changed over time.
The browser workspace provides focused views for project context, memories, proposals, and activity. Graph Studio provides the graph-level view of that server-backed memory; private browser imports remain in the workspace tab.
The Waggle workspace lets a human and a
compatible browser agent work with the same project memory. Its WebMCP adapter
registers page-level Site tools through document.modelContext.registerTool.
This is separate from installing Waggle's MCP server or configuring a remote
MCP connector.
project_id: waggle-webmcp, including after importing your own graph.For example:
Call Waggle's get_project_brief with project_id "waggle-webmcp".
Use the returned memories to catch me up on this project.
If Site tools are unavailable, check the browser's permissions and configuration. If the browser blocks an apply call, you can use Apply approved change on the approved proposal and confirm the action yourself. This uses the same approval and freshness checks; it does not bypass browser safeguards.
| Tool | What it does |
|---|---|
get_project_brief | Returns the project's goal, current decisions, constraints, state, and open questions. |
recall_memory | Finds current authoritative memories for a query, with supersession provenance when available. |
propose_memory_change | Creates a pending correction for human review without changing authoritative memory. |
apply_approved_memory_change | Applies the exact approved value using only a proposal ID. |
load_abhi_for_session | Loads a portable graph into this browser tab and returns a brief. |
flowchart LR
A[Agent proposes a correction] --> B[Human reviews and approves]
B --> C[Waggle checks approval and target version]
C --> D[Approved value becomes authoritative]
D --> E[Previous memory stays in history]
Approved content cannot be changed by the applying agent. If the target memory
has changed since the proposal was created, the proposal is marked stale
instead of overwriting newer information. Application preserves the previous
memory and links it to the replacement with an updates edge.
These approval rules govern the WebMCP correction workflow. They are not a claim that every direct graph-editing or local MCP operation requires approval.
A .abhi file is Waggle's portable memory graph. The browser importer reads
existing memories; it does not ingest a source repository to invent a project
brief.
The import replaces this tab's active workspace; it does not merge with the sample graph, modify your original file, or affect another visitor.
You can also attach the file to a compatible chat and ask:
Use Waggle's load_abhi_for_session tool to load this .abhi file into
project "waggle-webmcp" for this session. Then call get_project_brief.
The agent must be able to read the attachment and provide its bytes as base64. The tool does not accept a local file path or download URL. Use the page's file picker if the chat cannot access the attachment.
See the portable memory format for archive structure and supported operations.
| Where you use Waggle | Where memory lives |
|---|---|
| Local MCP server | SQLite on your machine, at ~/.waggle/waggle.db by default. |
| Private browser import | This tab's sessionStorage; the importer does not upload the graph to Waggle's backend. |
| Hosted sample workspace | An isolated, temporary server-side sample project; not an account-based cloud backup. |
| Self-hosted remote MCP server | Your configured Neo4j backend and infrastructure. |
Browser lifetime. Private imports survive page reloads, and browser session restoration can preserve them. Use the workspace's Reset Demo control to explicitly clear the private copy and return to the sample project. Closing a chat conversation alone is not a guaranteed deletion signal. Browser storage is not encrypted by the importer.
AI services. Attaching a file in chat shares it with that chat provider. Memory returned through tool calls is also shared with the requesting AI service. Local storage does not mean that model inputs stay on your device.
Hosted preview. The public workspace is for trying the browser experience,
not durable production storage. Its free hosting can pause when idle, take time
to wake, and lose sample state on restart or redeployment. Opening it does not
connect to your local Waggle database. The included SQLite preview configuration
stores disposable state under /tmp, caps admission at 128 sessions per database,
and rejects new sessions at capacity without evicting existing ones.
Self-hosting. The browser preview's governance backend currently requires SQLite. Remote MCP hosting with Neo4j is a separate configuration, not a drop-in replacement for that browser workflow. For remote deployment, configure HTTPS, authentication, persistent storage, and backups. Read the production deployment guide, security model, and hardening checklist before exposing a server publicly.
Waggle uses Python for the memory engine and MCP server, and React/Vite for Graph Studio and the browser workspace.
git clone https://github.com/Abhigyan-Shekhar/Waggle-mcp.git
cd Waggle-mcp
python -m venv .venv
source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
WAGGLE_MODEL=deterministic pytest -q
ruff check src/ tests/
ruff format --check src/ tests/
On PowerShell, set $env:WAGGLE_MODEL="deterministic" before running pytest -q.
Deterministic embeddings keep tests offline; use the normal embedding model
when evaluating semantic retrieval.
For frontend changes:
npm ci --prefix apps/mcp/graph-ui
npm run test:unit --prefix apps/mcp/graph-ui
npm run build --prefix apps/mcp/graph-ui
Waggle is open source under the Apache License 2.0.
WAGGLE_TRANSPORTdefault: stdioTransport mode for the MCP server.
WAGGLE_BACKENDdefault: sqliteBackend database type: sqlite for local use or neo4j for service deployments.
WAGGLE_DB_PATHdefault: ~/.waggle/memory.dbPath to the SQLite memory database when WAGGLE_BACKEND is sqlite.
WAGGLE_DEFAULT_TENANT_IDdefault: local-defaultDefault tenant ID for local or shared memory isolation.
WAGGLE_MODELdefault: all-MiniLM-L6-v2Sentence-transformers model used for local embeddings.