rekord
Search⌘K
1
// live agent control

Live agent control (MCP)

rekord mcp runs a Model Context Protocol server over stdio. An AI agent (Claude Code, Cursor, …) launches terminal programs, sends input, waits for output, and reads a deterministic screen frame — instead of guessing from a raw byte stream. Every agent session is also recorded, so you can export, replay, and handoff it afterward.

Start the server

$ rekord mcp
flagdefaultdescription
--root~/.rekord/sessionsWhere sessions are recorded.
--config~/.rekord/rekord.yamlConfig file (redaction patterns).
--no-redactfalseDisable redaction of captures and logs.

Register with Claude Code

$ claude mcp add rekord -- rekord mcp

Or add it to your MCP client config:

{
  "mcpServers": {
    "rekord": { "command": "rekord", "args": ["mcp"] }
  }
}

Tools

toolpurpose
launchStart a program in a new session (name, command, cols, rows, cwd, env).
sendSend text and/or named keys (enter, tab, esc, ctrl-c, arrows, …).
captureReturn the current screen frame (grid + cursor). raw: true for unredacted text.
wait_textBlock until the screen contains text, the process exits, or timeoutMs elapses.
wait_idleBlock until output is quiet for quietMs.
wait_exitBlock until the process exits.
logsReturn the retained output transcript (maxBytes, raw).
resizeResize the terminal viewport.
stopTerminate a session and finalize its recording.
list / statusInspect active and finished sessions.

Every wait returns a reason: matched, idle, exited, or deadline.

Memory tools

Rekord Memory adds tools so agents can read and write persistent project memory and resume interrupted work.

toolpurpose
memory_writePersist a project memory.
memory_searchSearch project memory.
memory_listList memories.
memory_getRead one memory by id.
memory_resolveMark a memory or blocker resolved.
memory_projectsList every project that has stored memory.
snapshot_createCapture git-aware project state.
resume_contextReturn latest snapshot, relevant memories, changed files, patches, blockers, and continuation context.

Example flow

  1. launch{ "name": "build", "command": ["npm", "run", "dev"] }
  2. wait_text{ "name": "build", "text": "ready in", "timeoutMs": 30000 }
  3. capture{ "name": "build" } → inspect the frame
  4. stop{ "name": "build" }
▋ privacy

capture and logs are redacted with your configured patterns by default. Pass raw: true (or start the server with --no-redact) only when you need the unredacted screen — transcripts may contain secrets.