Files
sausage/README.md
T

1.6 KiB

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. Hierarchical coordination remains a later phase of the plan.

Build and run

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

nix develop
cargo test --workspace
nu userland/bundle.nu
nix flake check

The development shell provides Rust with wasm32-wasip2, wasmtime, and wasm-tools.