
Pathmark
io.github.hacksurvivor由 GitHub 账号 hacksurvivor 发布v0.1.17更新于 Oct 24, 2026
Local-first intent and provenance for Codex, Claude Code, Cursor, Gemini CLI, and MCP agents.
概览
为编码代理提供本地意图与来源记忆层,让决策、约束和证据在 Codex、Claude Code、Cursor、Gemini CLI 等 MCP 客户端之间延续
- 可以做什么
- Pathmark 是面向编码代理的本地优先意图与来源层。其 MCP 工具包括用于保存原始证据的 remember、用于需审批的持久结论的 create_conclusion、用于检索的 search_memory、recall_memory、get_context、ask_memory 与 chat,以及 session_trace、rate_recall、audit_memory、doctor_memory、backup_memory、export_memory 和更新、取代、删除、清除等维护工具。记录存放在可直接查看、备份或迁移的 JSONL 存储中,可选合成模式让客户端模型、本地命令、Codex CLI 或 OpenAI 兼容端点基于记忆作答。
- 适用场景
- 当你在一个项目中切换多个编码代理、反复重新说明决策、约束与已批准结论时适用。它适合希望把共享且可审计的记忆放在本机、并把原始证据与已批准意图分开的开发者。若只在单个代理会话中使用且不需要跨工具上下文,则没有必要安装。
- 运行要求
- 以本地进程方式运行,需要 Node.js 22.5 或更高版本,通过 npm 包 pathmark 安装并以 stdio 启动。核心服务器不需要账号、托管数据库或 API 密钥。可选配置包括 PATHMARK_STORE_DIR(memory.jsonl 位置)、PATHMARK_NAMESPACE,以及 PATHMARK_SYNTHESIS_PROVIDER、PATHMARK_OPENAI_API_KEY、PATHMARK_OPENAI_BASE_URL、PATHMARK_CHAT_COMMAND、PATHMARK_EXPORT_KEY 等提供方变量。
安装
在 SourceWeft 中
- 打开 控制台中的 Pathmark,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Pathmark
Carry intent across agents without turning stale code facts into hidden memory.
[current Pathmark npm version] [npm downloads] [weekly npm downloads] [OpenSSF Scorecard]
What's New — v0.1.17
Pathmark v0.1.17 stops Claude Code from gating every memory lookup:
pathmark setup claude-code --apply-permissionsadds allow rules for Pathmark's ten local read-only tools, so recall and search run without a permission prompt, and in auto mode without a safety-classifier round-trip that can fail transiently;- it backs up
~/.claude/settings.json, adds only missing rules, keeps every other setting, and never rewrites a file it cannot parse; - the allow list is tested against the tools' own
readOnlyHint/openWorldHintannotations, so anything that writes, deletes, or may call an external model always keeps its prompt.
See the v0.1.17 release notes or the complete changelog. The npm badge above always shows the currently published version.
[Pathmark local intent and provenance shared by Codex, Claude Code, opencode, and Gemini CLI]
Pathmark gives Codex, Claude Code, opencode, Gemini CLI, Cursor, and any MCP-capable harness one local intent and provenance layer. Save decisions, constraints, preferences, and approved conclusions once. Use them from the next agent without pasting a recap.
Code remembers implementation. Pathmark remembers intent. Repository code, architecture, tests, CI, and intentional agent instructions remain authoritative for how the software works. Raw sessions are searchable evidence, not automatically trusted truth.
Your context stays on disk at ~/.pathmark/memory/memory.jsonl. You do not need an account, hosted database, API key, or vendor backend to start.
OpenAI Build Week 2026
Pathmark is a Developer Tools submission for OpenAI Build Week 2026. The project existed before the challenge, so the submission is deliberately scoped to the meaningful extension built after the submission period opened on July 13, 2026.
During the eligible period, Codex with GPT-5.6 helped audit and extend Pathmark from a working local memory layer into safer long-running developer infrastructure:
- fixed a reproduced multi-process SQLite index race;
- added revision history, superseding, expiration, retention, diagnostics, backup, compaction, and preview-first hard purge;
- added namespace-scoped reads and writes plus default secret redaction;
- added scoped import/export, optional AES-256-GCM portable exports, local hybrid reranking, and portable harness ingestion;
- hardened CI and npm delivery with required CodeQL and dependency review, immutable Action pins, protected tags, OpenSSF analysis, and SLSA provenance.
The primary Codex session for this work is 019f5fc3-d7e6-7b41-8a30-d161c90b98fb. The qualifying release range is v0.1.6 through v0.1.7; the pre-challenge baseline is commit 4c0e87dfdbd2ba4c643abd8b887cc228bdb08b73.
See the Build Week implementation record for the before/after boundary, commit evidence, Codex collaboration details, and a fast judge test.
Why Pathmark
You do not work in one tool. You ask Codex to patch, Claude Code to review, opencode to clean up, and Gemini CLI to challenge the plan. Each tool starts cold unless you carry the context across.
Pathmark gives those tools one place to read and write intent and evidence:
- One local JSONL store across harnesses.
- Standard MCP tools include
remember,search_memory,recall_memory,session_trace,rate_recall,consolidate_memory,audit_memory, and conclusion-firstchat/ask_memory. - Client-side synthesis by default, so your coding agent reads the context and answers.
- Optional Codex CLI, local command, and OpenAI-compatible synthesis modes.
- Plain files you can inspect, back up, delete, or migrate.
Pathmark stays provider-neutral. Codex gets one optional synthesis preset. The core server works with any MCP client that can use local tools.
Pathmark requires Node.js 22.5 or newer.
Cross-Harness Memory
You switch tools during a coding session:
- Codex fixes the failing test.
- Claude Code reviews the patch.
- opencode cleans the diff.
- Gemini CLI challenges the approach.
Pathmark keeps the notes in one store.
Point each harness at the same store:
Install Pathmark in each harness and point them at the same PATHMARK_STORE_DIR. One tool saves raw context with remember or proposes a durable conclusion with create_conclusion; an approved conclusion and raw evidence can then be recovered with recall_memory, search_memory, get_context, or ask_memory.
Pathmark sits below the agents as an intent, evidence, and provenance bus for your coding workflow.
Tools
Pathmark exposes these MCP tools:
Quick Start
Then add the MCP server to your client.
Prefer npm for normal installs. To test the current GitHub main branch directly:
Generate a setup snippet for your harness:
See docs/compatibility.md for Codex, Claude Code, opencode, Gemini CLI, OpenClaw, Hermes Agent, Grok CLI, Kimi, GLM, and generic MCP setups.
Codex
Codex users can also enable auto-capture:
When you want the visible "what memory did you use?" entry in Codex, Claude Code, Cursor, opencode, Gemini CLI, Grok-compatible MCP hosts, or any other MCP harness, call the recall_memory tool before answering. Codex session start injects an approved conclusion snapshot. Before non-trivial prompts, Codex recalls approved conclusions first and uses fresh scoped raw evidence only as a bounded fallback. recall_memory remains the portable visible trace across harnesses.
Claude Code
The second command lets Pathmark's local read-only tools (recall, search, diagnostics) run without a permission prompt, including in auto mode, where they would otherwise wait on the safety classifier. It backs up ~/.claude/settings.json, adds only the missing allow rules, and leaves everything else untouched. Tools that write or delete memory still ask.
--scope user makes Pathmark available in every project; Claude Code's default scope only covers the current directory. For automatic capture and session-start recall (including after context compaction), merge the hooks block from pathmark setup claude-code into ~/.claude/settings.json.
Claude Code's built-in auto-memory lives in per-project folders the other agents cannot see. Bring it into the shared store as evidence (re-runnable; edits update in place with history, and records you delete in Pathmark stay deleted):
opencode / Gemini CLI
Use the generated snippets:
Claude Desktop
Add this to your Claude Desktop MCP config:
Cursor
Add the same command to Cursor's MCP server settings:
Local Development
Run directly:
Import Legacy Memory
Pathmark can import a compatible local JSONL memory store without deleting or moving the source files.
Defaults:
The importer creates a memory.jsonl.backup-* file before writing, uses deterministic ids so reruns skip duplicates, and redacts obvious KEY=..., TOKEN=..., PASSWORD=..., and Bearer ... values.
It uses the same store lock as live MCP and Codex writers, so an import cannot overwrite records captured concurrently.
Use a dry run first when migrating another machine:
Codex Auto-Capture
Install Pathmark as the Codex memory adapter:
This registers the Pathmark MCP server, enables Codex hooks, and removes old compatible hook commands from Codex. It does not delete or move memory files.
The Codex adapter is proactive by default:
- user prompts, final assistant answers, and tool activity are captured locally; intermediate Codex commentary is excluded;
- tool activity records include bounded redacted input previews and hashes, status, exit code, duration, and changed files when the hook provides them;
- tool-output hashes are captured for correlation, while output text remains private by default and requires
PATHMARK_CODEX_CAPTURE_TOOL_OUTPUTS=on; - activity records expire after 30 days and are physically capped at 5,000 records by default;
- session start/resume generates one bounded USER/PROJECT/AGENT snapshot from approved canonical conclusions and does not inject raw session history;
- each non-trivial user prompt searches approved workspace/project conclusions first, then approved global or explicitly named-project conclusions;
- only when no approved conclusion matches, at most two raw records from the current workspace/project/session may be injected as a high-confidence fallback;
- raw fallback records must be within the separate automatic-recall horizon, 30 days by default; the full raw archive remains available to explicit
search_memoryandrecall_memorycalls; - raw cross-project history is never injected automatically; promote durable cross-project intent through the approval workflow;
- broad cross-project history remains available through explicit
search_memory/recall_memorycalls without silently entering every prompt; - matching memory is injected quietly by default, without adding a raw
recall_memorytool result to the conversation; - set
PATHMARK_CODEX_VISIBLE_RECALL=onwhen debugging or auditing to make Codex callrecall_memorywith the exact pre-capture result IDs and workspace tag; this explicit mode omits the redundant fullrecordscopy; - legacy transport envelopes and assistant progress updates are excluded from session-start and proactive relevance results, while realtime delegation envelopes retain only their current
<input>payload; - records containing Pathmark boundary escapes, instruction-override patterns, or invisible Unicode controls are tagged
memory-quarantinedand excluded from automatic recall; injected previews are escaped and explicitly treated as untrusted historical data; - no matching memory means no extra context is injected.
Durable extraction is approval-gated by default. create_conclusion creates a pending proposal; pending and rejected conclusions stay in the canonical JSONL audit trail but are structurally excluded from normal search, exact-ID recall, prompt injection, and snapshots. Use list_pending_conclusions, then approve_conclusion or reject_conclusion. Conclusions created before this workflow are treated as already approved for backward compatibility. Raw remember records remain searchable evidence and are not promoted automatically.
The session snapshot is generated from the same canonical store rather than maintained as a second flat file. It is frozen in the session-start hook output; prompt-time scoped recall remains dynamic.
Set PATHMARK_CODEX_PROACTIVE_RECALL=off if you want Codex hooks to capture memory but stop prompt-time recall.
Set PATHMARK_CODEX_VISIBLE_RECALL=on only when you want an explicit audit/debug recall_memory tool call. Proactive prompt-time recall remains active when this is off.
recall_memory is a point-in-time record of memory used before an answer. It intentionally does not include commands that run later. Use session_trace with the exact session ID to inspect the chronological prompt → injected memories → tools/results → final-answer trail. When explicitly enabled, output previews are capped at 2,000 characters and redacted before storage; hashes preserve correlation without storing output text by default. Upgrading an existing cursor migrates to final-answer-only parsing without duplicating previously captured user or final-answer turns. When the original transcript is available, exact legacy phase: "commentary" records are soft-deleted by timestamp and text during that migration.
Use --replace-legacy-hooks when you want Pathmark hooks to take over from earlier compatible hook commands. Without it, Pathmark installs alongside existing hook commands.
Check the adapter status:
The status output is JSON and includes Pathmark hook state, MCP registration state, legacy hook presence, the active store paths, and the current record count.
Remove Pathmark hooks and MCP registration without deleting memory:
Configuration
Synthesis Modes
Pathmark separates memory from reasoning.
client
Default. The MCP server returns relevant memory context, and your MCP client model synthesizes the answer. This works across Codex, Claude Desktop, Cursor, and any other MCP client without giving Pathmark a model credential.
command
Use any local subscription or model CLI that accepts a prompt on stdin and writes an answer to stdout:
This is the general path for users with another paid subscription CLI or a local model runner.
codex
Use the proven Codex CLI bridge. It runs a controlled, non-interactive codex exec turn with hooks and memories disabled to avoid recursion:
This is useful for Codex users who have persisted ChatGPT/Codex CLI auth locally but do not want to add an OpenAI API key. Pathmark sends the synthesis prompt through stdin, runs Codex in an empty temporary workspace, ignores project rules, and exposes only a minimal environment. Memory records are treated as untrusted data rather than executable instructions.
openai-compatible
Use any provider that exposes /chat/completions, including many Kimi, GLM/Z.ai, OpenRouter, LiteLLM, Ollama-compatible gateways, and self-hosted routers:
This mode affects MCP ask_memory / chat and CLI pathmark chat. Regular MCP tools still store and retrieve local memory without a model provider.
Setup CLI
pathmark setup <client> prints copy-paste setup for common harnesses. Add --json when you want structured output for scripts.
Supported targets:
Aliases include claude, gemini, kimi, glm, and z-ai.
Gemini CLI setup includes portable SessionStart, BeforeAgent, AfterTool, and AfterAgent hooks for automatic scoped recall and capture. Other harnesses can feed exported transcripts through the generic ingestion surface:
Memory chat, consolidation, maintenance, and portable sync
Maintenance commands preview destructive changes unless --apply is present:
pathmark chat and the MCP chat / ask_memory tools search approved conclusions first. Multi-intent questions can return separate conclusions for separate clauses. In default client mode, approved conclusions produce a safe extractive answer; a configured codex, command, or openai-compatible provider can synthesize richer prose. Raw fallback requires an explicit scope (--namespace / tags) or kind: memory, preventing unscoped cross-workspace history from entering chat.
Every matched chat query records recall activity and returns a recallId when the store is writable. Abstentions and read-only stores return recallId: null. Use MCP rate_recall or pathmark feedback with exact recalled IDs to label relevance. pathmark audit reports precision.status: "labeled", measured precision, and label coverage once feedback exists.
pathmark consolidate is preview-first. With default client synthesis it returns the bounded evidence and exact instructions for the host agent, which can call create_conclusion with supporting evidenceIds. When more eligible evidence remains, the result includes nextCursor and remainingAfterBatch; pass the cursor to review the next stable page. With a configured server-side synthesis provider, it previews structured candidates; --apply stages them as pending conclusions for approve_conclusion or reject_conclusion. It never auto-approves extracted intent.
Applied compaction and purge create a backup before replacing the canonical file. Soft deletion remains available through delete_memory; hard purge physically removes selected records from JSONL and rebuilds the derived index.
pathmark audit is read-only. It separates all raw records from consolidation-eligible user/assistant evidence, then reports capture-to-recall ratio, actionable synthesis backlog, recall age, exact duplicates, stale raw hits, and scope/missing-reference signals. Precision remains unlabeled until explicit feedback exists; Pathmark never substitutes a heuristic for a user label.
Use scoped exports and merge imports as the transport-neutral sync layer:
For an encrypted portable bundle, configure the passphrase outside the command line:
Pathmark does not silently upload these files. Move them through a trusted filesystem, backup tool, or sync provider of your choice.
Optional hybrid retrieval
Default retrieval stays local SQLite FTS. To enable semantic or embedding-backed reranking without forcing a model dependency, set PATHMARK_RERANK_COMMAND to a trusted local command. It receives one JSON object on stdin containing query and candidates, and must return a JSON array of ranked record ids (or { "ids": [...] }). If it fails or times out, Pathmark falls back to lexical results.
Data Format
Pathmark stores newline-delimited JSON at:
memory.jsonl remains the canonical source of truth. Pathmark also maintains a derived, disposable search index at memory.index.v5.sqlite. Index filenames are schema-versioned so old and new MCP processes can coexist during a rolling restart. The index is rebuilt automatically when the JSONL file changes outside Pathmark, and inactive index versions can be deleted safely after their processes stop.
Each record is inspectable:
Deletes are soft deletes by default: the record gets a deletedAt timestamp. Use preview-first purge_memory or pathmark purge --apply for physical erasure. Updates preserve up to 50 prior versions, superseded records link to their replacement, and expired records are excluded from recall. The raw automatic-recall horizon is separate from storage retention: evidence can age out of proactive injection while remaining explicitly searchable.
Malformed JSONL lines are skipped rather than crashing every tool. pathmark codex status reports their count as invalidRecordCount so the source file can be repaired deliberately.
Roadmap
- Provider presets for common local AI CLIs where stable commands exist.
- Encrypted store option.
- Hosted sync as an opt-in layer, not a requirement.
- Native auto-capture packages for additional harness plugin systems beyond Codex and Gemini CLI.
- Example recipes for Codex, Claude Desktop, Cursor, ChatGPT, and local LLM tools.
Positioning
Pathmark gives your agents a shared working memory that stays on your machine.
Switch agents. Keep the context.
Bring your own subscription. Keep your memory local.
Author and citation
Pathmark is created and maintained by Sergey Moloman, an AI product engineer.
Machine-readable authorship and citation metadata are available in CITATION.cff and codemeta.json.
License
MIT
来源:README.md,提交 db1ecd9
工具
0版本历史
3- v0.1.17最新Sep 28, 2026
- v0.1.16Sep 24, 2026
- v0.1.15Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分