npx skills add https://github.com/getcolors/agent-network --skill package-agent-network-greenSKILL.md
NetBird Agent Network on Vultr
A Green workflow that turns one colors.yml into a running Agent Network
demo: OpenTofu for the instance, its firewall and two Cloudflare records (the
base name and its wildcard); Ansible for Traefik, the combined
netbird-server, the dashboard in agent-network-only mode, the NetBird
reverse proxy in private mode, the control plane (provider, guardrail,
policy, global limit), and the isolated agent container.
The demo's claim: the agent has no internet path — two independent boundaries, an internal Docker network and DOCKER-USER rules — and its only route to an LLM is the keyless agent-network endpoint over the WireGuard tunnel, where every request carries the peer's identity, passes the policy, and is metered. Convergence proves the claim (positive and negative space both) or fails.
Verbs
./green build # render .colors/<profile>/ — no provider calls, no credentials
./green create --dry-run # walk the workflow, skip every side effect
./green create # converge for real
./green delete # guarded; needs a one-run override
Exit code 2 is validation or usage failure and lists every problem at once. The
launcher walks up from the working directory to find colors.yml.
Before you converge
- The hostname and its wildcard must be free in the Cloudflare zone. The DNS stage creates both and never adopts a foreign record.
- Five credentials must be set in
.envrc.private; seereferences/configuration.md. Never exportCOLORS_PAR_PROFILE. - A deliberately fake
COLORS_PAR_ANTHROPIC_API_KEYis a supported mode: the acceptance suite then expects Anthropic's own 401 relayed through the proxy, which still proves isolation, tunnel, policy and key injection while never producing a billable completion. Swap in a real key and re-run create to upgrade the demo to real completions.
Disposability
This deployment is disposable by design: no backups, and recovery is a
guarded delete followed by create. The endpoint hostname and every peer
identity are regenerated by the next create; nothing on the box is worth
outliving it.
Operating
agent-network-status, agent-network-smoke, agent-network-bootstrap on
the host. The dashboard admin password is generated on the host:
/etc/agent-network/secrets/admin_password.
Rules
colors.ymlis the only file to edit..colors/is generated: never edit it, read it as source, or commit it.- Credentials are
COLORS_PAR_<UPPER_SNAKE_KEY>variables in the gitignored.envrc.private, never incolors.ymlor documentation. - Never weaken
compute-prevent-destroyin committed desired state. - The installed launcher is a copy, not a symlink. After
npx skills update -p, copy.agents/skills/package-agent-network-green/greenover the root./green.