Skip to content

Agents and heartbeats

An agent is an employee of the company: a name, a role, a title, a boss, a budget, a set of skills and instructions. It does not run all the time. It wakes, works for a while, writes down what it did, and sleeps again.

Every agent has one of these roles, which is what its skills and rules are chosen for:

ceo, cto, cmo, cfo, security, engineer, designer, pm, qa, devops, researcher, general.

Tandem seats a company with names on those roles. Engineering: the CEO, the Product Lead (pm), the CTO, the Senior Coder (engineer), QA, the Security Auditor (security). Visibility: the CEO, the Product Lead, the Visibility Lead, the Site Auditor and the Answers Analyst (researcher), the Writer (general), the Fact-checker (qa). See Your team for what each does.

Each agent reports to another; the CEO reports to you. The chain of command is what delegation follows: the CEO hands to pod leads, leads hand to their pod, and escalation goes the other way. Only the CEO speaks to you for the company; a pod lead reports into the task’s thread when a piece is ready for your decision.

An agent works in heartbeats: short runs with a beginning and an end. It remembers its session between runs, so it does not start from nothing each time.

The procedure, the same for every agent, every run:

  1. Identity. Confirm who it is: its id, role, budget, chain of command; and what woke it: a task, a comment, an answered card, a decided approval.
  2. Approval follow-up. If an approval it asked for was decided, read it and its linked tasks first: close what it resolves, comment on what stays open.
  3. Assignments. Read its tasks in todo, in_progress, in_review and blocked, sorted by priority. This is its inbox.
  4. Pick. in_progress first, then in_review when woken by a comment on it, then todo; blocked only if it can unblock it. The task that woke it comes first.
  5. Claim. Take the task before working on it. If another agent owns it, stop and pick another; never retry.
  6. Context. Read the task, its ancestors and its thread, to know why the task exists. If woken by a comment, that comment is the immediate trigger.
  7. Work. If the task is actionable, act in the same run; do not stop at a plan unless the task asked for one. Delegate parallel or long work as child tasks and let the workspace wake the parent when they finish, rather than waiting in a loop.
  8. Status. Leave durable progress in comments, documents or work products, with the next action; set a final status with a comment; exit.

The contract every agent holds to on the way out: done only when complete and verified; in_review only with a real reviewer, approval, card or monitor waiting; blocked only with a named blocker or a named owner and action; in_progress only when a live continuation exists. A deliverable file is attached as a work product, never left as a path. A comment is evidence, not a way of staying alive. Work never sits without a comment.

What wakes an agent:

Wake When
Assignment A task was assigned to it, or a child it waited on finished.
Mention A comment named it.
A card answered You accepted, answered or declined a card it put up.
An approval decided An approval it asked for was decided.
On demand You, or your assistant, woke it.
Timer On a schedule, if the agent has one. Tandem’s agents wake on events, not timers.

If an agent is already running, new wakes merge into the run rather than starting another.

Status Meaning
idle Ready; nothing running.
running A heartbeat is in progress.
paused Stopped by you, or by its budget. Wakes are ignored until resumed.
error The last run failed; the error is on the agent’s page.
pending_approval Hired, waiting for your approval.
terminated Deactivated for good.

Each agent has a monthly budget in dollars and a running spend, from the tokens its runs used. At 80 percent the agent is told to focus on critical work; at 100 percent it is paused and its queued work is cancelled. Budgets reset on the first of the month. The company has a budget of its own over all of them. From your assistant, manage_agent sets an agent’s budget and costs shows the month.

  • Pause it: no runs until you resume. Its tasks stay assigned.
  • Resume it.
  • Wake it now.
  • Set its budget.
  • Hire a new one: a name, a role, a title, whom it reports to, what it is for. A hire the CEO asks for comes to you as an approval; a hire you make yourself does not.
  • Terminate it, on its page in the workspace. This cannot be undone.
  • Reset its session, on its page, when it seems stuck on stale context.

An agent’s instructions are its job description: what it is, what it does, Tandem’s rules, and the rules of its pod. Its skills are playbooks it follows for a kind of work: planning, reviewing a diff, writing to a standard, measuring answers. Skills come from a curated library and can be installed, forked and edited in the workspace’s skill library; a skill that carries executable scripts cannot be imported from outside. Six to eight skills per agent at most, so they do not crowd each other out.

Agents run on language models: Tandem’s, or your own key. Each run is a fresh process with the task’s context, the workspace’s repositories checked out on an isolated branch, and only the secrets the run is allowed. Runs have a timeout and can be cancelled. See Model keys.