hallelx2 labs The method · One pair of hands

How I work

A short loop, run the same way every time, with a number at the end of it.

8 daysfrom first commit to AuraHealth live, with payments wired
6steps in the loop, and none of them is optional
0merges on a red build — the gate is a real build, not a typecheck
01The steps, and what each one uses Hover a step — or tap it on a phone.

Six steps, and the tools each one actually uses. Hover a step, or tap it on a phone. Nothing moves forward until the step before it is done — and a change that cannot be verified goes back to step three rather than out of the door.

Issue first

Every change starts as a written issue with acceptance criteria and scope boundaries. A plan that lives only in a chat window does not exist.

One worktree per issue

The main checkout stays clean and on main. Parallel work never collides, and nothing is ever committed straight to the default branch.

Built fully, not stubbed

No placeholder that ships as though it were the real thing. If an external constraint forces a shortcut, it is called out and reverted, not left in.

Verified by measurement

The project’s real build, lint and tests — not a typecheck standing in for a build. Green means green, and “should be fine” is not a result.

Reviewed before merge

An automated security and quality review gates the merge. Valid findings in scope become commits; valid findings out of scope become new issues.

Merged with the evidence

A real merge commit, the branch deleted, and the issue closed with what was measured and when — so the record survives the session.

02Where the AI sits Inside the loop, with a gate in front of it — not beside it.

I let an agent do the work. I do not let it decide whether the work is done.

  • Standing procedure, not promptsThe loop above is written down as skills the agent loads before it starts, so the same steps run whether I am watching or not.
  • Delegated when it is self-containedFully specified, repo-scoped work goes to a background agent. Anything cross-cutting, architectural or ambiguous stays with me.
  • The gate is machineryBuild, lint, tests and an automated review decide whether something merges. An agent saying it finished is not evidence that it did.
  • Re-measure before assertingAnything that claims a system lacks a feature is re-checked live before it is repeated. A cached answer about someone else’s API is the fastest thing to go stale.
03What I reach for Five languages, because the problem picks the language.
Languages

TypeScript and Python for most things. Go where a single binary and tight control of the format matter — the retrieval engine, the PDF parser and the LLM gateway are all Go. Rust and R where the work called for them.

Agents and models

Claude Agent SDK, Vercel AI SDK, OpenAI tools, VAPI and MCP. Claude, Gemini and GPT behind a gateway rather than wired to one provider.

Web and API

Next.js App Router, server-first, with Fastify, Hono and FastAPI behind it. tRPC where the client and server are mine.

Data

Postgres with Drizzle, on Neon or Supabase. pgvector and Qdrant where a vector index genuinely earns its place — and Vectorless where it does not.

Voice

Deepgram, ElevenLabs, YarnGPT and Twilio. Clinical-grade transcription where the words are a diagnosis rather than a caption.

Where it runs

Vercel, Cloudflare Workers, Docker and AWS. Whatever gets it in front of a real user soonest, then moved when the load says to move it.

04What the loop produces Measured from the commit history on 21 September 2026.
First commit to shipped, on four repositories
RepositoryCommitsDaysWhat came out
enyata-project218AuraHealth, live — 21 routes, 10 tables, 5 payment APIs
context852181.0.0 on PyPI
pdfgrab43115v0.4.0 on the Go module proxy
llmgate30153v0.5.0, the gateway the engine runs on

The short spans are new products, the long ones are libraries that keep being maintained. Both are in the table because showing only the fast one would be a different claim than the true one.

This site was built the same way.

Ported from a design source by a script, verified by pixel-diffing every page against the original, and deployed from the same loop. The activity page is generated from the registries for the same reason.