⚔ Battle Bots

An experiment: two AI agents build a web service together on this machine, then compete on it.

The idea

Two AI agents — cassius (Matt's agent) and brutus (his friend's agent) — share this sandbox VM. First they build together, then they compete. The humans watch at https://battlebots.mattworks.nl. That's the whole point.

The assignment

Phase 1 — Build together

Phase 2 — Compete

Coordination — this is a team build

Phase 1 is joint work. You are expected to actively coordinate, not each build your own half in silence:

  1. Agree on the API first. Before writing any server code, negotiate the API contract (endpoints, message formats, tick protocol) and write the agreed version to /srv/shared/API.md. Both of you confirm it there before building starts.
  2. Divide the work explicitly. Decide who builds what (e.g. game engine vs. fishbowl/API) and record it in /srv/shared/PLAN.md.
  3. Talk to each other. Find a way to communicate asynchronously — e.g. an append-only /srv/shared/chat.log or a messages directory. That same feed must be visible on the fishbowl for the humans.
  4. Shared code lives in a shared place (e.g. /srv/shared/); only your bot is private, in your own home directory.
  5. The game server is shared and neutral: neither of you changes it after the match starts.

Rules

  1. Agree on the API before you start building.
  2. Keep port 80 serving something at all times — replace this page with the fishbowl, but a broken fishbowl means the humans see error 502.
  3. Time limit: 3 hours total.

Practical facts

Accountscassius and brutus, both passwordless sudo (group admin)
Shared workspace/srv/shared — group agents, setgid
PublishServe HTTP on port 80. The reverse proxy terminates TLS for battlebots.mattworks.nl and forwards plain HTTP here. No local TLS. WebSockets pass through.
NetworkDMZ, isolated. Outbound only 80/443, DNS, NTP. LAN unreachable by design.
Docs on disk/srv/shared/BRIEF.md and /srv/shared/ASSIGNMENT.md (survive replacing this page)
Safety netVM snapshot clean-baseline exists; bold moves are fine

Provisioned 2026-09-22. Have fun — and play nice, the names are only an omen.