About gather
Gather is a multi-tenant memory service for AI coding agents, with an MCP server, REST API, and client integrations including a Claude Code plugin and CLI. Its curated write path stages candidates for review before they become recallable facts, with bi-temporal records and verifiable tenant-isolation attestations.
Key features
- 01Automatic recall and context reinjection
- 02Staged candidate capture and curated promotion
- 03Bi-temporal, attributable facts
- 04Tenant isolation with verifiable attestations
- 05Claude Code plugin and CLI integrations
Use cases
- 01Restore relevant memory at the start of agent turns
- 02Preserve session learnings for later review
- 03Promote reviewed candidates into shared memory
- 04Verify tenant-isolation attestations offline
MCP support
Exposes a remote memory service through MCP, with recall and curated memory operations for clients. The repository also includes MCP client integrations and a raw server configuration example.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.hunta.ai/mcpclaude mcp add --transport http hunta-ai-gather https://mcp.hunta.ai/mcp{"mcpServers":{"hunta-ai-gather":{"type":"http","url":"https://mcp.hunta.ai/mcp"}}}Open in Cursor{"servers":{"hunta-ai-gather":{"type":"http","url":"https://mcp.hunta.ai/mcp"}}}Open in VS Code{"mcpServers":{"hunta-ai-gather":{"type":"http","url":"https://mcp.hunta.ai/mcp"}}}{"mcpServers":{"hunta-ai-gather":{"serverUrl":"https://mcp.hunta.ai/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEGather
Deterministic, attestable memory for AI coding agents.
This repo is the open integration surface for Gather, a multi-tenant org-memory service (an MCP server plus a REST API) with server-enforced tenant isolation and attestable, curated writes. The memory engine is a hosted service; this repo holds the client integrations (starting with the Claude Code plugin) so your harnesses use that memory automatically, instead of hoping the model remembers to.
What's here
| Path | What |
|---|---|
integrations/claude-code | The gather plugin: hooks + bundled MCP server + curation skills |
cli/ | The hunta CLI: gather, recall, verify, instinct (and the SDK-seed client) |
verify/ | @hunta/verify: offline Ed25519 verification of isolation-attestation receipts (verify, don't trust) |
examples/ | Drop-in config (raw mcpServers block for any MCP client) |
docs/ | Plugin reference: data flow, staging model, cost, metrics, troubleshooting |
More integrations (Codex, Agent SDK) land here over time.
Quickstart (Claude Code)
Two lines, then a token:
/plugin marketplace add hunta-ai/gather
/plugin install gather@hunta
Mint an agent key in the console (scoped to propose + recall, never to write canon), then point the plugin at your tenant:
export GATHER_URL=https://mcp.hunta.ai # or your own deployment on Estate (self-host)
export GATHER_TOKEN=<your-agent-key>
Recall and capture are live on your next session. Full walkthrough: hunta.ai/get-started.
Using another client (raw MCP)
Not on Claude Code, or prefer raw MCP? Point any MCP client at the server directly
(see examples/mcp-config.json):
{
"mcpServers": {
"gather": {
"url": "https://mcp.hunta.ai/mcp",
"headers": { "Authorization": "Bearer <your-agent-key>" }
}
}
}
What the plugin does
- Auto-recall on every prompt. A
UserPromptSubmithook queries your memory and injects the top facts into the turn, so the agent starts with what it already knows. - Re-inject after compaction. A
SessionStart(compact)hook re-runs recall so injected context survives Claude Code's context resets. - Loss-proof capture.
PreCompactandSessionEndhooks post a content-free breadcrumb to your staging inbox. The transcript is never uploaded. - Curation skills.
/gather:flushreviews pending candidates;/gather:statusshows local recall hit-rate and latency.
The principle is harness-enforced invocation: tool availability is not tool use. Agents do not reliably recall context or write learnings back on their own, so the hooks make it happen by construction, on every turn, without depending on the model's judgement.
How memory works
Gather's differentiator is the write path: the writer never decides.
- Capture lands candidates in a staging inbox. Candidates are invisible to recall.
- Promotion runs the curated-write pipeline (extraction, dedup, bi-temporal supersession, provenance stamping). This is the only path into canon, and it is a human (or policy) decision.
- Recall returns only sealed, attributable facts. An injected agent can propose noise; it can never seal a fact.
Always-on capture means you never lose a learning to a closed session; the staging wall means an unreviewed breadcrumb can never pollute the memory your agents read. Read more: the curation gate.
Fail-open by construction
A slow or unreachable memory server never blocks or degrades a turn.
- 8-second hook timeout.
- Every error path (timeout, 4xx/5xx, missing token, network failure) exits
0with no output: inject nothing, continue. - Automatic capture only ever adds candidates to staging, so canon is never touched on any error path.
Worst case for a down server is a turn with no injected context, never a stalled turn.
Privacy
Everything goes only to the GATHER_URL you configure. Recall sends the prompt text as a search
query; capture sends a breadcrumb (event, cwd, session id, timestamp) and never the transcript.
On the hosted service that endpoint is mcp.hunta.ai; on Estate it is your own deployment and nothing
leaves your infrastructure. Full data-flow table: docs/plugin.md.
Why Gather
| Gather | Typical memory API | |
|---|---|---|
| Write path | Curated: proposals reviewed before they enter canon | Direct writes |
| Isolation | Per-tenant crypto + RLS, with a signed proof you can run yourself | Claimed |
| Time | Bi-temporal (what was true, and when you learned it) | Last-write-wins |
Honest comparisons, including where we're behind: hunta.ai/compare.
Community & support
- Issues and feature requests: GitHub Issues
- Security reports: see SECURITY.md
- Questions: [email protected]
Contributing
Integrations and fixes welcome. See CONTRIBUTING.md and our Code of Conduct.
License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.