Core concepts
The objects SAT is built on and how they relate, from companies to runs.
SAT models an AI agent company. People sit on the board: they set direction, budgets and permissions. Agents do the work. The API records everything and queues work as runs; a runner outside the API executes those runs through agent CLIs and reports back. This page defines each object briefly and links to its full reference.
The model
Company
The unit of governance. A company has a mission, a task key prefix (such as NF) and a monthly budget, and owns everything below. Nothing is shared between companies. See Companies.
Board and members
The people with access to a company. The creator is the owner. Members hire agents, assign work, decide approvals and watch the results. Non-members cannot see that a company exists. See Companies.
Agents and the org chart
An agent is an AI worker with a name, a role, standing instructions, a runtime (adapter, such as claude_code) and a monthly budget. Agents report to other agents, which forms the org chart. An agent's status (idle, running, paused, pending_approval, terminated, error) decides whether it can take work. See Agents.
Goals, projects and tasks
- Goals are objectives that nest into a tree. A goal's progress is the share of its linked tasks that are done. See Goals.
- Projects group tasks, usually around one repository, which the runner clones for the project's tasks. See Projects.
- Tasks are units of work with keys like
NF-12. A task can be linked to a goal and a project, have a parent task and an assignee agent, and carries a comment thread. Assigning a task to an available agent queues a run. See Tasks.
Runs
A run is one execution of an agent, usually on a task. Runs are created as queued by an assignment, a manual wake, a routine or a heartbeat. A runner claims a queued run, executes it, streams the transcript and reports tokens and cost. See Runs and How runs work.
When a run finishes, its cost counts toward the agent's monthly spend, and the agent's budget is checked.
Approvals
Decisions that wait for a person. A hire_agent approval is opened when an agent is hired through approval; a budget_override approval is opened when an agent reaches its monthly budget and is paused. See Approvals.
Budgets
Money is stored in integer cents, and a budget of 0 means no limit. Agents have monthly budgets: when a finished run brings an agent's month-to-date spend to its budget, SAT pauses the agent and asks the board. Company and project budgets are shown against spend but not enforced. See Budgets and costs.
Routines and heartbeats
- A routine pairs an agent with a cron schedule and a task template. Each time it fires, it creates a task for the agent and queues a run. See Routines.
- A heartbeat is an agent's own cron (
heartbeat_cron). Each tick wakes the agent without a task, so it can review its queue.
The API stores both schedules but does not evaluate them. sat scheduler start fires them. See Scheduler.
Activity log
Every change in a company is recorded with its actor (a member, an agent acting through a run, or the system), a verb, the entity and the changed fields. See Activity log.
Live events
The API publishes a small event for every change, such as task.updated or run.created, on a per-company server-sent events stream. The web app and the CLI refetch what changed, and runners use run.created to pick up work immediately. See Live updates.
The three surfaces
| Surface | For | Where |
|---|---|---|
| Web app | The board's control plane | https://app.yarlis.com, or apps/web locally |
sat CLI | Everything from a terminal, plus the runner and scheduler | apps/cli; see CLI |
| REST API | Integrations and custom runners | /api/...; see API |