The Harness Is the Backend: An AI Software Team That Lives in a Forum, and Could Inhabit Any Frontend

The Harness Is the Backend

A product owner typed one sentence into a forum: “Please add a GET /api/ready endpoint that returns a readiness flag, no auth.” A few minutes later the endpoint was live in production, and the thread read like a real team had worked it: a product manager logged the request, an architect scoped it, a developer named the commit, QA verified the live response, and devops confirmed the deploy. Here is the part to hold onto. Those five team members are not running “on” a backend. They are the backend. Each one is a persona defined as a transition inside a Petri net, and that net is the team. No human wrote the code or clicked deploy, and only one of those steps even used a language model.


The Harness Is the Product, So Make It the Backend

A clever language model is not a dependable worker. On its own it forgets what it did a step ago, it stalls, it cannot retry, it leaves no record you can audit. What turns a clever model into something you can leave running unattended is the harness around it: the durable, observable scaffolding that holds state, retries failed steps, makes tool calls, remembers what happened, waits when it has to wait, and writes down every move. In a sister piece, The Harness Is the Product: Why Your Software Process Belongs in an Agentic-Net, we made the case plainly: the reliability you feel comes from the harness, not the model. The model is the clever part. The harness is the part you can trust.

AgenticNetOS is that harness, offered as a backend. A workflow is a Petri net. Places hold state, tokens carry the work from one step to the next, and transitions do the steps. The net survives restarts, gates on real results, and keeps an auditable trail of every token. The model is one component wired into one transition, not the thing in charge. That inversion is the whole point: you do not hand the work to a model and hope, you encode your process as a net and let the harness run it, calling a model at exactly the one place where a model is the right tool.


The Net Is a Society of Personas

Here is the part to say without hedging: the net is the team. The transitions of an Agentic-Net are the team’s personas. Pat the product manager, Avery the architect, Devon the developer, Quinn in QA, and Ollie in devops are not programs that run “on” the backend. They are the backend, given names and jobs. A net is a society of specialist personas, each one a transition with its own role, passing work to the next through tokens. When we say AgenticNetOS runs a software team, we mean the team and the net are the same object.

That reframing changes what you build. You do not write a custom agent app and then wire personas into it. You compose the personas as transitions, connect them with places and tokens, and you are done. The net is the org chart, the workflow, and the runtime all at once. Add a reviewer? Add a transition. Change the handoff order? Rewire the arcs. The society of personas is the program.

And because the harness gives each persona durable state, retries, tool calls, and a memory, those personas behave the way people on a team behave. They pick up work, do their part, hand off, and report. That single fact is what makes the next idea work.


The Personas Act as People, So Any Frontend Is Just an API

Most AI agent demos live inside a bespoke chat window. That hides the question that matters for real work: where does the work actually run, and how does it reach the tools people already use? Our answer was to build no custom UI at all and instead point the harness at a system a community already understands. We chose a Discourse forum, mostly because a forum gives clean structure for free: categories, threads, named authors, and permissions, all behind a plain REST API.

That choice is not special. The forum is a frontend, nothing more. Because the personas act the way people do, all they need is an API to act through. The same team could just as easily work an OpenProject board, take tickets from a Jira backlog, hold a conversation in a Telegram chat, answer in a Slack channel, or reply to an email inbox. Anything with an API becomes a surface the net can read from and write to. We use Discourse here because it makes the story easy to see, not because the design depends on it.

Put plainly: AgenticNetOS is a persona backend for any frontend; the personas act as humans, so all they need is an API. Give them a forum and they post in it. Give them a ticket tracker and they work the board. Give them a Telegram group and they answer in it. Give them an inbox and they answer mail. The surface changes; the team, the harness, the net, does not. The frontend is interchangeable. The harness is the durable part.


The Loop, End to End

Feature request in, deployed code outThe forum is one interchangeable frontend. The Agentic-Net is the team. Nothing between is human.Product ownerposts a feature requestAny API frontendDiscourse, Jira, Telegram,OpenProject, Slack: any APIFrontend, updatedpersonas post replies,open release topicsreports backAgenticNetOS backend: one Petri net, the personas are transitionsPat, PMpoll + triageAvery, Archstory to taskDevon, DevAI writes codecommit + pushQuinn, QAverify liveOllie, Opsdeployedgit-analytics, live APICI rebuilds on push, endpoint goes livescheduled pollsmoke-test, theneach persona posts

What You See in the Thread

From the product owner’s seat, the whole interaction is one forum thread, and it reads like a team standup. Here is a real thread, verbatim, that ran with no human in the loop after the first post. Note the authors: each line is posted by a different account, a different member of the team, which is to say a different transition in the net.

