16 / 1820 min read

Design Your Own OS

Give the system one relationship, then route the work behind it.

One relationship

As agent systems grow, builders are tempted to expose every model, tool, worker, and mode. The result feels like a control room designed for the person who wired it. A useful operating system begins with one front door: one place where the user can state an outcome, recover context, review risk, and receive proof.

Your front door might be a chat, command palette, inbox, form, or voice interface. It should not perform every task itself. It owns the relationship: understand the person's intent, consult current truth, route the work, surface approvals, and return the result in language a person can act on.

People should not need an org chart of agents before they can ask for help.

A control layer behind the interface

A conversational surface without a truth layer becomes a charismatic guesser. The control layer holds durable knowledge, task state, runtime routing, and proof. It decides what the system knows, which worker fits the job, and what evidence is required before a result can be called complete.

This separation keeps the interface simple without making the system simplistic. The user's relationship can remain consistent while the worker underneath changes from a coding agent to a research agent, local operator, browser operator, or human.

  • The front door owns the conversation and user experience.
  • The control layer owns truth, routing, state, and receipts.
  • Workers own bounded execution.
  • The dashboard exposes state without becoming the relationship.

Commands, not a maze

The front door should accept outcomes in the user’s language: prepare this meeting, fix this build, reconcile these notes, or show what changed. Behind that simple request, the system can form a task packet with scope, context, constraints, owner, approval rules, and completion evidence.

Expose complexity when it helps the decision. Show the worker, sources, risk, and receipt—not every internal token or intermediate thought. The user needs control and legibility, not a stream of machinery.

Case file

routing a dashboard repair without losing the relationship

A user tells the front door, ‘fix the projects page and show me on desktop.’ The system keeps that sentence as the originating intent, then resolves the canonical repository, the current desktop shipping path, recent decisions, and the proof required for an installed-app claim.

The control layer forms a request envelope and routes a bounded task to a coding worker. The worker may inspect and edit source, run local checks, and return a candidate. The task does not become complete merely because the source builds: the original request explicitly names the desktop surface, so the job stays open until the installed application is refreshed and observed.

The front door remains the relationship throughout. The user does not need to open a separate conversation with the coding worker, remember which checkout is canonical, or translate a local build into a desktop verification plan. The specialist changes; the request identity and accountability do not.

Decisions made

  1. 01Keep the user’s original wording and derive an executable packet beside it.
  2. 02Route implementation to a specialist while the front door owns clarification and delivery.
  3. 03Carry the requested proof surface—desktop—into the acceptance criteria.
  4. 04Return a layered result: source changed, local checks passed, desktop refreshed, installed behavior observed.

One front door is not a branding choice. It is an architectural boundary that protects task identity, hides replaceable worker topology, and keeps the definition of done attached to the user’s request.

Escalation is navigation

A good front door knows when the path is unclear. It asks a narrow question when two choices materially change the result. It requests approval before a sensitive action. It reports a blocker with the attempts already made. These are not conversational niceties; they are navigation rules for the system.

The goal is not zero human involvement. The goal is to spend human judgment only where it changes the outcome.

Failure mode: many assistants

Without a front door, every worker develops a separate memory, tone, task list, and definition of done. The user repeats context and becomes the router. The agents may be individually capable while the system remains exhausting.

Fix the relationship first. One intake path, one task identity, one truth layer, and one receipt format create coherence. Specialized workers can multiply behind that boundary without multiplying the user’s burden.

The request envelope

Natural language is an excellent intake format and a dangerous execution format. ‘Fix the dashboard’ carries intent, but it does not identify the repository, current branch, affected surface, user-visible defect, allowed changes, deployment target, or evidence of success. The front door should preserve the original request while translating it into a versioned request envelope that the rest of the system can inspect.

The envelope is the stable identity of the job. It links the conversation to task state, source material, worker runs, approval decisions, and final receipts. A follow-up such as ‘make it mobile too’ should amend that same job or deliberately create a dependent one; it should not vanish into a later chat turn with no relationship to the first run.

This is where conversational design becomes systems design. The interface can remain warm and natural, but every meaningful commitment becomes structured state. The user sees a coherent relationship while the system gains identifiers, schemas, timestamps, and deterministic transitions.

  • Preserve the user’s original words as intent, not as the whole specification.
  • Give every request a stable identity and an explicit current state.
  • Record assumptions separately so they can be corrected without rewriting history.
  • Attach every worker run, approval, and receipt to the same request lineage.

