Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add zhangfengcdt/memoir/plugin install memoirWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/zhangfengcdt/memoir/ui)<a href="https://agentmods.dev/commands/zhangfengcdt/memoir/ui"><img src="https://agentmods.dev/badge/commands/zhangfengcdt/memoir/ui/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/zhangfengcdt/memoir/ui"><img src="https://agentmods.dev/badge/commands/zhangfengcdt/memoir/ui.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00016 | $0.00837 |
| Opus 5.5 | $0.00006 | $0.00335 |
| Sonnet 5.5 | $0.00003 | $0.00167 |
| Haiku 4.5 | $0.00002 | $0.00084 |
Grade A, and why
ui scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 65 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Launch (or re-open) the memoir web UI for the current project's store as a detached background server.
Step 1 — Derive the store path
Run this Bash call to resolve the store path (respects $MEMOIR_STORE, otherwise falls back to the per-project derivation):
if [ -n "${MEMOIR_STORE:-}" ]; then echo "$MEMOIR_STORE"; else bash "${CLAUDE_PLUGIN_ROOT}/scripts/derive-store-path.sh"; fi
Capture stdout as <STORE_PATH>. The launch helper in Step 2 will auto-bootstrap the store if it doesn't exist yet (idempotent — same logic SessionStart uses), so you don't need to pre-check.
Step 2 — Launch (or re-open) the UI
One Bash call does the whole job — the helper handles reuse, launch, and the browser open:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/memoir-ui-ctl.sh" start "<STORE_PATH>"
The helper prints a single-line JSON document on stdout:
{"pid": 12345, "port": 62891, "url": "http://localhost:62891/?store=…&readonly=1&usellm=0", "store": "/abs/path", "started": "...", "log": "/tmp/...", "reused": false}
reused: true— an existing server for this store was already running; the helper just re-opened the browser tab.reused: false— the helper launched a fresh detached server; the CLI opens the browser automatically.
Pipe the output through python3 -c 'import json,sys; d=json.load(sys.stdin); print(d["url"]); print(d["pid"]); print("reused" if d.get("reused") else "launched")' to extract the fields you need.
Output format
First line of your reply MUST be the mode marker, one of:
[mode=ui-reopened]— helper reportedreused: true.[mode=ui-launched]— helper reportedreused: false.
Then 4–6 short lines for the user:
[mode=ui-launched]
Memoir UI available at <URL>
Store: <STORE>
Mode: readonly · LLM off (relaunch from a terminal with `memoir ui <STORE> --no-readonly --usellm` for write/search access)
PID: <PID>
Stop anytime with `kill <PID>`.
If the helper exits non-zero, print its stderr back to the user under a one-line header like UI failed to start: — don't swallow it.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 65 lines · 16 tokens per session scan A e18313926861
ui is a command published in the GitHub repository zhangfengcdt/memoir (625 stars, last pushed today), licensed Apache-2.0. It adds 16 tokens to every session and 837 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
minutes-ideas
Surface recent voice memos and ideas captured from any device. Use when the user asks "what ideas did I have?", "what were my recent memos?", "what did I record while walking?", or wants to recall a captured thought.
learn
Force claude-smart to extract learnings from this session now.
memory-store
Store an insight, decision, or pattern to memory.
analyze-context
USE WHEN you want to analyze project context before starting work on a task. Calls context + recall, then synthesizes goals, decisions, gotchas, and relevant memories into a pre-task brief.
cc-memory
Configure persistent memory that survives across sessions using a layered approach: split rule files for always-loaded context, auto-memory for organic learning, and optional MCP-backed long-term memory for large codebases.
lians-recall
Recall current (non-stale) facts from Lians memory, optionally as-of a past date.