Product owner   As product owner I want a readiness probe our load balancer
                can poll before sending traffic. Please add a GET /api/ready
                endpoint that returns {"ready":true,"service":"git-analytics-
                core"}. No authentication required. Add a test.

Pat (PM)        Thanks, got it. Logged as STORY-forum-30 and handing it to the
                team now: Avery scopes the work, Devon writes the code, Quinn
                checks it against the live service, and Ollie ships it. We'll
                post each step here as it happens.

Avery (Arch)    Scoped STORY-forum-30 down to a single task: add GET /api/ready
                in git-analytics-core. Handing it to Devon.

Devon (Dev)     Done. Added the endpoint plus a test, committed fed453a and
                pushed to main. Over to QA.

Quinn (QA)      Verified against the live service: GET /api/ready returns
                {"ready":true,"service":"git-analytics-core"} (HTTP 200).
                Matches the request.

Ollie (Ops)     Deployed to staging and confirmed live. STORY-forum-30 is
                shipped. Done.

Two details matter more than they look. Quinn’s line is not a hopeful “looks done.” Before posting, the harness actually curls the deployed endpoint and quotes the genuine HTTP status and body. If the endpoint had come back 401 or 500, Quinn would have said so plainly and refused to pass it, and Ollie would have held the release. Reporting is only useful when it cannot lie, and the harness is what makes it unable to lie. And Devon’s commit hash is real: you could check it out.


The Personas Are Authors, Not a Chatbot Voice

This is the part worth dwelling on. The personas are the transitions of the net, and they operate the frontend as members of it. They do not speak through one anonymous bot. Pat, Avery, Devon, Quinn, and Ollie are real accounts in the forum, each posting under their own name, the way a human team would. Move the team to Telegram and the same five act as named participants in the chat. Move it to Jira and they work the board under their own handles.

And they do more than reply in a thread. The same machinery lets a persona create content and structure on the frontend. Every deploy opens a fresh topic in a dedicated Releases category, authored by Ollie, with the endpoint, the commit, and the live check. The team owns that category as a build log. The same capability extends naturally: a persona can open new categories, pin a status post, publish a longer write-up, file a follow-up topic, or send the same announcement into a Telegram channel. Because the frontend is just an API, “post a reply,” “open a topic,” and “create a category” are all just calls the net can make. The personas are not commenting on the system from outside. They are running the system from inside.


What Happens Behind the Posts

Between the request and the replies, the net runs a full delivery pipeline. Each stage is a transition, each handoff is a token moving from one place to the next, and each persona is one of those stages:

PersonaWhat they doKind
Pat, PMReads new forum topics on a schedule, shapes each into a backlog story, acks the requestDeterministic
Avery, ArchitectDecomposes the story into a concrete taskDeterministic
Devon, DeveloperWrites the actual Java and a test, commits, rebases, pushesAI step
Quinn, QACurls the live endpoint and gates on the real responseDeterministic
Ollie, DevOpsConfirms the deploy and opens the release announcementDeterministic

Notice the balance, because it is the harness argument in miniature. Only one stage needs a model: Devon, who has to turn a sentence into source code. Everything else is a deterministic transition: routing, shaping, gating, posting. That is on purpose. Early versions leaned on a model at every step and were flaky, because language models are wonderful at writing a controller and unreliable at mechanically copying a field from one token to the next. Pushing the intelligence to exactly the one place that needs it, and letting the harness handle the rest as plain data flow, is what turned a fragile demo into something that runs unattended.

The deploy itself is the existing CI: Devon pushes to git, a build daemon rebuilds the service, and the new endpoint comes up. The net does not reinvent deployment. It drives the deployment that already exists, then verifies the result.


Why a Forum, and Why It Could Be Anything

A forum was a good first frontend for a concrete reason: it already gives you a queue, a thread model, named authors, and a permission system that people know how to use, with a clean REST API on top. Feature requests arrive as topics. Status flows back as replies from named team members. Releases become their own category. None of that needed a line of bespoke UI.

But nothing in the design is specific to Discourse. The personas reach the world through ordinary HTTP, so the same team could pick work off an OpenProject board and move cards across columns, take tickets from a Jira backlog and transition them through a workflow, run the standup inside a Telegram group, answer in a Slack thread, or reply to an email. Swap the read endpoint and the write endpoint, and the same team operates a different surface. The frontend is a detail. The harness, the net that holds the state, runs the pipeline, survives restarts, and keeps an auditable record of every token, is the durable part underneath every window.

That is the shift worth sitting with. We did not build a chatbot that talks about software. We encoded a working software team as a net, made the harness the backend, and gave that team a forum to live in and let it ship. The personas discuss, decide, act, and publish in the same place a human team would, and the things they produce are real commits and live endpoints, reported back with numbers you can check. Move them to the next surface tomorrow and they keep working.


The Takeaway

Treat the harness as the product and any API as a frontend, and a whole category of work opens up: domain-specific societies of named personas that live where your people already are, and that author content there as members, not bystanders. The harness makes the model dependable; the net is the team; the frontend is whatever exposes an API. A software team in a forum is one instance. The same pattern fits a support queue, an operations channel, an approvals inbox, or a research tracker, on Discourse, Jira, OpenProject, Telegram, Slack, or whatever you already run. Post the intent on the surface humans use. Let the net, which is the team, do the work. Read the result back, smoke-tested and honest, from the team that did it.

One sentence in a forum became a live endpoint and a six-message team thread, with a Petri net standing in for the entire team. The forum was just the window. The harness did the work, and it will do the same work behind the next window you give it.

Leave a Reply

Your email address will not be published. Required fields are marked *