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
| Name | Type | Required | Description |
|---|
slug | string | on laptop | The agent’s slug. Optional on VMs (defaults to self). |
--from | string | no | Resume from a specific event ID. Default: "0" (stream from the beginning). |
--json | bool | no | Output raw JSON, one event per line. Default: false. |
--workspace | string | no | Workspace name. Overrides the value from murmur.yaml. |
Event kinds
Each event has a timestamp and a kind that determines which fields are present.
| Kind | What it means |
|---|
SESSION_START | The session started. |
SESSION_END | The session ended. |
ASSISTANT_TEXT | The agent produced text output. |
TOOL_USE | The agent invoked a tool. Includes the tool name and input. |
TOOL_RESULT | A tool returned output. |
TURN_COMPLETE | The agent’s turn finished. Includes the stop reason (end_turn or tool_use). |
ERROR | An error occurred during the session. |
COST | Cumulative API cost update in USD. |
PR_LINK | The agent opened a pull request. Includes the PR URL. |
USER_TEXT | A 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
| Code | Meaning | What to do |
|---|
NOT_FOUND | No agent with that slug exists. | Check the slug. Use murmur ls to list running agents. |
UNAUTHENTICATED | Identity token is missing or expired. | Run murmur auth or check your murmur.local.yaml configuration. |
INVALID_ARGUMENT | The last_event_id is empty. | Pass a valid event ID with --from, or omit the flag to use the default ("0"). |