Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d534a85
docs: specify Wasmtime executor architecture
NathanFlurry Jul 17, 2026
050f7e4
refactor: unify executor host services
NathanFlurry Jul 18, 2026
48e2fb9
feat: add Wasmtime executor
NathanFlurry Jul 21, 2026
cce9c5e
perf: benchmark Wasmtime executor
NathanFlurry Jul 21, 2026
2dea285
feat: add threaded Wasmtime execution
NathanFlurry Jul 21, 2026
210e267
test: complete Wasmtime parity validation
NathanFlurry Jul 22, 2026
babf387
docs: define executor package architecture
NathanFlurry Jul 29, 2026
795c9ae
refactor: rename Tokio runtime crate
NathanFlurry Jul 30, 2026
06545ea
refactor: extract executor contract
NathanFlurry Jul 30, 2026
6e02039
refactor: split native executor packages
NathanFlurry Jul 30, 2026
8d9eca7
docs: define VM and package refactor
NathanFlurry Jul 30, 2026
2feb07a
refactor: finalize VM and executor package boundaries
NathanFlurry Jul 30, 2026
60736e0
refactor: flatten TypeScript runtime packages
NathanFlurry Jul 30, 2026
06a55e1
chore: update VM package integration and validation
NathanFlurry Jul 30, 2026
a18fba0
refactor: feature-gate embedded VM capabilities
NathanFlurry Jul 30, 2026
8b4e4b9
docs(agentos): specify static Rust actor migration
NathanFlurry Sep 2, 2026
52bf435
refactor(agentos): remove TypeScript hosted actor
NathanFlurry Sep 2, 2026
c8e76ed
refactor(agentos): remove agents and runtime socket
NathanFlurry Sep 2, 2026
597554b
feat(agentos): add Rust actor foundation
NathanFlurry Sep 3, 2026
5ef8827
feat(agentos): expose filesystem actor actions
NathanFlurry Sep 3, 2026
2134161
feat(agentos): expose process and terminal actor actions
NathanFlurry Sep 3, 2026
fbe77d7
feat(agentos): expose language execution actor actions
NathanFlurry Sep 3, 2026
29506e1
feat(agentos): expose networking previews and cron actions
NathanFlurry Sep 3, 2026
573549c
feat(agentos): install registry software from URLs
NathanFlurry Sep 3, 2026
72c18d0
feat(agentos): add process-local package cache
NathanFlurry Sep 3, 2026
c01307f
feat(agentos): add package preload coordinator
NathanFlurry Sep 3, 2026
44a75d2
feat(agentos): implement durable config replacement
NathanFlurry Sep 3, 2026
9516894
feat(agentos): prototype actor TypeScript bindgen
NathanFlurry Sep 3, 2026
68ca844
refactor(agentos): remove stale apps package
NathanFlurry Sep 3, 2026
0f6ae2d
refactor: replace closed trait objects with enums
NathanFlurry Jul 30, 2026
3e87753
feat: integrate Wasmtime VM runtime with current agentOS API
NathanFlurry Sep 26, 2026
6463e04
refactor(agentos): migrate integrations and publishing
NathanFlurry Sep 3, 2026
3566703
feat: integrate Wasmtime VM runtime with current agentOS API
NathanFlurry Sep 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
52 changes: 0 additions & 52 deletions .claude/skills/gigacode-api-sanity/SKILL.md

This file was deleted.

4 changes: 0 additions & 4 deletions .claude/skills/gigacode-api-sanity/agents/openai.yaml

This file was deleted.

147 changes: 22 additions & 125 deletions .claude/skills/sanity-check/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,142 +1,39 @@
---
name: sanity-check
description: Run the deferred AgentOS E2E smoke test from public npm packages. Use when the user asks to sanity check, smoke test, or verify a release works.
description: Run the deferred agentOS VM smoke test from public npm packages. Use when the user asks to sanity check, smoke test, or verify a release works.
---

# Sanity Check

This is a P6/full-validation check. It installs from npm in a fresh project,
boots an AgentOS VM, spawns a Pi agent session, writes a file, reads it back,
and verifies the contents.
This is a full-validation check. Install `@rivet-dev/agentos-core` from npm in
a fresh temporary project, boot one VM, verify filesystem and process execution,
then dispose it cleanly.

