dots events tail
The live-event reader — dots events tail prints every frame one of the three server-sent event streams carries and runs until stopped.
dots events tail [options] <stream> [target...]
The live-event reader. Where dots wait blocks until one condition occurs and exits, dots events tail subscribes to one of the three server-sent event streams and prints every frame it carries as it arrives, through the ordinary --format pipeline, running in the foreground until it is stopped. Each printed record names the stream, the frame's event id (null where the stream carries none), the event name, and the payload — parsed as JSON where it is JSON, raw text where it is not.
The streams send a keepalive comment every 30 seconds; the reader consumes those and never prints them. A cleanly closed stream — a proxy idling out the connection — resubscribes after a short pause, while a transport error surfaces as the failure it is, and a refusal on the subscription request (401, 404) maps to the same exit class every other command's refusal takes.
Arguments:
<stream>— Which stream to read:global,presence, oronboarding. An unknown stream is a typed usage error naming the three.[target...]— The stream's target: the<dotabase-slug> <rowHumanId>pair forpresence;globalandonboardingtake none.
Options:
--after <id>— Resume from this event id: events between invocations are replayed instead of missed. Only the replay-capable streams (global,onboarding) accept it.
Streams
Global
dots events tail global --after <notificationId>
Tails this actor's notification events — created, updated, read, dismissed — from the global stream. Every frame carries the notification row id as its event id, which is the replay anchor a reconnect resumes from.
Presence
dots events tail presence <dotabase-slug> <rowHumanId>
Tails the live collaborator roster on one row: each frame is the current set of active sessions there, this tail's own connection included. Presence is ephemeral who-is-here state with no event ids, so this stream carries no --after.
Onboarding
dots events tail onboarding
Tails the actor's onboarding run events. The stream replays the actor's latest run on connect and then stays live, so a fresh tail prints the replayed history first; --after naming the last seen event id narrows the replay to what follows it.
Reconnect And Replay
The three streams' replay contracts are not uniform, and the reader honours each one's actual contract rather than assuming one. A cleanly closed global or onboarding stream resubscribes sending the last seen event id as the Last-Event-ID header — the global stream's route also reads the ?lastEventId= query anchor, so its anchor rides both — and resumes where it left off; --after seeds that same anchor for the first subscription. The presence stream emits no event ids and its route declares no replay, so a presence resubscription is live-only, and --after against it is a typed usage error naming the stream rather than a silently ignored flag.
Exemption
dots events tail is CLI-only and carries no MCP twin, named-exempt under the streaming axis beside dots wait: it holds an open stream until it is stopped, and a stdio tool call cannot hold a stream. For the same reason it is excluded from dots batch, which has no stop signal to give a foreground reader. Every other family is listed in CLI Reference.
dots events tail · This page in the graph
- documentstopackages/cli/src/commands/events.ts
- mentionstoDOT
- relevant totodots wait
- referencestoCLI Reference
- referencesfromCLI Reference