Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.murmur.dev/llms.txt

Use this file to discover all available pages before exploring further.

Streams live session events from a running agent. Events include assistant text, tool invocations, tool results, errors, cost updates, and PR links. The stream stays open until the session ends or you press Ctrl-C.

Synopsis

murmur session watch [flags] [slug]
On a VM, the slug is optional — omitting it watches the current agent’s own session.

Arguments

NameTypeRequiredDescription
slugstringon laptopThe agent’s slug. Optional on VMs (defaults to self).
--fromstringnoResume from a specific event ID. Default: "0" (stream from the beginning).
--jsonboolnoOutput raw JSON, one event per line. Default: false.
--workspacestringnoWorkspace name. Overrides the value from murmur.yaml.

Event kinds

Each event has a timestamp and a kind that determines which fields are present.
KindWhat it means
SESSION_STARTThe session started.
SESSION_ENDThe session ended.
ASSISTANT_TEXTThe agent produced text output.
TOOL_USEThe agent invoked a tool. Includes the tool name and input.
TOOL_RESULTA tool returned output.
TURN_COMPLETEThe agent’s turn finished. Includes the stop reason (end_turn or tool_use).
ERRORAn error occurred during the session.
COSTCumulative API cost update in USD.
PR_LINKThe agent opened a pull request. Includes the PR URL.
USER_TEXTA user message was sent to the session.
Events from sub-agents are indented and prefixed with the sub-agent identifier.

Examples

Watch a running agent

murmur session watch fix-auth
[14:32:01] session started
[14:32:03] ▍ Let me look at the auth middleware first.
[14:32:05] 🔧 Read(/src/auth/middleware.go)
[14:32:05]    → package auth\n\nimport (\n\t"context"\n\t"fmt"...
[14:32:08] ▍ The JWT expiry check is missing. I'll add it now.
[14:32:10] 🔧 Edit(/src/auth/middleware.go, ...)
[14:32:10]    → Applied edit to /src/auth/middleware.go
[14:32:15] 💰 $0.0342
[14:32:20] turn complete (end_turn)

Resume after a disconnect

When the stream disconnects, murmur session watch prints the last event ID to stderr:
--- disconnected (last-event-id: 1715692800000-3) ---
Resume from where you left off:
murmur session watch fix-auth --from 1715692800000-3

JSON output for scripting

murmur session watch fix-auth --json
{"id":"1715692800000-0","event":{"kind":"SESSION_EVENT_KIND_SESSION_START","at":"2026-05-14T14:32:01Z"}}
{"id":"1715692800000-1","event":{"kind":"SESSION_EVENT_KIND_ASSISTANT_TEXT","at":"2026-05-14T14:32:03Z","text":"Let me look at the auth middleware first."}}
Each line is a complete JSON object with an id field (the event ID) and an event field containing the session event payload.

Watch with sub-agent output

When the agent spawns sub-agents, their events appear indented with a prefix:
[14:32:01] session started
[14:32:10] ▍ I'll delegate the test writing to a sub-agent.
[14:33:01]   [add-tests] session started
[14:33:05]   [add-tests] 🔧 Read(/src/auth/middleware_test.go)
[14:33:10]   [add-tests] ▍ Adding test cases for JWT expiry.

Errors

CodeMeaningWhat to do
NOT_FOUNDNo agent with that slug exists.Check the slug. Use murmur ls to list running agents.
UNAUTHENTICATEDIdentity token is missing or expired.Run murmur auth or check your murmur.local.yaml configuration.
INVALID_ARGUMENTThe last_event_id is empty.Pass a valid event ID with --from, or omit the flag to use the default ("0").