rawmem

io.github.Liyuan1992Published by GitHub account Liyuan1992v0.7.1Updated Oct 25, 2026

Read-only MCP access to a local append-only evidence ledger for AI agent sessions.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

rawmem is a local, read-only MCP adapter over an append-only evidence ledger that records AI agent sessions, shell commands, file changes and browser clips.

What you can do
Read path-free ledger status and health information from the local evidence store, without exposing filesystem paths or captured text bodies by default. Retrieve a bounded set of recent events, with summaries by default and raw text only when an explicit read:full scope is granted. List archive metadata for sealed, read-only historical ledgers. The ledger itself is filled by a separate background daemon that tails Claude Code, Codex, Cursor and other session logs, shell history, Git hooks, file watchers and a token-protected browser capture endpoint; the MCP server only queries it.
When to use it
Useful when you want an assistant to look back at what happened in earlier coding sessions, commands or project changes without re-reading raw logs, and you already run the rawmem capture daemon locally. It is a query layer, not a memory-promotion or summarization tool.
Requirements
Runs as a local stdio process on the user's machine (desktop only). The MCP extra must be installed, for example via the Python package with the mcp extra or the provided MCP bundle; the README lists Python 3.10+ and Git for source installs. A populated ledger at the default location or an explicit ledger path is needed for meaningful results. No API keys or environment variables are declared.
Before you install
The ledger holds private text, paths, command output and work context, so treat the local store as sensitive; the README notes .rawmem is Git-ignored for this reason. Raw event bodies are exposed only under an explicit read:full scope, so grant it deliberately. Background capture is opt-in and clipboard polling is off by default; browser capture needs a local token. The hash chain is tamper-evidence only, not a security boundary.

Installation

In SourceWeft

  1. Open rawmem in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

rawmem

English | 简体中文

rawmem is a tiny local-first evidence ledger for AI and human workflows.

The idea is deliberately small:

Store now, understand later.

AI memory systems often start by summarizing. rawmem starts one layer lower: append-only raw evidence. A chat turn, a 2px UI tweak, a bug fix, a command run, a git snapshot, a browser clip, or a coding-agent completion can all become the same kind of local event.

The hard boundary is simple: capture is not recall. The ledger is a source layer. Review, filtering, MemoryDSL conversion, preference mining, and project rules can be derived later.

Why This Exists

Small facts look noisy alone. Repeated across time and projects, they become patterns:

  • "This icon is too small; make it 2px bigger."
  • "The AI forgot to update the desktop package again."
  • "This project prefers append-only bug records."
  • "The same class of boundary bug appeared in three repos."

Disk is cheap. Missing history is expensive.

Install

New to programming? Choose the Windows app (EXE). An EXE is a Windows program you open by double-clicking. Running it requires no Python installation or terminal commands.

Who it is forChooseRequirements
Windows users who want a graphical appWindows EXE previewA built rawmem.exe; no Python required
Developers who want commands or integrationsPython CLIPython 3.10+ and Git for the source installation below

Choose one approach; you do not need both. There is currently no downloadable release of the new EXE preview. A developer must build it from source first. Users unfamiliar with programming can wait for an EXE release instead of following the Python commands below.

Windows app (EXE preview)

Once you have a built rawmem.exe, double-click it, choose a storage folder, decide whether to start at logon, and click to begin recording. Browser saving requires the optional extension. See Windows recorder for setup and build instructions. This preview is unsigned and the extension still requires manual developer-mode installation.

Python CLI (for developers)

EXE users can skip this section. With Python 3.10+ and Git installed, run these commands in PowerShell:

powershell
git clone https://github.com/Liyuan1992/rawmem.gitcd rawmempython -m pip install --user -e .

The core runtime has no third-party dependencies. DeepSeek Harness compressed session capture and the MCP server are optional extras:

powershell
python -m pip install --user -e ".[deepseek-harness,mcp]"

To install the published v0.7.1 wheel without cloning the repository:

