A server protocol for durable actors.
The connection can end. The work can continue. Discover what an actor offers, send commands, read saved outcomes, and return to the same actor session.
Capability discovery
An optional setup contract reveals the actor’s exact profile and a bounded view of its commands. A large actor returns stable summary pages. The client reads details and schema resources only for the commands it needs.
Discovery describes commands. It does not authorize them.
Follow discoveryAfter setup, five core operations connect your client to the actor’s saved record.
Inspect the messages| Purpose | Request | Reply |
|---|---|---|
| Open or return to a session | session.open | session.opened |
| Ask the actor to do work | command | receipt |
| Read current saved state | view.read | view |
| Read missed events | updates.read | updates |
| Check a command's result | outcome.read | outcome |
Command admission
The server saves acceptance before replying. It records the final outcome separately. If effects cannot be established, the outcome is uncertain.
Understand the messagescmd-042Progress is temporary. The outcome is saved.
Connection recovery
The server retains ordered updates when a connection ends. A returning client reads after the last update it applied.
Read the recovery rulesShared sessions
A web app, command-line tool, and service can use the same actor session. The server checks access and gives each client the same ordered history.
Understand shared sessionsChoose Elixir or TypeScript. Both use the same messages and recovery rules. Elixir includes a WebSocket client. TypeScript accepts your transport. Your application supplies authenticated setup, profile rules, and durable storage.
Read the specification