007: What we have learned when we built our own Agent Harness

You probably know or heard of 996. The Chinese tech grind, 9 to 9, six days a week, worn like a badge. By 2025 it had resurfaced in Silicon Valley, with the promise of AI working non-stop, solving everything, with agents running all the time. Except no reliable, mature platform existed to run them.

We have built one, we called it 007 (you see what we did there?).

The shopping trip that failed one question

Early 2025, we went looking for a platform that ran long-running agents: pick up a task, work at it, retry, hand off, don’t fall over. There was plenty. A handful of (back then) startups/scale-ups, each promising to be the last agent framework you’d ever need, shipping new features every week.

A few came close. Then every one of them failed the same boring question:

Do we bet the future of our platform on one young company’s roadmap/fundraising/vision?

If you are old enough you might know how this goes. You build your critical path on someone’s clever abstraction/library/tool/platform, and in 6 to 18 months they pivot, merge, change their pricing, or quietly stop shipping. The format you built on is gone, and you own a migration you never asked for. So we did what small senior teams always end up doing. We built our own agent harness.

To be clear, we also buy where being wrong is cheap: tembo.io runs our dev-workflow automation, the Linear to GitHub to Slack digests and information flows, and it does that job really well. If it disappeared tomorrow we’d lose some convenience, not our platform. We build where betting on someone else’s roadmap is the actual risk.

The orchestration we feared was infrastructure we already had

Everyone tells you orchestration is where you drown: long-running agents, retries, handoffs, state that survives a crash and picks back up. It’s the reason those platforms exist. We assumed we’d spend months there. We didn’t, and the reason is dull enough to be a real lesson. We already had our own event system and infrastructure, the harness directly integrated with them. We also have treated the agent ‘memory’ as a first class citizen on our platform. No generic, in between agent state, context but direct artifact with their own lifeccycles.

The design bet under all of it: the harness is stateless. each run reads the external/real world (a repo, an issue, an API record), does its work, writes back. The medium is the handoff/memory. A reviewer agent reads a pull request and requests changes; the writer reads those and amends. Nothing holds state between them, because the PR is the state. We could have built a coordination layer. We didn’t, and that’s why it still works.

Conventions, not configuration

A role in 007 is a folder: a setup script, maybe a few skills, some reference knowledge. The prompt isn’t even in the code; it’s pulled at runtime and versioned on its own clock, promoted staging to production separately from everything around it. (The abstraction layer moved again. We can add and test a new agent in an afternoon, and 007 has no GUI. That’s the point, not a gap.

Drop a folder named {role}-judge next to a role and it gets a quality gate for free: a second model reads the run, decides if it’s good enough, and can hand it back with feedback to retry. Fail-open when the judge itself breaks, fail-closed when the run is wrong. No config, no registration. The folder being there is the instruction.

That judge is the SDLC2 idea made mechanical. When an engineer ships a bug, you don’t re-run their education, you put review in front of them. We don’t retrain the model either. We improve the process around it, not the black box inside. The folder convention is the framework we decided not to write.

It already does real work

None of this is a demo. One agent investigates a bug: reads the code, the logs, a read-only replica of the production database, and comes back with a root cause. If it’s warranted, it files the issue itself. A second agent picks that issue up and builds the fix as a pull request, never a push to main, because that’s a ground rule no prompt can override.

And the one that will always make me proud: we have an agent booking our client transactions, in real time, in production. Not a sandbox, not a dry run. The guardrails are strict and the judge is unforgiving, precisely because the stakes are. This is running now.

The snake eats its own tail

Every run captures everything: the prompt, the input, the output, the full event stream of its thinking, and any human feedback afterward. So 007 sits on a complete trace of how each agent actually thinks. So we pointed it at itself.

Run an agent. Then run another agent over the first one’s exhaust, reading the trace, proposing improvements to its prompt and setup. The harness that runs agents became the harness that improves them. An ouroboros. And it lives inside 007, not as some external tool: the improvement loop is just another role, using the same events, conventions, and judge machinery as everything else.

Where it actually is today: it runs, but we trigger it. Full autonomy, 007 improving its own agents while we sleep, is where we’re pointed, not where we’ve arrived. We didn’t design toward this. We built a clean, boring, convention-driven harness, and once it was clean enough, this fell out of it.

Midnight to midnight

People assume the feeling of handing real work to an autonomous agent is fear. For me it’s mostly curiosity. I spend a lot of time watching the event stream scroll: an agent wakes up, reads the world, calls a tool, decides, moves. It takes me straight back to my first years programming, when watching logs go by meant something was alive and working and yours. I didn’t expect to get that feeling back. 007 gave it back.

So here’s the question I don’t have an answer to. As the models get better, does the harness get thinner, closer to nothing? Or does it move up a level and start improving its agents faster than any of us can read the stream? I don’t know yet. We built it anyway, without waiting for the industry to settle, because it lives inside our own world and nobody else’s.

This post is part of the SDLC2 series.