The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Global Agent Memory listing page.
Local-first, project-aware, durable memory for Claude Code, Codex, and other MCP-compatible agents.
Global Agent Memory gives multiple coding agents one shared, reviewable memory without handing control of your knowledge base to a hosted service. Markdown files are canonical, a hybrid local MCP runtime is the public agent interface, and the dashboard lets a human approve, edit, protect, or remove what agents remember. Agent commands work without a background server. The authenticated localhost server starts on demand for the dashboard and can optionally run continuously for live file watching and shared embedding work.
One Vault. Multiple agents. Human-controlled memory.
Quick start · Obsidian Vault · Dashboard · How it works · Security · MCP contract · Documentation
Coding agents are useful inside a session, but important context is often lost between sessions or fragmented across individual clients. Global Agent Memory provides a durable layer for knowledge such as:
Agents propose memories as candidates. A human reviews them before they become durable, controls their visibility, and can later update, supersede, archive, or hard-delete them.
| Approach | Shared across agents | Human-reviewable | Project-aware | Owner-controlled access | Portable source of truth |
|---|---|---|---|---|---|
CLAUDE.md / AGENTS.md | Limited | ✓ | ✓ | — | ✓ |
| Basic memory MCP | ✓ | Varies | Varies | Varies | Varies |
| Hosted agent memory | ✓ | Varies | ✓ | Provider-defined | — |
| Global Agent Memory | ✓ | ✓ | ✓ | ✓ | Markdown |
Use project instruction files for compact rules that always belong in a prompt. Use Global Agent Memory when knowledge should be searchable, shared between clients, reviewed by a person, updated over time, or hidden behind explicit permission.
sqlite-vec add semantic ranking.127.0.0.1 and requires a generated bearer token stored outside the Vault.The opt-in performance suite creates 10,000 synthetic memories and exercises the same indexing and retrieval paths used by both runtime modes. On the recorded macOS ARM64 baseline, a full rebuild takes 36.5 seconds, warm keyword search P95 is 56 ms, warm hybrid search P95 is 76 ms, and incremental stdio proxy overhead is 1.5 ms. Results vary by machine; the changed-note, search, and proxy budgets run as regression gates. See the methodology and complete baseline.
Global Agent Memory is more than an MCP server. Agents, owners, and knowledge workers use the same canonical memories through three purpose-built surfaces:
| Surface | Designed for | What it provides |
|---|---|---|
| MCP | Claude Code, Codex, and other agents | Project-aware context, search, candidate creation, safe updates, lifecycle actions, and permission requests through a frozen V1 contract |
| Obsidian Vault | Reading, writing, linking, and long-term knowledge ownership | Portable Markdown and YAML, templates, native Bases views, project overview hubs, wikilinks, backlinks, graph navigation, and direct-edit synchronization |
| Local dashboard | Fast owner review and administration | Candidate approval and editing, conflict comparison, visibility classification, protected-access decisions, search, projects, activity, backups, and system health |
The Vault is the durable source of truth. The dashboard is a complementary control plane, and the MCP interface is the safe automation layer used by agents. You can use Obsidian, the dashboard, or both without creating separate copies of your memory.

Real dashboard UI with synthetic Atlas project data. No private Vault content is shown.
This is the shortest path to persistent memory for Claude Code, Codex, and other MCP clients. The guided installer creates the local service, Obsidian-compatible Vault, dashboard, MCP registrations, and agent skills together.
uvTo install the latest unreleased source, use
uv tool install git+https://github.com/ozankasikci/global-agent-memory.git. For a
local checkout, use uv tool install ..
Setup shows one plan and asks once before it changes anything. It initializes the local Vault, creates the protected token, detects Claude Code and Codex, installs their MCP integrations and skills, verifies healthy clients, and opens the dashboard. Opening the dashboard starts its authenticated localhost server on demand. The command is idempotent, so running it again repairs or updates managed components without replacing unrelated client configuration.
Use flags when you need a non-default setup:
Setup installs five basic shortcuts for each detected client:
| Shortcut | Purpose |
|---|---|
gam-context | Load project-aware context for a task |
gam-search | Find a decision, fact, error, convention, or solution |
gam-remember | Propose explicitly supplied durable knowledge as a candidate |
gam-review | Show the candidate queue without changing it |
gam-dashboard | Open the authenticated dashboard |
In Claude Code, invoke them directly, for example /gam-context fix the upload retry bug.
In Codex, type /skills and choose one, or mention it directly, for example
$gam-context fix the upload retry bug.
You can also ask a connected agent:
Open the Global Agent Memory dashboard.
The agent calls memory_dashboard_open and opens the same authenticated local
dashboard.
The individual commands remain available for advanced setups and troubleshooting:
After integration, you normally describe your intent instead of running memory commands manually.
Before you start, load the relevant memory for this project and summarize the conventions and recent decisions.
Remember that production ARM64 binaries must be built locally and uploaded to the server. Add it as a project convention with the deployment discussion as evidence.
The agent creates a candidate. Nothing becomes active until it is approved.
Find the deployment memory and update it with the new health-check command. Do not create a duplicate.
Open the memory dashboard so I can review the candidates.
The shared integration skill teaches supported agents when to retrieve, propose, update, and avoid duplicating memory.
The configured Obsidian Vault is the human-readable, durable source of truth—not an export of an opaque database. Every managed memory is a normal Markdown file with YAML properties, a stable memory ID, lifecycle metadata, and project-aware links.
Initialization adds an Obsidian workspace without replacing your existing files:
Obsidian is optional: the same Markdown remains readable and editable with any text editor. Lifecycle and access-policy changes should still go through the dashboard, MCP, or CLI so validation, optimistic concurrency, and audit records remain intact.
The authenticated dashboard is the owner control plane for:

