agent-os / packages
rivet-dev/agent-os/packages/CLAUDE.md
- Client packages must stay same-version with the sidecar: assert the single protocol version integer, and do not add wire back-compat, runtime negotiation, or converters. - Generated client layers return raw generated protocol types. The embedded AgentOs facade is publicly exported from @rivet-dev/agentos-core. - Generic agentos clients must stay application-agnostic and forward only the sandbox protocol. - agentos packages must never depend on agent-os packages; dependency direction is strictly agent-os to agentos and must be CI-enforced after the split. -…
What's in it
- agentOS Packages
- React UI (dashboard inspector)
# agentOS Packages - Client packages must stay same-version with the sidecar: assert the single protocol version integer, and do not add wire back-compat, runtime negotiation, or converters. - Generated client layers return raw generated protocol types. The embedded `AgentOs` facade is publicly exported from `@rivet-dev/agentos-core`. - Generic agentos clients must stay application-agnostic and forward only the sandbox protocol. - agentos packages must never depend on agent-os packages; dependency direction is strictly agent-os to agentos and must be CI-enforced after the split. - The sidecar remains the source of truth for runtime behavior; TypeScript package code should forward generated requests instead of reimplementing sidecar state machines. - Language modules own their ecosystem's common end-to-end workflows: source and file execution, value evaluation, dependency installation, project entry points, and standard module/script workflows must not require users to invoke `node`, `python`, `python -m`, `npm`, or `pip`. Add typed, injection-safe helpers for stable intents, not one method per CLI flag; keep `exec`, `execArgv`, and `spawn` as the uncommon-command escape hatch. - Cron and VM configuration types are Rust-owned after the split; TypeScript packages may re-export or mirror them only in lockstep. ## React UI (dashboard inspector) - Never `setState` from a `useEffect` to derive state from props, query data, or other state. Derive it during render (`useMemo`), or reset it during render by comparing against the value it is keyed on. Effects are for subscriptions, timers, and imperative cleanup only. - Server mutations use `useMutation`; do not hand-roll `busy`/`error` state around an `async` handler. - Coupled state that always changes together belongs in one `useReducer` (or one state object), not in a pile of independent `useState` calls updated in sequence. - Imperative browser resources (object URLs, observers, listeners) belong in a self-contained hook that owns both creation and cleanup.
More agent context in rivet-dev/agent-os
12 other files this repository gives its agents.
Skill
- launch-graphics.claude/skills/launch-graphics/SKILL.md
- publish-registry.claude/skills/publish-registry/SKILL.md
- release-preview.claude/skills/release-preview/SKILL.md
- release.claude/skills/release/SKILL.md
- sanity-check.claude/skills/sanity-check/SKILL.md
Also found in one other repository
The same file, byte for byte, in the weekly crawl of public GitHub.
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

