You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,6 +28,8 @@ Design constraints, invariants, and reference commands for the Rivet monorepo. F
28
28
29
29
When talking about "Rivet Actors" make sure to capitalize "Rivet Actor" as a proper noun and lowercase "actor" as a generic noun.
30
30
31
+
**Actor Runtime Socket** is the product name for the generic actor-local protocol. SQLite is its first capability and Unix sockets are its current transport; do not use "Actor SQLite UDS API" or "SQLite UDS" as the product name.
32
+
31
33
## Commands
32
34
33
35
### Build + test
@@ -196,7 +198,7 @@ When the user asks to track something in a note, store it in `~/.agents/notes/`
196
198
- rivetkit (TypeScript) owns only: workflow engine, agent-os, client library, Zod schema validation for user-defined types, and actor definition types.
197
199
- Errors use universal `RivetError` (group/code/message/metadata) at all boundaries. No custom error classes in TS.
198
200
- CBOR serialization at all cross-language boundaries. JSON only for HTTP inspector endpoints.
199
-
- Pegboard orchestrates actor exclusivity: at most one actor instance for a given actor id may be running or accessing that actor's KV at a time. `pegboard-envoy` and `envoy-client`may rely on this invariant and should not add separate KV concurrency fences for same-actor access; the lost-timeout + ping protocol is responsible for making overlapping actors impossible.
201
+
- Pegboard orchestrates actor exclusivity: at most one actor instance for a given actor id may be running or accessing that actor's storage at a time. This is the actor single-writer invariant: a Rivet Actor is the single writer for both KV and SQLite. `pegboard-envoy`, `envoy-client`, and remote/wasm SQLite may rely on this invariant and must not add envoy-protocol lease keys, engine-side transaction ownership, or separate same-actor concurrency fences. Coordinate LocalNative and remote/wasm transactions through the sameactor-local `rivetkit-core` coordinator before backend dispatch. Actor Runtime Socket `leaseKey` values identify connection-local transaction handles and never cross depot, envoy, or engine boundaries. The lost-timeout + ping protocol is responsible for making overlapping actor generations impossible.
200
202
201
203
### Monorepo orientation
202
204
@@ -226,6 +228,7 @@ When the user asks to track something in a note, store it in `~/.agents/notes/`
226
228
- Treat `envoy <-> pegboard-envoy` as untrusted.
227
229
- Treat traffic inside the engine over `nats`, `fdb`, and other internal backends as trusted.
228
230
- Treat `gateway`, `api`, `pegboard-envoy`, `nats`, `fdb`, and similar engine-internal services as one trusted internal boundary once traffic is inside the engine.
231
+
- Treat a client connected to an actor-local Unix socket as a trusted, application-local peer, not an adversarial security boundary. Socket ownership, permissions, and per-generation lifetime provide isolation. Continue enforcing framing, resource bounds, cancellation, and shutdown behavior for correctness and faulty clients, but do not assign security severity based on malicious local traffic unless this trust model changes.
229
232
- Validate and authorize all client-originated data at the engine edge before it reaches trusted internal systems.
230
233
- Validate and authorize all envoy-originated data at `pegboard-envoy` before it reaches trusted internal systems.
0 commit comments