Candidate review keeps evidence and conflicts visible before an owner approves durable memory.
Dashboard launch URLs expire after 60 seconds, can be exchanged only once, and create a local HttpOnly session. Do not share a launch URL.
| Level | Default agent behavior | Owner control |
|---|---|---|
| Standard | Included in ordinary scoped retrieval | Normal candidate and lifecycle review |
| Protected | Excluded from default results; an agent receives only a neutral relevance signal | Owner selects exact memories, permission, duration, policy, and eligible projects |
| Sealed | Body is not indexed or returned through agent tools | One owner-unlocked dashboard view; every access is audited |
Protected grants are scoped by purpose, project, agent, permission, exact memory IDs, and duration. Owners may downgrade a request but never elevate it. Agents may request and poll for access, but they cannot approve, deny, or revoke grants.
[!IMPORTANT]
Protected and Sealed memory are not secret managers. Never store passwords, credentials, private keys, API keys, or bearer tokens in Global Agent Memory.
The global-memory-mcp bridge prefers a healthy shared daemon and otherwise runs the
same MCP server and application services in-process. Both paths expose the same frozen
MCP V1 contract and use the same canonical Markdown and generated SQLite state. The
optional daemon owns real-time Vault watching, background embedding retries, HTTP MCP,
and dashboard sessions. Agent memory operations do not depend on its availability.
The dependency direction is:
Vault, SQLite, vectors, embeddings, Git, Watchdog, and client integrations are adapters. The domain layer does not depend on them.
The MCP interface is the only public AI-facing API. Clients do not read the Vault, SQLite database, vectors, token, or runtime logs directly.
The frozen V1 discovery snapshot currently contains 17 tools, 10 resources, and 6 prompts.
| Capability | MCP tools |
|---|---|
| Retrieval | memory_search, memory_context, memory_get, memory_status |
| Candidate and lifecycle | memory_remember, memory_update, memory_approve, memory_reject, memory_supersede, memory_archive |
| Navigation and operations | memory_open, memory_dashboard_open, memory_reindex, memory_projects, memory_tags |
| Protected access | memory_access_request, memory_access_status |
All mutations are replay-safe through request_id. Updates use optimistic concurrency,
and a stale version fails with VERSION_CONFLICT instead of silently overwriting newer
knowledge.
See MCP Contract V1 and the generated
contracts/mcp/v1/ schemas for the complete contract.
The CLI uses the same MCP path as connected agents. It prefers the optional daemon and otherwise invokes the frozen MCP contract through an in-memory transport. It never bypasses access control by reading Markdown or SQLite directly.
Run global-memory --help or global-memory <command> --help for the complete command
reference.
Global Agent Memory is designed as a local service, not a remotely exposed memory API.
127.0.0.1.Please report security issues according to SECURITY.md.
Clone the repository, then install Python and dashboard dependencies:
Run the standard quality gate:
The gate covers Ruff formatting and linting, strict MyPy, the TypeScript production build, unit/integration/contract/E2E tests, coverage, and deterministic MCP contract regeneration.
Useful focused commands:
When changing the MCP contract:
Contributions are welcome. Start with CONTRIBUTING.md, and keep changes compatible with the frozen V1 contract unless a parallel major contract is intentionally introduced.
good first issue
or help wanted
queues.| Guide | Purpose |
|---|---|
| Operations | Installation, daemon management, diagnostics, backup, restore, upgrades, and recovery |
| Claude Code | Managed skill and MCP registration for Claude Code |
| Codex | Managed skill and MCP registration for Codex |
| Hermes Agent | Manual stdio MCP registration and verified retrieval smoke test |
| Architecture | Dependency direction and hybrid runtime ownership model |
| Configuration | Platform-native locations, environment variables, and security defaults |
| MCP Contract V1 | Public compatibility and response-envelope rules |
| Testing | Standard, performance, and live acceptance strategy |
| Performance baseline | 10,000-note benchmark methodology and budgets |
| Release checklist | Current V1 acceptance evidence and remaining release gates |
| Implementation plan | Original product requirements and phased implementation plan |
Global Agent Memory is under active V1 development and is distributed through
GitHub Releases and
PyPI. The current GitHub release and
source package version is 0.1.7; the MCP contract version is v1.
The product name is Global Agent Memory. The technical identifiers global-memory,
global-memory-mcp, global-memoryd, global_memory, and product: global-memory
remain stable for V1 compatibility.
See the V1 release checklist for verified scenarios and remaining live acceptance work.
Global Agent Memory is available under the MIT license declared in pyproject.toml.