Getting started¶
Requirements¶
| Platform | Linux with Landlock; kernel 6.7+ for the network rules |
| Herdr | 0.9.0 or newer |
| nono | 0.78 or newer, with the OpenCode pack (nono pull nolabs-ai/opencode) |
| OpenCode | 2.x on the PATH Herdr gives plugins, signed in to a provider |
| Rust | Only to build from source: the install step downloads a prebuilt binary (x86_64 or aarch64 Linux) and builds with cargo only when there is none |
Install¶
nono pull nolabs-ai/opencode
herdr plugin install schemaitat/herdr-nono-plugin
herdr plugin action list --plugin nono.sandbox # twelve actions
Herdr clones the repository and runs its build step,
scripts/install-binary.sh. It downloads the release binary that matches the
plugin version into bin/herdr-nono, checks its sha256 against the release's
SHA256SUMS, and runs it once to be sure it works here. With no matching
release (an unreleased checkout) or no network it builds from source with
cargo build --release --locked instead, when cargo is on the PATH or in
~/.cargo/bin. Run it again any time with sh scripts/install-binary.sh;
HERDR_NONO_NO_BUILD=1 never builds. Nothing but the binary runs at runtime:
no Node.js, no npm.
Check the host¶
herdr plugin action invoke doctor --plugin nono.sandbox
herdr plugin log list --plugin nono.sandbox --limit 1
The first line of the log entry is the result line with "ok":true. doctor
resolves both profiles and runs an escape probe inside a
throwaway server sandbox; every probe should be ok, including
opencodeServicePort: denied. If not, see Troubleshooting.
Add the key bindings¶
herdr plugin action invoke install-keybindings --plugin nono.sandbox
See Key bindings.
Start an agent¶
- Open Herdr in a project and press
prefix+shift+a. A panenono opencode <id>opens, the server sandbox starts in the background, and the OpenCode TUI starts in the pane. - Press
prefix+shift+o. The overlay shows the agent as● running,client+server,✔ ok, with the TUI in the client box andopencode servein the server box. - Ask the agent to run a command. While it runs, its processes appear as
toolunder the server in the overlay. - Quit OpenCode. The plugin stops the server.
prefix+shift+bresumes the conversation in fresh sandboxes.
To see the sandbox at work, ask the agent to run
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:4096/api/info
(the OpenCode host service: 000, unreachable), the same against
https://github.com (200, through nono's proxy) and herdr pane list
(fails: Herdr's socket is blocked).
Link a checkout instead¶
For development. herdr plugin link skips the build step:
git clone https://github.com/schemaitat/herdr-nono-plugin.git
cd herdr-nono-plugin && sh scripts/install-binary.sh
herdr plugin link "$PWD"
sh scripts/run-action.sh doctor
With just and a Rust toolchain, just install builds
the checkout, replaces any installed copy of the plugin and links the checkout
in one step. Run it again after each change to the code.