Persistent, provider-neutral memory for Codex, Claude Code, OpenCode, Pi, and MCP coding agents.
> /plugin marketplace add pax-beehive/paxm> /plugin install paxm-claude@pax-memory
Repo: pax-beehive/paxm
What's inside
PAXM carries decisions, conventions, and working context into later Codex, Claude Code, OpenCode, Pi, Cursor, TRAE, Kimi Code, ZCode, Kiro, Cline, and MCP sessions. Start locally with SQLite and no account, API key, embeddings, or extra memory-layer model calls. Change memory providers later without rewiring every agent.
Install for Codex · Install the CLI · See the result · Docs · 中文
Also from us: DSH Plugin Hub — exact versions and one-command installs for DeepSeek Harness plugins.
In one session, record a decision:
paxm remember --profile ltm --text \
"Production deploys run through GitHub Actions; never deploy from a laptop"
In a later session, Codex, Claude Code, OpenCode, Pi, or an MCP client can recover it:
paxm recall --query "how do we deploy production?"
With passive integration enabled, paxm recalls relevant context before the agent responds and durably captures completed turns afterward. Provider delays or failures do not block the coding session.
The practical result:
Choose the agent you already use. The Codex plugin is the shortest path to a complete active-and-passive memory loop.
codex plugin marketplace add pax-beehive/paxm --ref paxm-memory-v0.1.4
codex plugin add paxm-memory@pax-agent-nexus
curl -fsSL https://github.com/pax-beehive/paxm/releases/latest/download/install.sh | bash
paxm setup --integration codex-plugin
Start a new Codex task and trust the Pax Agent neXus hooks when /hooks asks.
The explicit installer downloads the latest published paxm binary. The plugin
registers active-memory skills and owns the passive Codex hooks after setup;
it never installs a binary, writes credentials, or bypasses hook trust on its
own.
Verify the first successful loop before relying on passive memory:
paxm config doctor
paxm remember --profile stm --text "PAXM_FIRST_RECALL_OK"
paxm recall --query "PAXM_FIRST_RECALL_OK"
paxm history --days 1
Set PAXM_VERSION before installation for a reproducible version or rollback.
Provider credentials remain user-managed. Team Memory can derive a scoped
agent credential from a paxl device connection; paxm never writes that secret
to config.yaml.
Install the paxm CLI, then install the Claude Code plugin:
curl -fsSL https://github.com/pax-beehive/paxm/releases/latest/download/install.sh | bash
claude plugin marketplace add pax-beehive/paxm
claude plugin install paxm-claude@pax-memory
paxm setup --integration claude-plugin
The Claude plugin includes active-memory skills, the paxm MCP server, and five
lifecycle hooks: SessionStart, UserPromptSubmit, PostToolUse,
PostToolUseFailure, and Stop.
Session bootstrap injects the configured user, agent, and session identity together with the current local time and time zone. Codex, Claude Code, and Pi use their session-start events; OpenCode performs the same bootstrap before the first message in a session. If a later user input arrives more than 12 hours after the preceding turn activity, paxm refreshes the local-time context before the agent handles that input.
Install the latest release and run interactive setup. The default SQLite provider makes the adaptor usable without first creating an account or API key.
curl -fsSL https://github.com/pax-beehive/paxm/releases/latest/download/install.sh | bash
paxm setup
paxm config doctor
paxm setup asks only two questions: which providers to enable and which
agents get passive memory. Agents found on the machine are pre-selected and
marked (detected), and cloud provider API keys are masked as they are typed.
Everything else uses the tuned defaults. When Team Memory is selected, setup
first reads the on-prem user ID from paxl device status, with channel status as
a compatibility fallback; otherwise the user ID comes from $USER. Agents get
IDs such as codex-todd, and selected providers route
read/write as required. Use up/down to move, space to toggle, and enter to
confirm. Fine-tuning (paths, profiles, routing policy, per-hook behavior) lives
in the config file; see docs/config.md.
Optional team IDs create explicit durable write profiles such as
team-pax-core; non-interactive setup can pass --user-id todd --team-id pax-core. Scripts can also skip the selection prompts entirely with
repeatable flags, e.g. paxm setup --provider sqlite --agent codex --agent claude.
Active recall skills remain user-installed. SQLite works without an API key; remote providers such as Zep, Mem0, MemOS, and OpenViking require connection details during setup.
SQLite health checks must be allowed to create WAL/SHM files beside the configured database. A sandbox that can read the database but cannot write its parent directory may report SQLite error 14.
Use an isolated writable SQLite path for sandboxed evaluations. The same configuration may be healthy in the real agent process.
When Codex is using the bundled paxm-memory plugin, let the plugin own Codex's
hooks so paxm does not register a duplicate global hook:
Write and recall a memory:
paxm remember --profile ltm --text "We chose SQLite for the local memory layer"
paxm recall --query "local memory layer"
paxm history --days 7
paxm dashboard # localhost metrics, logs, sessions, and recall inspection
Select OpenCode during setup to install a global local plugin under
~/.config/opencode/plugins/. Select Pi to install its passive extension.
Cursor, TRAE, TRAE CN, Kimi Code, ZCode, Kiro, and Cline selections install a
client-native hook/MCP integration while preserving unrelated client config.
See the agent integration matrix for exact event
mappings, paths, host limitations, verification, and rollback. Any
MCP-compatible client can use paxm mcp serve --agent codex; replace codex
with the configured client identity.
SQLite gives a new user a complete local memory loop before they choose or deploy a dedicated memory system. It uses FTS5 and BM25 retrieval with turn-level memories and deterministic, query-focused excerpts. Memory ingestion and retrieval call no external LLM or embedding service.
In an initial 30-question LoCoMo agent evaluation, SQLite turn memory answered 13 questions successfully, compared with 11 for Mem0 product-default.
| Memory arm | Successful answers | Mean token F1 | External models in memory layer |
|---|---|---|---|
| paxm SQLite turn memory | 13 / 30 | 0.4211 | None |
| Mem0 product-default | 11 / 30 | 0.3811 | GPT-5 mini + OpenAI embeddings |
This is an exploratory result, not an official LoCoMo score or proof that SQLite broadly outperforms Mem0. It covers one balanced conversation with OpenCode and DeepSeek V4 Flash, using deterministic token F1. See the methodology and limitations.