powershell
python -m pip install "rawmem[deepseek-harness,mcp] @ https://github.com/Liyuan1992/rawmem/releases/download/v0.7.1/rawmem-0.7.1-py3-none-any.whl"

Make sure the user Scripts directory (e.g. %APPDATA%\Python\Python312\Scripts) is on PATH so rawmem works from any directory.

One-Time Setup

powershell
rawmem setup --global --install-startup --dry-run  # inspect first; writes nothingrawmem setup --global --yes           # global config + git hooks for all reposrawmem setup --install-startup --yes  # run the daemon headless at every logonrawmem setup --start-daemon           # start it right nowrawmem config --show-browser-token    # paste into the browser extension optionsrawmem doctor                         # verify the complete installation

After this the daemon passively tails Claude Code, Codex, and Cursor sessions, tails PowerShell history, watches configured directories, and serves the browser-capture endpoint — with zero per-event action from you. Clipboard polling is available but disabled by default; enable it explicitly in config or with rawmem config --include-clipboard. The guiding principle is passive over self-report: evidence is pulled from logs other tools already write, not pushed by agents remembering to report back.

See docs/SETUP.md for the full setup matrix and the browser extension.

For DeepSeek Harness capture plus bounded read-only MCP access, see docs/DEEPSEEK_HARNESS.md.

[rawmem DeepSeek Harness demo]

Commands

Background capture (the primary path):

powershell
rawmem daemon              # run all background surfaces in one processrawmem daemon --status     # task counters, errors, last run timesrawmem doctor              # config, storage, daemon, token, startup, hooks, eventsrawmem doctor --strict     # warnings also produce a nonzero exit coderawmem sync                # one manual tailer passrawmem sync --backfill     # first run: also ingest existing historyrawmem config --disable-clipboardrawmem config --rotate-browser-token

Preview or remove integrations:

powershell
rawmem setup --global --install-startup --dry-runrawmem uninstall --dry-runrawmem uninstall                    # disables integrations; keeps ~/.rawmemrawmem uninstall --remove-home --yes  # also deletes the ledger and local state

Inspect the ledger:

powershell
rawmem tail --limit 10rawmem tail --source claude-code --limit 5rawmem tail --project rawmem --type agent_user_turn --jsonrawmem verify --jsonrawmem export --cursor-file .rawmem\consumer-cursor.json --limit 100rawmem seal --yes --json            # unchanged read-only archive + linked active ledgerrawmem archives --json              # metadata-only derived archive registryrawmem export --archive .rawmem\archives\old.jsonl  # explicit; metadata-only default

rawmem export uses the stable rawmem.cursor.v1 contract and never needs to load the whole ledger. Cursors bind to a ledger identity plus a byte offset and boundary hash, so truncation, replacement, or rotation is reported explicitly instead of silently skipping or duplicating evidence. See docs/LEDGER_PROTOCOL.md.

rawmem verify is strictly read-only: it never creates or refreshes lock/state sidecars. rawmem seal keeps historical bytes unchanged, records the full verification report and every accepted previous_hash_mismatch, marks the old ledger ReadOnly on Windows, and creates a chain-complete active ledger at the same configured path. Archive reads require --archive; they hash the complete archive before returning results, default to a body-free metadata projection, and surface recorded integrity warnings.

Manual and scripted capture:

powershell
rawmem capture --source manual --type note --text "First rawmem event""The button should be 2px larger." | rawmem capture --source clipboard --type ui_feedback --stdinrawmem ingest --file event.json"Selected page text" | rawmem clip --stdin --url "https://example.com"rawmem run --source terminal -- python --versionrawmem git-snapshot

Current Coverage

Capture preserves complete supported text without a character cap, including when old configurations still contain max_chars. Source batch sizes are processing budgets and never split complete records. Browser capture saves only the loaded document on an explicit click; it does not fetch hidden history.

