mex-memory/mex
Team memory for engineers and their AI agents. Lives in your repo. Shared through Git.
About mex-memory/mex
mex-memory/mex is an open-source project on GitHub, mainly written in TypeScript. Team memory for engineers and their AI agents. Lives in your repo. Shared through Git. It currently holds 1,614 stars and 125 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
AI Homed tracks it on the AI Agent Memory board.
GitHub Repository Details
README
Shared project memory for engineers and their coding agents.
MEX keeps your team's architecture, decisions, requirements, and handoffs alongside the code. Engineers and their agents can build on shared context, review proposed changes, and carry work between sessions and teammates—with Git as the sharing layer.
English | 简体中文 | Español | Português (Brasil)
Team memory · A teammate-handoff example · Project Hub · Quick start · How it works · Command map
---
One engineer knows why a constraint exists. Another has the debugging history. A coding agent found an important edge case in a session nobody else will read. The next teammate has to piece it together again.
What one engineer and their agent learn should become context the next teammate can use. MEX gives that knowledge a durable home in the repository: readable Markdown, code-linked explanations, reviewed knowledge contributions, and structured handoffs. People explore and review it in a local Hub; agents retrieve and help maintain it through project instructions and the CLI.
[!IMPORTANT]
MEX 0.8.2 brings setup into the Hub: choose integrations, follow your agent, review and commit setup, then finish with optional global installation and contact details. Terminal setup remains available with mex setup --cli.
💬 Join the MEX community on Discord — discuss ideas, get help, share feedback, and show what you're building.
What your team remembers
| What the team needs to retain | Where it lives in MEX | | --- | --- | | How the system works, and why | Wiki architecture, decisions, conventions, and patterns, with Code Graph grounding | | A decision or explanation worth sharing | An Inbox proposal that adds to or corrects existing Wiki knowledge | | Product requirements already captured | Existing Specs, requirements, constraints, and acceptance criteria remain supported | | Where another engineer should continue | Relays with progress, decisions, blockers, evidence, and next actions | | Earlier workflow context | Existing Workstream records remain readable | | Who is involved, and what MEX recorded | Members and Activity history |
Canonical memory travels with ordinary Git commit, push, and pull. Each teammate keeps their own local indexes, drafts, identity selection, and Hub. No hosted MEX service, Docker, proxy, MEX account, or MEX-owned model key is required.
Working solo? The next person using that memory can be you in a new session.
From one engineer to the next
An example: Alex changes webhook retry handling, and Sam will continue the work. Both are active MEX Members in a repository their team has already set up.
1. Start with the team's context. Alex asks Codex to inspect the existing architecture, relevant decisions, and code evidence before making the change and running tests.
2. Keep the useful discoveries. With Alex's direction, Codex updates the relevant Wiki explanation and code references. For a conclusion the team should review, it prepares an Inbox knowledge proposal for explicit approval.
3. Prepare and publish the handoff. Alex asks $mex-relay to draft a Relay for Sam: what changed, which tests ran, what remains, and where to look next. She reviews the draft and publication preview in Hub, explicitly publishes it, then reviews, commits, and pushes the code and canonical MEX files through Git.
4. Continue from shared context. Sam pulls the relevant branch, updates his local indexes as needed, and opens Hub. He reviews and takes the Relay, then asks his coding agent to read its context and continue. His acknowledgement is another canonical change to commit and push.
The Relay carries the explanation and observed repository state—not the uncommitted code. Publishing writes files to Alex's checkout; it does not notify Sam or deliver anything until they share through Git. See Relay boundaries for lifecycle and concurrency details.
Project Hub
The Hub is where people explore and review their team's memory. Open it to explore connected project knowledge and code, review a proposed knowledge change, find an eligible handoff, or see recorded team history.
- Understand the project: Home, Search, Context, and Code bring explanations and implementation evidence together. The Context graph shows knowledge entities and relationships; selecting one reveals its direct code groundings and details.
- Review and carry work forward: Inbox proposes additions and corrections to project knowledge; Relays preserve what the next person needs. Existing Spec proposals and Workstream records remain readable.
- See who and what: Team/Members supports attribution and local identity selection. Activity shows accepted MEX workflow events and recorded project notes—not every code edit or Git action.
- Keep context usable: Health and Jobs expose index status and explicit maintenance.
mex hub. Each engineer's Hub reads their own checkout and listens on 127.0.0.1; it is not a shared hosted dashboard. Git brings the team's canonical records into that checkout. Hub protects mutations with a server-side session and CSRF token. Playbook and Catch Up product workflows remain future work.
Quick start
MEX requires Node.js 22.5 or newer, SQLite FTS5 support in that Node build, and a Git repository. See runtime compatibility. The normal npm flow works on macOS, Linux, Windows Command Prompt, PowerShell, and WSL.
Introduce MEX to your repository
Run from the repository root:
npx mex-agent@0.8.2 setup
This opens setup in your local browser Hub. Choose your AI tools, watch the scaffold and indexes build, and let an available selected Claude Code or Codex CLI populate project memory. If the agent is unavailable or fails, copy the population prompt into your agent, then continue. Existing instructions are preserved; any manual integration pointers appear as advisory guidance.
Review the exact setup-file diff in the Hub and choose Commit setup to create a local commit. A manual Git checkpoint remains available. MEX preserves unrelated staged work and never pushes or pulls.
The completion screen explains how to start a fresh agent session and verify that it reads your project memory. It also offers two optional steps: install the mex command globally at the version running setup, and leave an email (plus an optional name) for follow-up about MEX. Contact details are sent through the embedded Web3Forms service and stay out of the repository and usage telemetry. Only a submitted/skipped preference is remembered on this computer. Choose Open Hub when ready; the Hub's introductory tour starts there.
Connected agents have their own installation, account, and network requirements. To print the local browser link without opening it, use npx mex-agent@0.8.2 setup --no-open; add --port to choose a loopback port.
Prefer terminal setup or working over SSH?
npx mex-agent@0.8.2 setup --cli
mex setup --dry-run remains a terminal preview without changes. Once installed, bare mex opens the Hub (or setup for an incomplete project), while mex tui opens the terminal dashboard.
[!NOTE]
The full Hub opens when the current.mex/config.jsonis committed atHEAD. Its setup wizard can commit the reviewed setup files on your explicit request, preserving unrelated staged work. Repositories with unsupported Git hooks or content filters keep the manual checkpoint. MEX never pushes or pulls.
Push the reviewed setup commit through your team's normal Git workflow so teammates receive the same project memory and selected agent instructions. In Hub's Team/Members page, add the people who will participate and choose your local identity. Review and apply those actions explicitly; commit and push new Member records too. Your current-member selection stays local.
Join a repository already using MEX 0.8
Clone or pull the team's repository and branch through Git. For a completed, committed 0.8 setup, build the derived indexes in your own checkout and open Hub:
npx mex-agent@0.8.2 graph rebuild
npx mex-agent@0.8.2 wiki rebuild-index
npx mex-agent@0.8.2 hub
Reuse the shared project memory; do not regenerate it just to join. In Team/Members, check the effective identity and, if needed, choose your existing Member record as a local override. If you do not have a record yet, explicitly create one through the reviewed workflow and share its canonical files. Members are attribution, not a sign-in or permission system.
The committed instruction files and skill directories are reusable by the agents they target. Install the agent separately and start a new session in the repository. If your chosen integration was not included in the shared setup, coordinate adding it with the team; see agent integrations. After later pulls or branch changes, inspect Graph/Wiki health and run the indicated explicit maintenance—reads do not silently update indexes.
Older or incomplete setups should follow upgrade and compatibility first. Keep CLI versions aligned before exchanging new Relays.
Prefer a global installation?
npm install -g mex-agent@0.8.2
mex setup
The npm package is named mex-agent; the installed command is mex. Complete the review and commit checkpoint above before running mex hub.
Both the Hub and terminal completion flows offer an optional global installation pinned to the running MEX version. If it fails, setup remains complete and you can retry the command above. Open a new terminal afterward and run mex --version.
Using MEX for a persistent operational agent?
npx mex-agent@0.8.2 setup --mode agent-memory
This separate template applies MEX's routing and maintenance model to homelab, infrastructure, and long-running agent workspaces. It adds a HEARTBEAT.md contract and cleanup conventions; the Code Graph, Wiki, and team-Hub flow described in this README is the default code-repo mode.
Examples use mex for readability. Install it globally as above or replace it with npx mex-agent@0.8.2.
How MEX works
The team's memory is shared; the machinery that retrieves it stays local. MEX separates canonical repository files from rebuildable indexes so each engineer and agent can work against their own checkout.
Canonical Markdown, local indexes
Canonical knowledge is structured Markdown with metadata, relations, sources, provenance, and code groundings; accepted Wiki writes append audit records. The Code Graph and Wiki search index are rebuildable local SQLite views, not shared sources of truth.
In 0.8.1, ordinary Wiki creation and synthesis capture the operation's recorded actor, time, and session as creation provenance while preserving any supplied original attribution. Migration leaves unknown, untyped context/*.md files untouched; supply an explicit entity type before migrating them instead of relying on an architecture default.
| Commit and push to share | Keep local or ephemeral; never commit |
| --- | --- |
| .mex/config.json, .mex/.gitignore | .mex/graph.db* |
| .mex/AGENTS.md, .mex/ROUTER.md, .mex/SETUP.md, .mex/SYNC.md | .mex/wiki.db* |
| .mex/context/, .mex/patterns/, .mex/specs/, .mex/topics/ | .mex/local/: drafts, current-member selection, jobs, cursors, recovery state, signing key |
| .mex/team/members/, .mex/workstreams/, .mex/inbox/, .mex/relays/ | Process-memory Hub session registry and browser-held session/CSRF state |
| .mex/events/activity/, .mex/events/operations.jsonl, .mex/events/decisions.jsonl | — |
| Setup-selected agent instruction files and .agents/skills/mex- or .claude/skills/mex- | — |
Git carries the meaning; setup or explicit maintenance commands rebuild the indexes against each checkout's own branch and working tree. Code remains authoritative, and grounding drift flags code-linked explanations that need review.
Wiki, Code Graph, and grounding
Shared memory needs both the team's explanation and evidence from the implementation. MEX combines two complementary views of a repository:
- The Wiki explains architecture, conventions, decisions, patterns, topics, and Specs in language people can review.
- The Code Graph uses bundled Tree-sitter grammars to map symbols and relationships from the implementation into a local SQLite index for precise, bounded retrieval.
mex graph status
mex graph refresh # Republish an existing compatible store
mex graph rebuild # Full replacement when status requires it
mex wiki rebuild-index
mex wiki query "authentication"
Ask the Graph for a task-sized evidence set or an exact structural relationship:
mex graph scope "trace the authentication flow"
mex graph query where-defined authenticate
mex graph query who-calls requireSession
mex graph get
mex impact requireSession
MEX indexes TypeScript/TSX, JavaScript/JSX, Python, and Rust. Module variants such as .mts, .cts, .mjs, and .cjs have partial coverage, and Express is the only framework-specific resolver documented for 0.8. CLI Graph reads can return bounded, clearly labelled degraded evidence when configuration drifts, parsing is incomplete, or changed files must be excluded. Incompatible engines still refuse reads, and Hub Code keeps strict freshness checks. scope can also return bounded live-text evidence for stale or unindexed files, marked text-only.
Hub Graph construction runs in a disposable process so compiler work can release its memory when the job exits. This improves responsiveness during construction and reduces retained compiler state; it does not make indexing incremental or guarantee lower combined peak memory.
Grounding and drift
A Wiki claim can point to a deterministic graph node. MEX stores the node ID and identity fingerprint; new MEX-written groundings also carry a body hash, while compatible legacy groundings may fall back to coarser fingerprint comparison. Together these signals distinguish intact, changed, moved, missing, ambiguous, and unverified references.
Drift is a review signal. It does not prove that prose is false, that a code change is wrong, or that a model actually reasoned from retrieved context. A successful agent session no longer accepts a new baseline automatically: replacing an existing baseline requires explicit review of the selected grounding.
Agents help maintain the team's memory
Agents are both readers and contributors: they can retrieve the team's existing context, help capture discoveries from real work, and prepare knowledge proposals or handoffs for a person to review. They do not independently decide what should be published or shared.
Setup installs small host-agent instructions that point to .mex/AGENTS.md for policy and .mex/ROUTER.md for task-relevant context. Agents can query Wiki and Graph evidence, provided the host follows those instructions.
| Integration | Setup behavior | Explicit skill commands |
| --- | --- | --- |
| Claude Code | Installs or updates the project anchor and skills under .claude/skills/ | /mex-inbox, /mex-relay |
| Codex | Installs or updates the project anchor and skills under .agents/skills/ | $mex-inbox, $mex-relay |
| Cursor, Windsurf, GitHub Copilot, OpenCode | Installs the appropriate instruction anchor/template | No official MEX skill command in 0.8 |
For an existing setup missing your Claude Code or Codex assets, preview and sync that integration explicitly:
mex skills sync --dry-run --tool codex
mex skills sync --tool codex
Use --tool claude for Claude Code. Review the resulting instruction and skill files, commit and push them if the team should share the integration, and start a new agent session.
Instructions may select Inbox or Relay from clear natural-language intent, but skill activation never approves a canonical write. When MEX context materially helps, the agent mentions MEX and the relevant finding naturally, tying it to what it helped understand, decide, or verify, without a standard footer.
With the 0.8.1 Inbox update, “use MEX Inbox to capture what we decided” produces a contribution to existing project knowledge. The agent checks existing records, then drafts one addition or correction. Architecture, components, conventions, decisions, patterns, and guides are supported alongside existing Spec proposals. A local draft stays in the checkout; publishing writes a Markdown proposal for review; approval updates canonical knowledge and retains the proposal as history. Git shares those files with teammates.
Ordinary GROW, Wiki, and context upkeep remains available without Inbox. Inbox is the explicit contribution path, not another knowledge category.
The repository includes an MCP workspace for local development. It is not published with MEX 0.8; the released agent interface is the mex-agent CLI and its project instructions and skills.
Human approval boundaries
| An agent can prepare | A person deliberately controls | | --- | --- | | Search and retrieve Wiki or Graph evidence | Whether retrieved evidence is sufficient | | Create a checkout-local Inbox draft | Publishing the proposal for repository review | | Preview a bounded knowledge addition or correction | Approving or rejecting the proposed canonical change | | Create a checkout-local Relay draft | Publishing, taking, and closing a handoff | | Suggest context and grounding updates | Reviewing and committing working-tree changes |
Team workflows use signed previews to bind reviewed inputs and detect stale or altered plans; Wiki authoring uses a plan/--apply boundary. These protect mutation integrity—not authentication, OS isolation, repository permissions, or proof that a human issued the command.
Team workflows
These workflows help a team decide what becomes durable knowledge and preserve enough context for someone else to continue. They sit alongside your existing code-review and issue-tracking tools.
| Feature | What it is | Sharing boundary | | --- | --- | --- | | Members | Stable contributor records plus a checkout-local “current member” for attribution | Member records use Git; current selection stays local | | Workstreams | Durable context around an area of work and its state | Canonical Markdown through Git | | Specs | Structured product requirements, constraints, and acceptance criteria | Canonical Markdown through Git | | Inbox | Proposals for one project-knowledge addition or correction; existing Spec proposals remain supported | Draft local; published proposal and decisions through Git | | Relays | Agent-prepared, human-published context handoffs | Draft local; published/taken/closed record through Git | | Activity | Accepted MEX workflow history and custom records | Canonical records through Git |
Members provide attribution and provenance. They are not accounts, authentication, role-based access control, or repository permissions.
Inbox: contribute to project knowledge
In 0.8.1, the Inbox skill captures one durable conclusion from a discussion as an addition or correction to architecture, components, conventions, decisions, patterns, or guides. It searches existing knowledge first, saves a local draft, and publishes a Markdown proposal for review. Approval changes the existing knowledge area and retains the proposal's source evidence. Existing spec.create and spec.update proposals remain supported.
Every canonical proposal transition still needs ordinary commit/push/pull to reach another checkout. Approval, rejection, and withdrawal are terminal; a stale proposal can be repaired back to pending. An author can use the exceptional self-approval flow, so Inbox is designed for explicit approval—not guaranteed peer review.
Ordinary GROW upkeep can still update project knowledge directly. Inbox is the explicit contribution-and-review path; session notes remain in the event log.
Relay: pass the context baton
A Relay packages what the next person needs: a summary, progress, blockers, next actions, useful evidence, and observed repository state. The 0.8.1 update adds Open to team, including active Members who join later, alongside named recipients. Save a local draft before selecting anyone, or use mex relay draft save --from draft.json --json for the shorter agent path. Publication requires an active sender; named handoffs also require one to 32 unique active r