███╗   ███╗ ██╗   ██╗  ██████╗ ███████╗ ██╗
████╗ ████║ ╚██╗ ██╔╝ ██╔════╝ ██╔════╝ ██║
██╔████╔██║  ╚████╔╝  ██║      █████╗   ██║
██║╚██╔╝██║   ╚██╔╝   ██║      ██╔══╝   ██║
██║ ╚═╝ ██║    ██║    ╚██████╗ ███████╗ ███████╗
╚═╝     ╚═╝    ╚═╝     ╚═════╝ ╚══════╝ ╚══════╝
DemoAcademyPricing
Sign inBook a meeting

Writing · Topic

Building the harness

How the kernel is built: schemas as contracts, guards, coordination state, and what breaks when an agent runs unattended.

9 pieces

  • Architecture · August 24, 2026 · 8 min

    Services are data, not code

    A bookkeeping service in our system is a JSON manifest, a folder of markdown, and an output schema. No module, no deploy, no engineer. The consequence that matters is not speed — it is that domain expertise stops being something only a programmer can add.

  • Architecture · August 23, 2026 · 8 min

    Output schemas are completion contracts

    Most agent frameworks treat a schema as validation applied after the fact. Treat it instead as the definition of done — the run ends the moment a valid result is written — and three unrelated problems disappear at once: unbounded loops, unresumable runs, and work nobody can grade.

  • Architecture · August 22, 2026 · 9 min

    One config for every task is the original sin

    "Build a website for this business" and "decide the next step on this overdue invoice" are not the same job, and giving them the same tools, permissions and credentials is how an agent system becomes unsafe. Three shapes, and a build run that can never hold a send token.

  • Architecture · August 21, 2026 · 8 min

    Fulfilment is not one shot

    Real service work is not a single prompt. A weekly visibility report is twelve independent measurements and one aggregation; a month-end close is strictly sequential and stops dead without a bank statement. Both need a run that can suspend itself as a row and resume days later.

  • Architecture · August 20, 2026 · 7 min

    Your concurrency guards are all vertical

    Row locks stop one job running twice. Nothing in a typical system counts how many times one human hears from you. Three correct schedules, three correct runs, three emails to the same client before lunch — and no bug to find, because nothing is broken.

  • Product · August 19, 2026 · 8 min

    A client gets work, or a question — never your JSON

    A finished agent run has exactly three honest fates: deliver, ask, or hold. The fourth — ship whatever came out — is the one that puts a serialised object in front of a paying customer, and it is almost always a single fallback expression away.

  • Product · August 18, 2026 · 7 min

    The work needs something only the client has

    Bookkeeping needs the bank statement. A hire needs the role brief. Most agent demos quietly assume the input is already there, and every real engagement stalls on the moment it is not. Refusing well is a product feature, and it has a shape.

  • Engineering · August 17, 2026 · 7 min

    Coordination state belongs in the database

    If a run can suspend for three days waiting on a client, every piece of state that resumes it has to survive a deploy, a crash and a second replica. The rule is uncomfortable and simple: if losing it would park a run forever, it is not allowed to live in memory.

  • Agents · August 16, 2026 · 9 min

    Simulating clients who remember

    A scripted synthetic client can only prove your transitions exist. The loop that earns a retainer is different: v1 goes out, the client objects to one thing, v2 comes back, and they ask the only question that matters — did they fix the thing I said? That needs memory.

Common questions

Where should an agent's coordination state live?
In the database. If a run can suspend for three days waiting on a client, every piece of state that resumes it has to survive a deploy, a crash and a second replica — which rules out memory, however convenient it is.
Why should an agent's output have a schema?
Because a schema is a completion contract, not after-the-fact validation. Treat it as the definition of done — the run ends the moment a valid result is written — and several unrelated failure modes disappear at once.
Why do ordinary concurrency guards fail for client work?
They are all vertical. A row lock stops one job running twice; nothing in a typical system counts how many times one human hears from you. Three correct schedules and three correct runs still produce three emails to the same client.
What should an agent do when it cannot finish?
Ask, or hold. A finished run has three honest fates — deliver, ask, or hold — and the fourth, shipping whatever came out, is the one that puts a serialised object in front of a paying customer.

Vocabulary

  • Completion contract →
  • Agent harness →

Other topics

  • Running an agency (4) →
  • Research (2) →

Take the client you turned down last month.

Describe what you deliver and the first draft exists before you have finished your coffee.

Start 7 days free

The first AI delivery firm. You sign.

All systems operational

Ask an AI about us

  • Claude
  • ChatGPT
  • Perplexity

It reads the site and answers on its own. We do not get to edit what it says.

Product

  • What you get
  • Pricing
  • Changelog
  • What it runs
  • Free reports
  • Product map
  • Team
  • Blog
  • Glossary
  • AI Visibility Index
  • Sign in
  • Docs

Compare

  • vs ChatGPT, Claude, or whichever tab is already open
  • vs Grok Bot and the AI-employee platforms
  • vs Hiring an account manager
  • vs Profound
  • vs Otterly
  • vs Building it yourself
  • vs Zapier & n8n
  • vs Temporal
  • vs LangGraph
  • vs CrewAI & AutoGen
  • All comparisons

Legal

  • Privacy
  • Sub-processors
  • Terms
  • DPA
  • Security
███╗   ███╗ ██╗   ██╗  ██████╗ ███████╗ ██╗
████╗ ████║ ╚██╗ ██╔╝ ██╔════╝ ██╔════╝ ██║
██╔████╔██║  ╚████╔╝  ██║      █████╗   ██║
██║╚██╔╝██║   ╚██╔╝   ██║      ██╔══╝   ██║
██║ ╚═╝ ██║    ██║    ╚██████╗ ███████╗ ███████╗
╚═╝     ╚═╝    ╚═╝     ╚═════╝ ╚══════╝ ╚══════╝