AI-driven development
Agents do the legwork.
I make the calls.
I use AI the way I use any good tool: to move faster on the parts that don't need me, so I can spend more time on the parts that do. Here's what that looks like on a real project, from the first brief to a deploy.
The loop
From brief to deploy, one step at a time
Brief
The goal, the constraints and what "done" means, written down before any code. Agents are only as good as their instructions, so this is where most of the thinking happens.
- Goal: a detail page for every project
- Constraints: no new dependencies, keep the design system
- Done when: cards link to pages, types pass, phones look right
- Plain text
- Figma
- The existing codebase
The brief and checklists above are from the brief behind this site's project pages. The agent and deploy panels are simplified illustrations of the same steps.
The privacy line
Your data stays on my hardware. Everything else can go to the cloud.
Stays on my hardware
Qwen on llama.cpp, directly or through Strata
- Client data
- Private and proprietary code
- Credentials and server configs
Goes to cloud agents
Claude Code and OpenCode
- Open, non-sensitive code like this site
- Refactors, scaffolding and exploration
- Second-opinion reviews
The setup
Cloud agents where they help, local models where privacy matters
- Cloud agents, in the repoClaude Code & OpenCode
- Scoped changes, refactors, codebase exploration and second-opinion reviews on code that isn't sensitive, always from a written brief.
- On my own hardwareQwen on llama.cpp
- A local model for client data and private code, run directly or through Strata. Nothing it sees leaves the machine.
- On my serversAutomated pipelines
- GitHub to Dokploy on Ubuntu, behind iptables and Cloudflare Tunnels. Builds and deploys happen on push.
Where it shows up
Real work, not a demo
- This portfolioThe redesign, the project pages and this page were built with Claude Code working from written briefs. Every change was reviewed and type-checked before it landed.
- Private AI setupsQwen running locally on llama.cpp, on hardware I own, for the work that can't go to a cloud model: client data and private code.
Ground rules
- I read every line before it ships.
- Design decisions and client conversations stay human.
- Client data and private code stay on my own hardware.
- No made-up speedups. It's faster when it's faster.
