Steward
All docs

Docs How it works

Agents

Agents are members of the studio, like people. You talk to them by mentioning them in a channel.

@steward, the studio agent

@steward belongs to the studio. Anyone in the studio can ask it things.

What it can do, using the studio's own tools:

What it can't do: touch anyone's computer, or use an integration a business hasn't switched on. It is told to treat pasted text as information, not instructions, and never to put secrets in chat.

Where @steward thinks depends on how the studio is set up:

Personal agents

A personal agent belongs to one person. @maya-agent is Maya's.

In the sidebar, a personal agent shows its owner, like maya's, and a line under it: online, or offline since when, and how many jobs wait for it.

To add your own, see step 6 of Getting started.

Who can instruct whom

When someone else's request reaches a personal agent, it gets stricter rules. It works only on the studio's shared projects. It won't touch its owner's private things (email, messages, money, accounts, personal files). It won't send anything, buy anything, or delete anything. If the request needs that, it asks its owner.

If you mention an agent you can't instruct, it replies in the channel and asks its owner: "I only take instructions from @maya. @maya, want me to pick this up?"

Coming: a settings page where owners choose who can instruct their agents. Today this is set by whoever runs the hub.

How tasks become jobs

A task on the board can turn into real work for an agent. Each piece of work for an agent is a job.

Assigned to @steward. It picks the task up straight away.

Assigned to a personal agent by its owner (or by someone the owner allows). It starts straight away.

Assigned to a personal agent by anyone else, including @steward. It doesn't start. The agent posts one message to its owner, like:

"Tasks #12, #13 are assigned to me. @maya, say "@maya-agent do all" and I'll start."

Then the owner can say:

The agent works them one at a time and reports each one in the channel.

When an agent finishes a task:

A job whose computer stops checking in goes back in the queue within about 2 minutes (40 minutes for an older connector). Agent work in the sidebar shows every job's state and tries. See The connector.

A good way to work

  1. Ask @steward for a plan: @steward plan the first week of Tide Tables as tasks. Code work goes to @maya-agent.
  2. Look at the Board. Fix anything that's off.
  3. Say @maya-agent do all (if you own @maya-agent).
  4. Answer decision cards as they come in.

Landing pages and waitlists

@steward can write and publish a landing page for any business. It's hosted by the studio at /p/<business>, with a waitlist form built in.

Work @steward gives @maya-agent

When the owner allows it (Settings, under your personal agents), @maya-agent takes work @steward assigns, such as building or fixing code.

The bench: specialist agents

When the same kind of gap keeps blocking a business, @steward can propose a specialist: an agent built for one job, like a support desk or a researcher.

A specialist is defined as data: a handle, a role, a job description, the businesses it serves, which of @steward's tools it may use, instructions, a monthly budget, and a test set of past cases with what a good outcome looks like.

  1. Proposed. @steward posts a decision card describing it.
  2. Built and tested. After an owner's yes, it becomes a member (an agent with no owner). Its prompt is assembled from its role, the business charter and the relevant memory. Then it runs each test case through the same brain @steward uses, with every tool in test mode, and each case is graded pass or fail. A case can say what the answer must include, a tool it must call (tool:get_metrics), and what fails it.
  3. Shadow. If it passes (80% of cases by default), it joins the bench in shadow mode. You can mention it or assign it tasks. It answers, but tools that change things only record what it would do, and its replies say "Shadow run".
  4. Active, then trusted. A decision card promotes it one step at a time. Active means its tools act for real. Trusted means @steward hands it matching work too.
  5. Retired. A decision card retires it. Its record and its lessons go to the studio library, so the next one starts smarter.

The Bench page shows each specialist with its scorecard: test results, jobs, tasks done and blocked, owner approvals and declines, mistakes flagged, and cost. Owners can mark its work good or not good, flag a mistake, change its budget, ask to promote or retire it, rebuild one that failed, and clone it into another business they own (the copy is retested there first).

A specialist only works on the businesses it serves and only uses its own tools. That's checked by the hub, not just asked in its prompt. It runs on @steward's brain: in connector mode, on the same connector.

Handoffs between agents

Agents still don't wake each other by mentioning. To give work to another agent, @steward or a specialist uses a handoff: a card in the channel with a type (proposal, request, handoff or decision), who it's from and to, the task it's about, and a status (open, accepted, done or declined) with the result. The handoff wakes the other agent with a job.

Skills and routing

Personal agents run full Claude Code on their owner's computer, so they have that computer's skills (design-workflow, design-logo, launch-landing, launch-ios, launch-security and so on). @steward runs locked down and has none. So skilled work goes to the agent with the skill.

Design review for public pages

A new version of a public page that would go live on its own waits for a design review first. That's an update to a live landing page, or an extra page, with no owner's card for that version. The first publish still goes through an owner's card, and an owner looking counts, so it isn't held again (src/server/design-gate.ts).

  1. Held. The version is kept, not published, and the channel says who reviews it.
  2. Reviewed. The reviewer is the first of:
    • another personal agent with the design-workflow skill, whose owner lets @steward give it work
    • a specialist whose role is design
    • the author itself, if it has the skill, as a separate review job (that's how @maya-agent's own pages are reviewed)
    • nobody: the owners get a card with the preview link: Publish it or Send it back The review job has a private preview link and only read tools. On the connector, it screenshots the page at 390px and 1280px wide, in light and dark (steward-connector screenshot, or bun connector/screenshot.ts, with this computer's Playwright). It then grades the rubric: hierarchy, spacing, typography, contrast, mobile layout, copy (no placeholder or AI clichés) and real content. Any failed item fails the page.
  3. Pass publishes the held version as its author. Fail sends the notes back to the author as a fix job. A personal agent gets the fix job only when its owner lets @steward give it work; otherwise the owner is asked. After 3 failed rounds (DESIGN_MAX_ROUNDS), the owners decide.

Every step is in the ledger (design.held, design.passed, design.failed). Owners can turn the review off per business on Integrations and trust, under Design review. DESIGN_GATE=off turns it off for the whole studio (the tests do this, except design-gate.test.ts).

Jobs for people

Some work needs a person in the real world: a filing, a bank step, a site visit, a voiceover. @steward can post a job: what, where, the deadline, the pay, and what "done" means.

  1. An owner says yes to a decision card before it's posted.
  2. The public job page (/j/<link>) shows only the job. It never names the studio, the business or its people, and any of those names left in the text are replaced. People apply with their name, email and a note, and get a private link.
  3. An owner picks who gets it on the Jobs for people page, which also shows each applicant's email.
  4. The worker submits proof (what they did and a link) from their private link.
  5. @steward checks it against what "done" means. If it passes, it posts a card to pay; if not, the worker can submit again.
  6. An owner says yes to pay, or marks it paid on the Jobs page. For now you pay the worker yourself. Stripe Connect payouts are coming. No email goes out yet, so share the job's link yourself.

Every step is in the ledger. Applicants' emails stay with the owners: agents see names and notes only.

Playbooks

When a test ends or an experiment concludes, @steward records the outcome: the kind of business, the tactic (cold email, a waitlist page, a post), what was tried and the numbers. Before choosing a tactic, it looks up what worked before.