I'm Declan, an Engineering Manager living in Melbourne.
This site is where I track my experiments — the AI projects and tools I'm building, shipping, and learning from in the open.
Growth
The results so far.
192,937 search impressions across all three, in 8 months.
Google Search Console data from pagespeedfix.com, webtoolsforge.com and nestledger.com.au. The first two I started by hand, before the pipeline above existed — what I learned running them is what the pipeline now scales, and NestLedger is the first one it built from scratch.
The fleet · to 31 Aug 2026
The workflow
One brief. A whole crew.
I type one line. A Lead agent plans it, hires a crew across two model families, and a different model reviews the result before it reaches me.
Fleet activity summary:
- lead (claude): 22m
- designer (claude): 12m
- be (codex): 4m
- reviewer (codex): 2m
- 01
Mac
Brief it in one line
/fleet vps-agents: I want to improve on the design of the Citadel dashboard — lean into the Red Rising theme as much as possible.No plan document, no frontmatter. The brief is the entire input — the planning got delegated too. - 02
VPS
The Lead plans and staffs
An Opus Lead reads the project manifest, decomposes the ask, and decides which seats to hire. Role definitions live in git, so how a seat behaves is a reviewable diff rather than a prompt someone typed once.
- 03
VPS
The crew works in parallel, in isolation
Every seat gets its own git worktree, so six agents can't tread on each other. Seats split across model families deliberately: Claude on frontend, design and docs; Codex on backend, testing and infra.
- 04
VPS
A different model reviews the work
The crew's branches integrate, then a reviewer from the other family goes looking for defects. Findings route back to the seat responsible, and the rounds get counted.
- 05
GitHub
PR opens, Hermes pings me
Hermes is the one piece of the old pipeline that survived — demoted from half the machine to the thing that taps me on the shoulder in Telegram.
- 06
VPS
Every seat gets debriefed
Tokens, cost, turns, tool errors, review rounds, first-time-right, thrash score and tokens-per-diff-line, appended to
ledger.jsonland sliced in the Citadel by model family androles_sha. Change a role file, run more jobs, watch whether the numbers move.
The interesting part isn't that agents write the code — it's that every seat gets measured. Cost, review rounds, first-time-right, thrash, tokens per line of diff, all landing in a ledger I can slice by model family and by which revision of the role file the seat was running. That's what makes it a system I can tune rather than a trick I can demo.
A Hostinger VPS runs the fleet in Docker containers. Tailscale gives me private access from anything I own; Cloudflare Access gates the dashboards on *.dekk.dev, including the Citadel — the control room where the crew metrics live.
One job, end to end
The receipt.
One line in, one merged PR out. The repo is private, so here is the whole job instead — what it cost, who did what, what the reviewer caught, and the two pages you can go and use right now.
What I typed
/fleet vps-agents: I want to improve on the design of the Citadel dashboard — lean into the Red Rising theme as much as possible. On the ships underway tab, add a tab that shows each job as a spaceship travelling through space; hover over a ship to see the workers on it and the details about it. Also add a proper title and description for each job instead of the branch name.
22m wall clock · the vertical line is the review gate · costs shown at API list prices
Crew debrief
Zero findings this run — the reviewer had nothing to send back.
| Seat | Model | Time | Cost | Tool errors |
|---|---|---|---|---|
| lead | claude-opus-4-8 | 22m | $9.09 | 0 |
| designer | claude-sonnet-5 | 12m | $2.66 | 1 |
| be | gpt-5.5 | 4m | $0.32 | — |
| reviewer | gpt-5.5 | 2m | $0.16 | — |
Cost is computed at API list prices. A dash means the runtime does not report that field — Codex seats do not emit tool-error counts, and inventing a zero there would be a lie.
Selected work
Projects.
pagespeedfix.com
LiveImpressions / mo49kAn SEO playbook tested in public.
Visit ↗
webtoolsforge.com
LiveImpressions / mo30Same playbook, different surface — and it didn't transfer.
Visit ↗
POD Engine
LiveStatusLiveCan one AI agent run a print-on-demand store with me only at the approval gate?
By invitation
nestledger.com.au
LiveImpressions / mo450The first one the pipeline built, not just maintained.
Visit ↗