Choose the orchestration shape

A front door does not imply one giant agent. Behind it, the system can use three different relationships. A manager keeps control and invokes specialists as tools. A handoff transfers control to a specialist that now speaks directly within the interaction. An agent-as-tool performs a bounded subtask and returns a result to the manager. These shapes have different failure modes and should be chosen intentionally.

Use a manager when one agent must preserve the user relationship, combine several outputs, or enforce a common policy. Use a handoff when the specialist needs an extended dialogue and the transition itself is meaningful to the user. Use an agent as a tool when the work has a crisp input and output, such as reviewing a diff, classifying a request, or preparing a source-backed brief.

The mistake is to confuse internal specialization with user-facing fragmentation. One front door can remain the manager of the relationship even when a coding worker repairs code, a research worker drafts a narrative, and a local operator runs a controlled machine task. The orchestration topology is an implementation decision; the front door is a product promise.

Conversation is a view, not the source of truth

Chat history is useful evidence of what was said, but it is a poor database for what is currently true. It mixes requests, abandoned ideas, corrections, temporary observations, and final decisions in one chronological stream. If the system reconstructs state only by rereading chat, a minor ambiguity can change the task on every turn.

Instead, let conversation propose state transitions. The control layer records the accepted objective, current owner, approval status, blockers, decisions, and proof in structured records. The front door then renders those records conversationally. A sentence like ‘the site is live’ should be generated from a deployment receipt and a current public check—not from the fact that an earlier assistant said it deployed.

This separation also makes interfaces interchangeable. The same task can appear in chat, a dashboard, a mobile notification, or a command-line view without creating four versions of the truth. Each surface is a lens over the same request and event history.

Across the business

What this looks like in other departments

The engineering principle stays the same; the workflow, risk, and proof change with the domain.

People & HR

One employee help desk

Let employees ask one place about benefits, leave, policies, onboarding, or equipment while routing each request to the right source and owner.

Finance

One intake for money questions

Accept budget, invoice, reimbursement, and forecast requests through one interface while preserving distinct data and approval paths behind it.

IT & security

One service relationship

Hide ticket categories and specialist queues behind a clear request experience that surfaces risk, approval, progress, and resolution evidence.

Small-business owners

One operating assistant

Use one front door for customer, schedule, vendor, cash, and delivery questions while specialized workflows remain replaceable behind it.

Technical deep dive

The request and routing state machine

Translate a conversational request into durable work without turning the interface into a form wizard.

  1. 01CaptureStore the original request, actor, channel, timestamp, and conversation reference. Do not overwrite the user’s words with the system’s interpretation.
  2. 02ResolveRetrieve the canonical project, relevant truth, active decisions, current runtime state, and any ownership conflicts that constrain the work.
  3. 03SpecifyCreate the objective, scope, assumptions, authority, acceptance criteria, risk class, and receipt requirements. Ask only when an unresolved choice materially changes the result.
  4. 04RouteChoose manager, handoff, or agent-as-tool orchestration and bind the selected worker run to the stable request identity.
  5. 05ReconcileReduce worker events, approvals, and evidence into current task state, then let the front door explain the result and remaining risk in the user’s language.

Reference schema

request.id: stable identifier
request.intent: original user language + actor + channel
request.spec: objective + scope + assumptions + acceptance
request.authority: allowed actions + approval policy
request.route: manager | handoff | agent_as_tool + worker
request.state: queued | active | waiting | blocked | verifying | complete
request.evidence: events + approvals + receipts + remaining risk

Try it yourself

Design the front door

Write the contract for the one interface a person should use to ask your system for help.

  1. 1List the five requests it must understand first.
  2. 2Define what context it may retrieve automatically.
  3. 3Define which decisions it must surface.
  4. 4Write the shape of a successful result and receipt.

Reusable artifact

Front-door contract

A boundary between a simple experience and a capable system.

User request: [outcome in natural language]
Context lookup: [sources the control layer may consult]
Routing: [how the worker is selected]
Approval: [conditions that pause execution]
Return: [result, status, and receipt]
Escalation: [question or blocker format]

Before you move on

Receipt checklist

  • The user has one primary intake path.
  • Truth and execution are separate responsibilities.
  • Escalation rules are explicit.
  • Every completed request returns evidence.

Primary sources

Further reading

Home
Book
Blog
Calugaru Labs
GitHub
LinkedIn
Email
Theme