## Usage
- `/sanity-check` — run in a temp directory on the host
- `/sanity-check docker` — run inside a `node:22` Docker container
- `/sanity-check <custom instructions>` — extra instructions, such as "use rc.3", "use pnpm", or "test on node 20"
## Test program

## What it tests

1. `npm install` of `@rivet-dev/agentos-core`, `@rivet-dev/agentos-pi`, `@agentos-software/common` from the public npm registry
2. Boot a VM with WASM coreutils (bash, cat, sh, etc.) and the Pi SDK ACP adapter
3. Create a Pi agent session with a real Anthropic API key
4. Send a prompt that uses the **write tool** to create `/tmp/test.txt` with "Hello from Agent OS!" and the **bash tool** to run `cat /tmp/test.txt`
5. Verify the file contents from the host side via `vm.readFile()`

## Requirements

- `ANTHROPIC_API_KEY` must be set in the environment. If not set, load it from `~/misc/env.txt`.
- Node.js 22+ (or Docker with `node:22` image)

## Steps

### 1. Set up the test project

Create a temp directory (e.g. `/tmp/agentos-sanity-XXXX`) with two files:

**package.json:**
```json
{
"name": "agentos-sanity-check",
"private": true,
"type": "module",
"dependencies": {
"@rivet-dev/agentos-core": "*",
"@rivet-dev/agentos-pi": "*",
"@agentos-software/common": "*",
"@mariozechner/pi-coding-agent": "^0.60.0",
"@agentclientprotocol/sdk": "^0.16.1"
}
}
```

If the user specifies a version (e.g. "use rc.3"), pin `@rivet-dev/agentos-core` and `@rivet-dev/agentos-pi` to that version.

**test.mjs:**
```js
import { AgentOs } from "@rivet-dev/agentos-core";
import common from "@agentos-software/common";
import pi from "@rivet-dev/agentos-pi";

const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;
if (!ANTHROPIC_API_KEY) {
console.error("ANTHROPIC_API_KEY is required");
process.exit(1);
}

console.log("Creating VM with common + pi...");
const vm = await AgentOs.create({ software: [common, pi] });

console.log("Creating PI agent session...");
const { sessionId } = await vm.createSession("pi", {
env: { ANTHROPIC_API_KEY },
});
console.log(`Session created: ${sessionId}`);

vm.onSessionEvent(sessionId, (event) => {
const params = event.params;
if (params?.update?.sessionUpdate === "agent_message_chunk") {
process.stdout.write(params.update.content?.text ?? "");
}
});

console.log("\nSending prompt...");
const response = await vm.prompt(
sessionId,
'Write the text "Hello from Agent OS!" to /tmp/test.txt using the write tool. Then use the bash tool to run `cat /tmp/test.txt` and tell me what it says.',
);
console.log(`\n\nPrompt completed: ${response.stopReason}`);

console.log("\nVerifying file...");
const vm = await AgentOs.create();
try {
const data = await vm.readFile("/tmp/test.txt");
const text = new TextDecoder().decode(data);
console.log(`File contents: "${text.trim()}"`);
if (text.includes("Hello from Agent OS!")) {
console.log("\n✅ E2E TEST PASSED");
} else {
console.log("\n❌ E2E TEST FAILED: wrong content");
process.exit(1);
await vm.filesystem.writeFile("/tmp/test.txt", "Hello from agentOS!\n");
const result = await vm.process.exec("cat /tmp/test.txt");
if (result.exitCode !== 0 || result.stdout !== "Hello from agentOS!\n") {
throw new Error(JSON.stringify(result));
}
} catch (err) {
console.log(`\n❌ E2E TEST FAILED: ${err.message}`);
process.exit(1);
console.log("agentOS smoke passed");
} finally {
await vm.dispose();
}

vm.closeSession(sessionId);
await vm.dispose();
```

### 2. Run the test

**Default (temp dir on host):**
```bash
cd /tmp/agentos-sanity-XXXX
npm install
node test.mjs
```

