43 lines
1.8 KiB
Markdown
43 lines
1.8 KiB
Markdown
# Sausage v3
|
|
|
|
Sausage is a world of WASI programs and durable agents. The Rust host combines a process table, a shared virtual filesystem, and a durable JavaScript harness. Agents and their programs see the same world. The filesystem prevents mistakes, not attacks between agents. The host credentials manager is the intended security boundary. Coordination (branches, subagents, reviews, the lander) runs as world extensions.
|
|
|
|
Read [Run Sausage v3 on Citadel](docs/RUNNING.md) for the console, approvals, models, extensions and the known gaps.
|
|
|
|
## Build and run
|
|
|
|
```sh
|
|
nix build
|
|
result/bin/sausage run /path/to/world
|
|
result/bin/sausage sh /path/to/world -c 'echo hi | tr a-z A-Z; git --version'
|
|
```
|
|
|
|
The package includes the userland bundle.
|
|
At world creation, the host copies its tools into `/bin` as `<command>.wasm` files.
|
|
It also copies a committed source snapshot into `/src/sausage`.
|
|
The console uses `PI_PROXY_BASE_URL` and `PI_PROXY_API_KEY` from the host environment.
|
|
Secrets do not enter the world.
|
|
|
|
The host creates `world/` for the shared filesystem and `host/` for private runtime state under the supplied directory.
|
|
Services come from `/config/services.yaml` in the world.
|
|
|
|
## Repository
|
|
|
|
- `host/`: the Rust host, process table, and durable harness. Its checked-in JavaScript bundles need no npm during a Nix build.
|
|
- `vfs/`: the shared virtual filesystem and WASI adapters.
|
|
- `userland/`: the default tools, in a separate `wasm32-wasip2` workspace. `bundle.nu` builds and assembles them.
|
|
- `spikes/`: reference prototypes, not production dependencies.
|
|
|
|
The design and decisions live in `~/research/sausage-v3/PLAN.md`.
|
|
|
|
## Development
|
|
|
|
```sh
|
|
nix develop
|
|
cargo test --workspace
|
|
nu userland/bundle.nu
|
|
nix flake check
|
|
```
|
|
|
|
The development shell provides Rust with `wasm32-wasip2`, wasmtime, and wasm-tools.
|