PAXM is a memory adaptor, not another hosted memory service:
AI agents -> CLI / MCP / skills / hooks -> paxm -> any memory provider
Agents reach paxm in two ways:
| Path | Entry points | Best for |
|---|---|---|
| Active | CLI, MCP, skill | Deliberate recall, explicit writes, inspection |
| Passive | Agent lifecycle hooks | Prompt-time recall and automatic turn capture |
Both paths use the same runtime and provider router. Filtering, profiles, ranking, timeouts, telemetry, and provider behavior stay consistent across agent surfaces.
Passive writes commit to a local durable queue before provider delivery. Slow or unavailable providers retry in the background instead of blocking the agent.
Passive recall uses an 800ms overall budget and 250ms per-provider budget
by default. It returns healthy partial results and records downstream
timeouts.
PAXM keeps the agent-facing contract stable while profiles choose providers, failure policy, ranking, and timeouts. SQLite is the zero-setup default, not a required storage backend.
Lifecycle hooks recall context before the model request and capture completed turns afterward. Writes enter a durable local queue before provider delivery, so provider latency does not block the agent.
Read the detailed architecture and provider adapter contract.
Stored memories distinguish their origin (user, agent, session, and turn)
from their visibility scope. Providers that advertise attribution support
must round-trip both values; see the
JSON-RPC provider protocol.
| Agent/client | Active | Passive recall | Passive write |
|---|---|---|---|
| Codex | CLI, MCP, skill | Hook | Hook |
| Claude Code | CLI, MCP, skill | Hook | Hook |
| Pi | CLI, MCP, skill | Extension | Extension |
| OpenCode | CLI, MCP | Plugin | Plugin |
| Cursor | MCP | — | Hook |
| TRAE / TRAE CN | MCP | Hook | Hook |
| Kimi Code | MCP | Hook | Hook |
| ZCode | MCP | Hook | Hook |
Kiro paxm agent | MCP | Hook | Hook |
| Cline | MCP | Hook | Hook |
| Any MCP client | MCP tools | — | — |
| Provider | Mode | Notes |
|---|---|---|
| SQLite | Default, built in | Zero-setup turn memory; no API key, LLM, or embeddings |
| Zep | Built in | User or graph scoped |
FAQ
paxm is a Claude Code plugin with 2 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes paxm-setup, paxm. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it