Files
sausage/AGENTS.md
T
2026-10-15 11:22:39 +01:00

1.5 KiB

Working on Sausage

Sausage is meant to be read and changed by agents, including its own agent. Keep it that way.

Priorities

  1. Correct. Every behavior in PROTOCOL.md has a test in cli/tests/.
  2. Simple and short. Prefer the obvious code. No abstraction for one caller. No configuration that nobody asked for.
  3. Readable. A new reader must understand a file without the others. Each module starts with a doc comment that says what it owns.
  4. Efficient on the paths that run per message.
  5. Raw. Sausage has no permissions, sandboxing beyond WASI, limits, or authentication. Do not add them to the core. People who want them can build them as actors or as a fork.

Layout

  • cli/: the host (sausage binary and library). broker.rs routes and supervises, fs.rs is the filesystem layer, runtime.rs runs Wasmtime, candidate.rs tests new versions, cargo_actor.rs builds Rust actors.
  • sdk/: sausage-actor, the SDK for Rust actors. Never published: the cargo actor points sausage-actor = "0.1" at its local copy.
  • agent/: the agent actor. sausage init embeds and builds it.
  • examples/: small actors. They are not workspace members.
  • PROTOCOL.md: the contract between the host and the actors. Change it in the same commit as the behavior.

Checks

nix develop -c cargo test -p sausage -p sausage-actor
nix develop -c cargo build --release -p agent --target wasm32-wasip2
nix develop -c cargo clippy --workspace

nix run -- init and nix run -- run must keep working without other setup.