What event streams are
Event streams are read-only notifications emitted by Radius. They let another process observe CLI commands and browser workspace changes as they happen. They are not hooks: receiving an event does not run a command, intercept a change, or give the subscriber control of a tab. Start the stream and leave it running:workspace.snapshot for every ready
browser window. It then prints new command and workspace events as they happen:
WINDOW_NOT_FOUND or GROUP_NOT_FOUND.
Command lifecycle events
When an automation client sends a command to Radius, the normal lifecycle is:radius tab open ...:
command.startedincludes the command that Radius began executing.command.finishedincludes the command’s returned value, such as a new tab ID.command.failedincludes the structured error.requestIdconnects the started event to its finished or failed event.timestamprecords when each event was emitted.
pnpm install emits nothing. A
radius tab open ... command inside that script does emit lifecycle events.
Workspace events
Radius also emits state notifications:workspace.snapshotis the current state sent when a subscriber connects.window.readymeans a browser window’s automation bridge is available.workspace.changedmeans tabs, groups, focus, ordering, or splits changed.
workspace.changed can be caused by either a CLI command or an action in the
Radius interface. Its payload is a snapshot of the window’s current tabs,
groups, split layout, active tab, and workspace revision.
For a group-filtered subscriber, subsequent workspace.changed payloads use
the same group-only shape as the initial snapshot. The event scope can include
both the previous and current group when a tab moves between groups.
Event shape
Every event uses the same outer envelope:schemaVersionidentifies the event envelope contract.eventidentifies what happened.timestamprecords when Radius emitted it.scope.instanceIdidentifies the Radius instance and is always present.scope.windowIdidentifies the browser window when the event is associated with one.scope.groupIdsandscope.tabIdslist the affected resources in stable, sorted order.- The top-level
windowIdmirrorsscope.windowIdfor compatibility. payloadcontains fields specific to that event type.
scope.windowId. Group filters match
scope.groupIds. Events without a matching window or group are omitted.
JSON Lines keeps each event on one line, so logging tools and long-running
processes can read the stream one event at a time.
Who should use this
This is an experimental feature intended for automation hooks. Let us know at founders@radiusbrowser.com if you have specific feature requests or use cases for event streams.Events describe activity that has already occurred. Subscribing does not give
the subscriber ownership of tabs, intercept or cancel changes, or cause Radius
to keep enforcing a layout. A hook can react by running a separate Radius CLI
command.