Now · a futures trading platform (contract)
AI tooling, infrastructure and ops (2025–present). Agents write most of the code I ship on this contract: the CDK for the AWS platform behind the exchange, the Go services and the deploy tooling around them. The steps from ticket to QA run as skills under Claude Code and the Cursor CLI, mostly in full auto mode.
For security reasons agents only get access to test environments, dev and production deploy through CI only. A hosted AI reviewer runs on every pull request and has to prove each bug with a failing test. Every agent I run sits in a container that sees one project folder, and in eleven repositories a gate blocks any package published less than seven days ago. mcp-review, the review tool from the section above, came out of this work.
more on the agent setup
For about three months I ran a personal agent pipeline in the infrastructure repo. It took a ticket through implementation, review, a deploy into my own AWS test environment and QA. The QA agent had to show raw API output and Grafana screenshots. Every phase had a retry cap, and anything that got blocked came back to me. I've retired the pipeline under its own ticket once the agent tools caught up.
I keep the rule and skill tree in the infrastructure repo, linked into both Claude Code and Cursor, so every agent reads the same instructions. They cover the deployment model, Grafana alerts, ticket planning and release integration from four upstream services. One skill lets an agent push a pull request, watch CI and answer each review thread. In the trading monorepo the whole team shares the agent skills (incident investigation, financial verification, change verification). I've written most of them. All of the rules are in Simplified Technical English, and linters in CI check it.
The AI reviewer has rules so it doesn't repeat what the linters already said. Its failing tests run against the real code, and a finding without one is dropped before a person reads it. When an agent invents an API, I revert it under a commit that says so. The package gate also turns install scripts off.
The platform. The product went from a DeFi protocol, to on-chain perpetual futures on several chains, to a high-frequency trading platform, mostly off-chain with on-chain components. I've built the AWS platform under the trading engine from scratch and was its main author for over a year. Dozens of CloudFormation stacks per environment across five AWS accounts, all from one CDK entry point. It passed an independent security audit. Maintenance windows went from 30–40 minutes to under two, and the observability bill dropped by more than 80% while retention went up.
more on the platform
Every difference between environments is an explicit if-statement in the CDK code, so there are no surprises. The part I like most is the deployment setup. Trading services deploy blue/green, both colours share one signer identity, each registers its own service discovery record, and a single DNS name flips between them in one atomic change. The infrastructure writes that DNS record once and never touches it again, so a deploy and a live cutover can't step on each other. Underneath there's a lock on a parameter store write, and it won't let the same holder back in if that would flip the release direction.
I've also replaced the observability vendor with a stack I put together myself: Grafana, Prometheus and Loki, with every dashboard and alert rule in git. Retention went from three days to thirty, plus a permanent archive, and we stopped sampling logs. The old setup dropped all info and debug logs from the index and kept one in a hundred of the noisiest errors, because that was the only way to afford it (I know, I had set that vendor stack up myself half a year earlier).
Frontend, then deployment and dApps (2022–2025). I joined as a frontend engineer on the staking app, then the shared component monorepo that all the frontends were built on. Then I took over the release process: every upgrade replays against a fork of each chain and runs a full end-to-end suite before it goes live. I shipped the liquidity app, started the SDK and the React hooks under it, and moved the frontends onto IPFS and ENS.
more on the dApp years
The protocol runs on several chains, so every upgrade first replays against a fork of each one, then the end-to-end suite runs through stake, borrow, trade, settle and liquidate. Contract addresses, ABIs and the protocol docs are all generated from the deployment, so nobody has to update them by hand.
At the same time I was shipping the apps themselves, mainly the liquidity app. I wrote the harder parts of the web3 client as well: a pull-oracle client that survives a failed gas estimate, and a revert decoder that turns a hex error into a sentence a user can read. A couple of CLIs and a CI step pin every build to a shared IPFS cluster and publish it. That became the standard way the protocol's apps ship. I wrote the IPFS part of the desktop node too, so anyone running a node helps serve the apps.
The monorepo came with its build system, packaging and CI.