SurfaceHowWhat lands in the ledger
Claude Code sessionsdaemon tailer (zero friction)user/assistant turns, project, session, branch
Codex sessionsdaemon tailer (zero friction)user/assistant turns, project, session
Cursor agent transcriptsdaemon tailer (zero friction)user/assistant turns, workspace, session
DeepSeek Harness sessionsopt-in daemon tailer (zero friction after setup)direct user/model turns; tool name/id/status metadata only
WorkBuddy local historyopt-in daemon tailer (desktop setup enables it)5.1-style JSONL message text and source identity
OpenClaw local historyopt-in daemon tailer (desktop setup enables it)legacy JSONL and new SQLite transcript messages; shared identity dedupe
Shell commandsdaemon tailer of PSReadLine historyevery completed command line
Clipboarddaemon poller (deduped, opt-in)clipboard text changes
Git lifecycle, all repossetup --global --yes core.hooksPath hookscommit/checkout/merge/rewrite/push snapshots
File changesdaemon watcherbatched created/modified/deleted paths
Browser pagesMV3 extension (extension/) + token-protected localhost endpointselection or page text, title, URL
Any adapter/toolingest / POST /captureJSON event payloads
Manual notescapture / clip / runraw text, tags, artifacts, command results

Storage

By default, events are written to:

text
~/.rawmem/events.jsonl

Use --local to write to the current project's private ledger:

text
.rawmem/events.jsonl

Use --ledger <path> or RAWMEM_LEDGER for an explicit ledger path.

Capture policy is configured under privacy in ~/.rawmem/config.json. Optional project/path allowlists fail closed, common secret shapes are redacted before append, and artifacts default to metadata references rather than embedded content. Daemon status and rawmem doctor expose source coverage, skipped events, redactions, and cursor health without printing captured text.

.rawmem/ is ignored by Git because raw evidence can contain private text, paths, command output, and local work context.

Event Shape

Each line is JSON:

json
{  "schema": "rawmem.event.v1",  "event_id": "evt_...",  "ts": "2026-07-09T00:00:00Z",  "source": "codex",  "event_type": "task_note",  "project": "rawmem",  "cwd": "/workspace/fictional-rawmem",  "summary": "User asked for a local-first raw evidence ledger.",  "raw_text": "User asked for a local-first raw evidence ledger.",  "tags": [],  "artifacts": [],  "payload": {},  "privacy": {    "scope": "local_only",    "review_required": true  },  "previous_hash": null,  "content_hash": "..."}

The previous_hash / content_hash chain is a lightweight tamper-evidence mechanism. It is not a security boundary, but it makes accidental rewrites more visible.

Adapter Strategy

rawmem should not chase every AI tool with one giant integration. The stable piece is the ledger. Capture adapters can be small and optional:

  • CLI wrappers for Codex, Claude Code, shell commands, and build scripts.
  • Generic JSON ingest for tools like WorkBuddy, QWork, or custom scripts.
  • Git/file watchers for tools that ultimately change a repo.
  • Localhost browser capture, bookmarklets, and later browser extensions for web AI chats, issue pages, docs, and web clips.
  • App-specific adapters when a tool exposes logs, exports, plugins, or APIs.
  • Manual hotkey/clipboard capture as a low-friction fallback.

All adapters should emit the same event schema.

MCP is a query adapter, not a promotion path. rawmem-mcp exposes only path-free status, bounded recent events, and archive metadata. Summary access is the default; raw bodies require an explicit read:full scope.

Privacy Principles

  • Local first.
  • No upload by default.
  • No automatic memory promotion.
  • Background capture must be opt-in.
  • Clipboard polling is off by default.
  • Browser capture requires the local token created in ~/.rawmem/config.json.
  • The extension options page can test daemon connectivity and token acceptance.
  • Machine-wide Git hook setup requires --yes.
  • rawmem uninstall preserves captured data unless --remove-home --yes is explicit.
  • Store raw events separately from reviewed or derived memory.
  • Prefer allowlists for browser/app capture.

See PRIVACY.md and SECURITY.md before enabling background capture on a daily driver machine.

Development

powershell
$env:PYTHONPATH = "src"python -m unittest discover -s testspython scripts/open_source_audit.py

Source: README.md at commit c8351d7

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.7.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts