Merge branch 'v3' into v3-t98

This commit is contained in:
2026-11-12 11:13:54 +00:00
91 changed files with 13 additions and 18280 deletions
+7 -12
View File
@@ -1,4 +1,4 @@
# Run Sausage v3 on Citadel
# Run Sausage
Use the web UI for conversations, passkeys, approvals, and secret entry. The host serves only JSON through `/api/`.
@@ -8,7 +8,7 @@ Keep the complete world folder between starts.
## Build and start
Run host commands from a checkout of the `v3` branch on Citadel.
Run host commands from a checkout of the repository.
Use Nix with flakes. The package supplies the native Rust builder and its tools.
Use `sausage run --no-builder-sandbox WORLD` only when the host must run the builder without namespace isolation.
@@ -56,9 +56,6 @@ Cargo puts the host under `target/release/sausage`, unless `CARGO_TARGET_DIR` se
Use that binary with `init WORLD --userland BUNDLE`, then `run WORLD`.
Use the repository's build slots and shared executor target directory for agent validation builds.
Choose `$HOME/sausage-v3`, not the live v2 `~/world`.
For the actual cutover, let v2 finish its work before you stop it.
Do not run two production services. This guide does not stop or replace the deployed service.
The host creates this layout:
| Host path | Purpose |
@@ -85,7 +82,7 @@ The pending-requests banner opens the approval view in the page. The host verifi
Agents edit `/srv/www/index.html`. Each request reads the file fresh without a build or restart.
The terminal console remains optional. Each nonempty console line submits a message to the main agent conversation.
Assistant text appears on stdout. This is not a shell or the v2 command dispatcher.
Assistant text appears on stdout. This is not a shell.
Text such as `quit`, `help`, and `core.restart` has no special host meaning.
Ask the agent to execute world commands when you need tools.
@@ -105,10 +102,10 @@ and [`harness/mod.rs`](../host/src/harness/mod.rs).
## Reach the chat and approval pages
The world web server listens on port 8080. The host opens no separate port.
From the laptop, create one SSH tunnel:
If Sausage runs on another machine, forward the port with one SSH tunnel from your computer:
```sh
ssh -N -L 8080:127.0.0.1:8080 citadel.vpn.surma.technology
ssh -N -L 8080:127.0.0.1:8080 YOUR-SERVER
```
Open **http://localhost:8080**. The first-passkey notice opens the Passkeys view.
@@ -229,9 +226,8 @@ These are world programs, not console commands. Ask the agent to run them.
| Tool | Use and limits |
| --- | --- |
| `cargo` | Build, run, and test Rust programs. The host copies the workspace through the VFS, fetches dependencies, then builds offline in namespaces. It publishes WASI artifacts into the world. Other targets are unsupported. |
| `box` | Build non-Rust projects or run browser tests in disposable containers. The default service is `citadel.vpn.surma.technology:8093`. It requires network access and service availability. Remove boxes after use. |
| `undo` | Inspect tags and restore filesystem changes. Later edits can conflict. Network effects and native builds are not reversible. Retention is seven days or 4 GiB of unique content. |
| `systemctl` | Control world init services, not Citadel's systemd. Persistent units live under `/etc/systemd/system`. Init observes edits without daemon reload. |
| `systemctl` | Control world init services, not the host machine's systemd. Persistent units live under `/etc/systemd/system`. Init observes edits without daemon reload. |
| `journalctl` | Read world service logs under `/var/log/journal`. Each unit retains a 1 MiB log and one rotated file. |
| `git` | Manage world repositories. HTTPS credential rules can inject authorization through the host HTTP hook. SSH remotes use host signing. |
| `ssh` | Execute a remote command without a PTY. Public identities and signatures come from the host. Private keys never enter the world. Host keys live in the world's known_hosts file. |
@@ -242,7 +238,7 @@ A missing credential grant causes a pending host request, not an automatic appro
A changed SSH host key fails even with the accept-new policy.
Command reference and implementation evidence:
[`builder`](../host/src/builder/README.md), [`box`](../userland/box/README.md),
[`builder`](../host/src/builder/README.md),
[`undo`](../userland/undo/README.md), [`init`](../userland/init/README.md),
[`git`](../userland/git/README.md), and [`ssh`](../userland/ssh/README.md).
@@ -282,6 +278,5 @@ Source: [`host API contract`](../host/src/api/README.md),
- The bootstrap chat is deliberately plain. There is no item editor or credential dashboard.
- The console has no shell commands, transcript navigation, or special quit command.
- `sausage sh` requires `-c`. Its interactive shell is not implemented.
- This guide does not migrate a v2 world. Keep the live v2 folder untouched.
A successful local start does not verify external services or the production passkey origin.