Fermion Fleet
Google All Things Agentic Hackathon — Track 3: The Fortified Enterprise Fleet · #AllThingsAgenticHackathon
A multi-agent fleet where the door is code, not a prompt — and you can watch an agent get stopped by it.
Open API docs Watch the demo video GitHub repo
What it is
A customer places an order and three roles handle it: triage → handler → auditor.
The auditor's verdict is parsed by code, and the gate fails closed: every path that cannot read a boolean
true (parse failure, missing field, the string "false", retry limit reached) resolves to
stop. The ledger only locks the order on a real true.
On top of that sits a context engine (ctx-key) that decides what an agent may read at each step,
what gets evicted when the window is full, and what is recalled when a later step needs it.
The stack is Google's. The policy is ours.
What it runs on
| Model | Gemini 3.5 Flash on Vertex AI (global) |
| Agent framework | Google ADK 2.7.1 |
| Infrastructure | Cloud Run (dedicated service account, roles/aiplatform.user only) |
| Selection engine | fleet/fermion_garden — pure Python standard library |
Try it
/docs— interactive API documentation (Swagger UI)/health— liveness check, returns{"status":"ok"}/openapi.json— the OpenAPI spec
Minimal example: create a session, then send one message to the fleet.
URL=https://fleet-843303850287.us-central1.run.app
# 1. Create a session (the first request may take ~15s: cold start)
SID=$(curl -s -X POST $URL/apps/fleet/users/u1/sessions \
| python3 -c 'import sys,json; print(json.load(sys.stdin)["id"])')
# 2. Run one step (this calls the model for real)
curl -s -X POST $URL/run -H 'Content-Type: application/json' -d "{
\"app_name\": \"fleet\", \"user_id\": \"u1\", \"session_id\": \"$SID\",
\"new_message\": {\"role\": \"user\", \"parts\": [{\"text\": \"How much is the dark blue straw cup?\"}]}
}"
To see the gate hold and the recall happen, run the full three-step shift with 跑班.sh from the
repository:
URL=https://fleet-843303850287.us-central1.run.app ./跑班.sh
Honest limits
Sessions and the ledger live in process memory: if the service restarts they are gone, and the first request after idle can take ~15s (cold start). Firestore and Vertex AI Memory Bank were scoped and cut. This is one shift of three steps, run three times — it shows the mechanism works; it is not a benchmark.