Foundations
Event Stream
The Event Stream is River's nervous system. Every action that happens in your workspace — yours or River's — gets recorded in real time as a typed event with a timestamp, an actor, and a reference to whatever entity was involved.
This is not a log file you check when something breaks. It is the living memory of your workspace, and it's what makes everything else feel intelligent.
What gets recorded#
Every meaningful action emits an event:
- A document is created or edited
- An email arrives
- A task is completed
- A file is uploaded or shared
- An integration connects or disconnects
- An Agent starts a Job
- An Agent finishes a Job
- A Schedule fires
- A user opens an entity, lingers on a section, or selects text
- A Workflow node runs
Each event is a structured record: { type, timestamp, actor, entityId, payload }. Your Dataspace has its own stream — world-events:{dataspaceId} — that anyone (and any agent) with access can subscribe to.
Why this matters#
A workspace that doesn't record what happens is reactive at best. Every morning you reconstruct your context from scratch, every search starts cold, every AI conversation begins empty. River refuses that pattern.
With an Event Stream:
- Agents wake up on their own. Your Deal Researcher is subscribed to
email.receivedfrom known investors. The moment one arrives, it acts — without you asking. - Activity becomes meaningful. You can see the shape of your day, your week, your project — what was created, what was edited, what an Agent produced.
- The AI has memory. Conversations, decisions, and recent context flow into the AI's reasoning automatically.
- Signal Intelligence has substrate. Patterns over events are how River detects what matters across hundreds of small moments.
Human and AI on the same stream#
The most important property of the Event Stream is that humans and AI are first-class peers on it. A human cursor edit, an Agent's tool call, an integration's webhook firing — they are the same shape of record. No special pipeline for AI actions, no second-class status for automation.
This is why agents in River feel like collaborators, not bots. They don't sit in a different system. They live in your workspace, and they participate in the same flow of events you do.
Event types you'll see#
A small sample (the full registry is much larger):
| Type | Fired when |
|---|---|
entity.created |
Any new entity appears |
entity.updated |
Any entity changes |
email.received |
A new email arrives in a connected inbox |
task.completed |
A task is checked off |
agent.run.started |
An Agent begins a Job |
agent.run.completed |
An Agent finishes a Job |
integration.connected |
A new service is connected |
cursor.dwelled |
A user lingers on a section |
selection.made |
A user selects text or an element |
Where you actually see the stream#
You don't have to read raw events. The Event Stream powers four user-facing surfaces:
- Activity — a human-readable feed of what happened
- Notifications — the things River decided you should know about
- Agent Triggers — the events your Agents listen for
- Suggestion Tray — proactive AI nudges based on patterns in the stream
The stream itself is invisible most of the time. That's the point. It's the nervous system, not the screen.
Tips#
- Want an Agent to run when something specific happens? See Agent Triggers.
- Want to see the raw history of a single entity? Open it and check the Activity tab in its detail view.
- The stream is per-Dataspace. Personal events stay in your personal Dataspace; team events stay in the team Dataspace.