**Docker mode:**
```bash
docker run --rm \
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
-v /tmp/agentos-sanity-XXXX:/app \
-w /app \
node:22 \
bash -c "npm install && timeout 120 node test.mjs"
```

### 3. Verify results

- LLM response should stream to stdout showing the agent using write and bash tools
- Final output must include `✅ E2E TEST PASSED`
- If it fails, report the error and the stderr output

### 4. Clean up

Remove the temp directory after the test completes.

## Rules
- Always use a fresh temp directory — never run in the repo itself.
- Always install from the public npm registry — never use local links.
- If Docker mode, clean up the container's node_modules via `docker run --rm` before removing the host temp dir.
- Report the installed versions of `@rivet-dev/agentos-core` and `@agentos-software/common` in the output.

- Always use a fresh temporary directory, never the repository.
- Install from the public npm registry without local links.
- Report the installed `@rivet-dev/agentos-core` version.
- Use Node.js 22 or newer.
- Apply a two-minute outer timeout.
- Remove the temporary directory after completion.
- Do not install registry software from npm. Core ships its default immutable
`.aospkg` bundle.
18 changes: 0 additions & 18 deletions .claude/skills/update-acp/SKILL.md

This file was deleted.

2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ packages/core/src/agent-os.ts linguist-detectable=true
packages/core/src/sidecar/** linguist-detectable=true

# ...and the core binary-resolver shim.
packages/sidecar-binary/index.js linguist-detectable=true
packages/sidecar/index.js linguist-detectable=true

# Generated, vendored, and documentation content (also covers non-JS/TS files).
*.d.ts linguist-generated
Expand Down
28 changes: 17 additions & 11 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,22 @@ jobs:
- uses: dtolnay/rust-toolchain@nightly
with:
targets: wasm32-wasip1
- run: pnpm install --frozen-lockfile --filter '@rivet-dev/agentos-runtime-benchmarks...' --filter '@rivet-dev/agentos-runtime-core...' --filter '@rivet-dev/agentos-build-tools'
- run: cargo build --release -p agentos-native-sidecar
- run: cargo build --release -p agentos-native-baseline
- run: cargo build --release --target wasm32-wasip1 -p agentos-native-baseline
- run: pnpm install --frozen-lockfile --filter '@rivet-dev/agentos-benchmarks...' --filter '@rivet-dev/agentos-core...' --filter '@rivet-dev/agentos-build-tools'
- run: cargo build --release -p agentos-sidecar
- run: cargo build --release -p agentos-benchmark-baseline
- run: cargo build --release --target wasm32-wasip1 -p agentos-benchmark-baseline
- run: make -C toolchain pr-commands
- run: node packages/runtime-core/scripts/copy-wasm-commands.mjs --require-coreutils
- run: pnpm --dir packages/runtime-core build
- run: pnpm --dir packages/runtime-benchmarks bench:check
- run: pnpm --dir packages/runtime-benchmarks bench:gate
- run: node packages/core/scripts/copy-wasm-commands.mjs --require-coreutils
# Benchmarks use NodeRuntime and the staged command binaries above; the
# Core packaging build also requires .aospkg artifacts that this job does
# not build or exercise.
- name: Build Core benchmark runtime
run: |
pnpm --dir packages/core build:protocols
pnpm --dir packages/core exec tsc
- run: pnpm --dir packages/benchmarks bench:check
- run: pnpm --dir packages/benchmarks bench:gate
env:
AGENTOS_SIDECAR_BIN: ${{ github.workspace }}/target/release/agentos-native-sidecar
NATIVE_BASELINE_BIN: ${{ github.workspace }}/target/release/agentos-native-baseline
NATIVE_BASELINE_WASM: ${{ github.workspace }}/target/wasm32-wasip1/release/agentos-native-baseline.wasm
AGENTOS_SIDECAR_BIN: ${{ github.workspace }}/target/release/agentos-sidecar
NATIVE_BASELINE_BIN: ${{ github.workspace }}/target/release/agentos-benchmark-baseline
NATIVE_BASELINE_WASM: ${{ github.workspace }}/target/wasm32-wasip1/release/agentos-benchmark-baseline.wasm
Loading
Loading