| name | server |
| description | This skill should be used when the user asks to "start the memory server", "open the memory browser", "visualize my memory", "stop the tm server", "is the memory server running", or invokes /tm:server [start|stop|status]. Manages a local read-only HTTP browser for the whole store - global and project memory, paginated lists, keyword search - at http://127.0.0.1:<port>/. Starting is confirmed with the port and store path; stop and status act on a clear ask. |
| argument-hint | [start [port] | stop | status] |
tm — server (local memory browser)
A read-only single-page browser for the whole store: scopes in a sidebar (global + every
project with counts), paginated note/log/archive lists, MEMORY.md one tab away, keyword
search across every file, rendered markdown with clickable wikilinks. Runs on
http://127.0.0.1:<port>/ — loopback only, GET only; it can never write memory, so every
write gate stays where it belongs (in the skills). Any session can manage it: state lives in
${XDG_CONFIG_HOME:-$HOME/.config}/turing-mem/server.json, never inside the store.
Guard (run first, always)
Run ${CLAUDE_PLUGIN_ROOT}/scripts/tm-guard.sh "$PWD" and read its KEY=VALUE output.
The server needs only a resolvable store: if TM_STATUS is NEED_INIT/NEED_ADOPT, stop
and follow the repair flows in <MEMORY_DIR>/references/bootstrap.md (plugin copy at
${CLAUDE_PLUGIN_ROOT}/references/bootstrap.md if the store does not exist yet).
NEED_MIGRATE/READ_ONLY do not block — the browser is read-only by construction.
PROJECT_EXISTS=false does not block either; the browser shows the whole store.
Steps
Interpret $ARGUMENTS: start [port], stop, status, or empty (treat as status,
then offer start if stopped).
-
status — run ${CLAUDE_PLUGIN_ROOT}/scripts/tm-server.sh status and report the
KEY=VALUE block in one or two lines (running: URL + store; stopped: say so and offer start).
-
start — suggestions first, then one confirm:
- Proposed port: the user's argument, else
8765. If tm-server.sh start later reports
the port busy, suggest the next ones (8766, 8767) rather than failing dry.
- Confirm via AskUserQuestion — "start the memory browser on http://127.0.0.1:/
for <MEMORY_DIR>?" (start / different port / cancel). Loopback-only and read-only are
worth one clause in the description.
- Run
${CLAUDE_PLUGIN_ROOT}/scripts/tm-server.sh start <port> and relay the URL.
Mention the browser UI basics once: sidebar scopes, / to search, MEMORY tab.
-
stop — on a clear ask, run ${CLAUDE_PLUGIN_ROOT}/scripts/tm-server.sh stop and
confirm it reported SERVER=STOPPED. No confirmation gate: stopping is trivially
reversible and loses nothing.
The server reads the store live from disk — new checkpoints and notes appear on refresh;
there is nothing to restart after memory writes.
Codex fallback
Same scripts, installed at ~/.agents/skills/scripts/; run tm-server.sh directly and
confirm the start in plain text ("start on port 8765? yes/no").