with one click
harness-mem
// Cross-platform persistent memory for coding agents. Provides session continuity, progressive retrieval, and unified memory across Claude Code, Codex, OpenCode, and Cursor.
// Cross-platform persistent memory for coding agents. Provides session continuity, progressive retrieval, and unified memory across Claude Code, Codex, OpenCode, and Cursor.
User ใใๆใๅบใใฆใใ่ฆใใฆใใใไปไฝใใฆใใใๅๅใใ็ถใใใresumeใใrecallใ็ญใฎ recall ๆๅณใ็บ่ฉฑใใใจใใซ invoke ใใ Skillใintent ใ 5 ๅๅฒใซๅ้กใใ้ฉๅใช MCP tool (harness_mem_resume_pack / harness_mem_sessions_list / harness_mem_search / harness_cb_recall) ใใใใฏ SSOT (decisions.md / patterns.md) ใซ routing ใใฆใsource ใๆ็คบใใ 1 ่ก่ฆ็ดใงๅ็ญใใใ
User ใใๆใๅบใใฆใใ่ฆใใฆใใใไปไฝใใฆใใใๅๅใใ็ถใใใresumeใใrecallใ็ญใฎ recall ๆๅณใ็บ่ฉฑใใใจใใซ invoke ใใ Skillใintent ใ 5 ๅๅฒใซๅ้กใใ้ฉๅใช MCP tool (harness_mem_resume_pack / harness_mem_sessions_list / harness_mem_search / harness_cb_recall) ใใใใฏ SSOT (decisions.md / patterns.md) ใซ routing ใใฆใsource ใๆ็คบใใ 1 ่ก่ฆ็ดใงๅ็ญใใใ
| name | harness-mem |
| description | Cross-platform persistent memory for coding agents. Provides session continuity, progressive retrieval, and unified memory across Claude Code, Codex, OpenCode, and Cursor. |
Provide persistent, cross-platform memory that keeps coding agent sessions continuous and retrieval-efficient.
Use this skill when work needs:
The harness-mem MCP server is configured automatically by
harness-mem setup --platform codex. New Codex setup defaults to the local
Streamable HTTP gateway at http://127.0.0.1:37889/mcp; existing stdio wiring
remains valid unless the user explicitly migrates or rolls back.
harness-mem setup --platform codex
harness-mem doctor --platform codex
Rollback to stdio:
harness-mem mcp-config --transport stdio --client codex --write
If Codex reports url is not supported for stdio, inspect the
[mcp_servers.harness] stanza before debugging the daemon. A single stanza must
be either HTTP (url + bearer_token_env_var) or stdio (command/args/env);
never leave both shapes in one block.
Cursor is a Tier 2 supported local client. Use the repo/source setup flow, not an installed user skill copy:
harness-mem setup --platform cursor
harness-mem doctor --platform cursor
Cursor uses user-scoped ~/.cursor/mcp.json with
mcpServers.harness-mem for MCP search. Cursor conversation capture uses
official Cursor Hooks via ~/.cursor/hooks.json and the local hook spool; it is
not the Codex local Streamable HTTP MCP default. After setup, Cursor may need an
MCP reload, window reload, restart, or a new chat/session before the
harness-mem MCP server appears.
harness_mem_resume_pack(project, session_id) โ Get cross-platform resume context at session startharness_mem_search({ query, project }) โ Find relevant memories by natural language query, scoped to the current projectharness_mem_timeline โ Expand temporal context around scoped search resultsharness_mem_get_observations โ Get full observation text for specific entriesBefore any search-like call, resolve project from the current cwd/repo or from the project name the user mentioned. Do not use unscoped search when a project can be inferred. In parallel Claude / Codex projects, search the current project first and only broaden after the scoped result is insufficient.
S127 makes search safer by keeping heavy retrieval off the daemon main loop. Treat these responses as normal control signals:
harness_mem_search_facets is a scoped refinement tool. Do not call it with no arguments. Pass at least query, project, or tenant/access scope. An unscoped call returns 400 with search_facets_unbounded; narrow the request instead of retrying globally.harness_mem_search can return 503 (search_offload_queue_full, search_offload_unavailable, or similar). This means the daemon is applying backpressure so it does not freeze; it is not proof that memory is absent.503, retry once with a narrower query, the current project, and a smaller limit. If lexical evidence is enough, use vector_search=false. If it still returns 503, say memory search is temporarily busy and continue from SSOT/current files.project=/path/to/repo, project=unknown, hits=3, or 503 backpressure) so the user can tell whether the answer came from the right project.harness_mem_resume_pack(project, session_id) to load contextharness_mem_record_checkpoint(...) at important milestonesharness_mem_finalize_session(session_id) for summary generationharness_mem_search โ 3-layer progressive search (Step 1: candidate IDs)harness_mem_timeline โ Temporal context expansion (Step 2)harness_mem_get_observations โ Full text retrieval (Step 3)harness_mem_resume_pack โ Cross-platform session resume contextharness_mem_record_event โ Record arbitrary memory eventsharness_mem_record_checkpoint โ Record milestone checkpointsharness_mem_sessions_list โ List active sessionsharness_mem_session_thread โ Get events within a sessionharness_mem_finalize_session โ End session with summaryharness_mem_search_facets โ Get scoped search facets; never call without query, project, or tenant/access scopeharness_mem_health โ Daemon health checkharness_mem_admin_metrics โ Usage metricsharness_mem_admin_consolidation_run โ Trigger memory consolidationharness_mem_admin_consolidation_status โ Check consolidation queuetags (categorization)privacy_tags (access control)no_mem, block, skip, secret_blockprivate, sensitive, secret