Files
nisse/deploy/agent-host/README.md
T
dongarandClaude Opus 5.5 bf98445fcb
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m0s
CI / e2e (pull_request) Successful in 4m25s
Agent host: SilverBullet serves the vault as its one space, behind Authelia
The operator chose single-space mode: the vault is mounted at /data, with
memory/ read-only over it, and there are no accounts or setup wizard;
Authelia in the operator's Caddy is the login. SB_NAME forces the mode, so
an empty vault can't boot the wizard. SilverBullet's own data folder is
gone. check now fails if the wizard could be open. The README says how to
make memory/ writable for a while and back.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
2026-10-19 16:41:29 +00:00

2.4 KiB

The agent host

nisse.garrett-hall.com, made by infra/tofu#77 as nisse-host and since renamed (architecture X1). For now it holds the knowledge vault and SilverBullet, the operator's view of it (L10, M5.4). The agents' containers come later (M6.1).

What's here

  • silverbullet/compose.yaml: SilverBullet, its version pinned, serving the vault as its one space, with the agents' memory/ read-only. Nothing else of the host. It has no accounts: the operator logs in through Authelia.
  • setup.sh: makes the vault's folders, installs the stack under /opt/stacks/silverbullet and the firewall, and starts it. Safe to run again.
  • nisse-firewall: only the operator's Caddy may reach SilverBullet's port (Docker's DOCKER-USER chain, re-applied whenever Docker starts).
  • check.sh: run on the host by scripts/agent-host.sh check; says "all checks passed" only once every check has run.
  • caddy/nisse-memory.dongar.net.caddy: the site for the operator's Caddy on docker.garrett-hall.com. HTTPS from Caddy's usual certificate, behind Authelia.

The vault

/srv/nisse/vault, one copy on the host's disk, nothing synced:

  • The operator's: the root and everything in it but memory/, written through SilverBullet. infrastructure/ holds material for nisse-ops, which nisse-dev will never be given.
  • The agents': memory/<agent>/, one writer each, when the agents move in. SilverBullet sees them read-only.

Backed up nightly with the VM (Proxmox; backup: true in infra/tofu).

Installing and checking

From the development VM, with the bring-up key the operator added for ubuntu:

scripts/agent-host.sh install   # copy this folder over and run setup.sh
scripts/agent-host.sh check     # running, mounts, firewall

Then the operator adds the Caddy site from caddy/nisse-memory.dongar.net.caddy, behind Authelia, and reloads Caddy. There's no setup wizard: SilverBullet starts serving the vault at once.

Making memory/ writable for a while (for example, to upload material that will be sorted into the agents' folders): on the host, add /opt/stacks/silverbullet/compose.override.yaml that replaces the volumes with the vault alone (volumes: !override [/srv/nisse/vault:/data]), give memory/ to uid 1000, and docker compose up -d. check fails while it's in place. To end it, delete the override and run install again, which gives memory/ back to root.