Skip to content

What runs on its own

37 things run without being asked: 9 on a schedule, 23 for as long as the app is open, 3 waiting on something to happen, and 2 you arm yourself. 14 of them can call a model you pay for; the rest cost nothing to run. What each one is for is fixed by the app, and so is how often it runs. Whether it runs at all is yours.

These are the shipped defaults. What you can change lives in a config file you own once TESSERACT is installed, so your copy may differ, and should, once you tune it.

On a schedule

Each of these is a row the app ships, so how often it runs comes with the app. What is yours is turning one off, and moving a row that fires at a set time of day to an hour that suits you.

NameFiresWhat it doesWhat you would lose without itCost
captureevery 5 minutesSeals what the last few minutes produced into memory leaves, and recaps any conversation that has gone quiet.Turns and terminal work would wait for the nightly pass, anything the machine lost before it would never be captured at all, and a conversation held anywhere would leave nothing behind, so the next one would start from nothing.free · your library
consolidate17:00 every daySettles the day into the library: digest, distil, lint, scrub, re-index. It sweeps the agenda on the way.The library would grow by accretion: duplicates never merged, broken links never repaired, indexes drifting from the files they describe.paid · chain_2 · your library
janitor_sweepevery 24 hoursReaps orphaned processes, scratch directories and dead controller sessions.Killed runs leave behind processes holding ports and directories holding locks, and both outlive the thing that made them.free · the machine
morning09:00 every dayReads the projects it owns when the app opens and decides what is worth doing inside them today, then stops and waits.Nothing would ever start without you. Work you have already agreed to, on projects you have already priced, would wait for you to ask for it again every single day.paid · whichever chain the work names · your library
playbook_revision_reviewevery 3 daysCompares each playbook’s newest version with the one before it, and puts the earlier one back when the newer one has gone worse.A rewrite of a playbook can make it worse, and nothing noticed. It only judges two versions that have each been used on enough finished work, and putting one back asks you the same way any playbook change does, unless your security mode lets it through.free · your library
provider_check0 9,17 * * *Checks that every model your roles use still answers, twice a day, and once a day searches for news about their providers and tells you if anything changed.A dead key, a retired model or a new price is found within the day rather than the day something stops behaving. It never changes your settings; you decide.paid · chain_2 · your library
watchmanevery hour, at 15 pastReads what the runtime actually did and reports what broke.Errors, restarts and stalled work would sit in log files nobody opens until something visible failed.paid · chain_2 · the machine
workdayevery hour from 10:00 to 16:00Takes one open task forward each hour of your day, in the same conversation, and closes it when its checks pass. Your own tasks count with or without a project. Any other task needs a project with budget left.Open tasks would wait for you to sit down and ask for each one by hand, even when you had already written them down.paid · whichever chain the work names · your library
working_set_reviewevery 3 daysReads which tools and playbooks you actually use and offers to change what rides every turn: carry the ones it keeps looking up first, stop carrying the ones nothing has touched.What a turn carries is roughly half of what it costs before you have typed anything, and the two gauges that could say whether the list is right have never moved anything. It never edits the list. It shows the change and the use it was computed from, and you decide.free · your library

For as long as the app is running

These have no clock. They wake on an event, a message or a short interval of their own, and they stop when the app does.

NameWhat it doesWhat you would lose without itCost
activity_subscriberKeeps one connection to the agent controller and mirrors its activity here.Work running in the controller’s own process would be invisible to every surface in the app.free · reaching you
alarm_tickChecks the alarm registry every ten seconds and fires what is due.An alarm you set would arrive up to a minute late, which for the one thing you asked to be reminded of is the whole value of it.free · reaching you
autonomy_kernelDrains the event bus, scores what it finds, dispatches workers, and calls out one whose heartbeat has gone quiet.Nothing the assistant decides to do for itself would ever be picked up, recovery after a crash would wait for a person, and a worker that died mid-task would stay listed as running.paid · whichever chain the work names · your library
brief_deliveryPuts the morning brief in front of you at the hour you set.The brief would be written every night and sit in a folder until you thought to go and look for it.free · reaching you
config_watcherWatches the config directory and re-applies a file the moment it is saved.Every settings change would need a restart, and a restart mid-work is how a setting stops being changed at all.free · the machine
controller_heartbeatTouches the agent controller’s heartbeat file while the daemon lives.Nothing could tell a controller that died from one that is merely idle, so a dead one would keep its lanes and never be replaced.free · the machine
email_bridgePolls the assistant mailbox and hands trusted messages to the session.Email sent to the assistant would sit unread until a manual poll, so an approved mailbox conversation could not continue.free · reaching you
entity_signals_pumpPushes entity signals to an open session on a fixed interval.The panels that watch live state would only update when you acted.free · reaching you
governor_detectorWatches the kernel’s own behaviour and pauses a source that misbehaves.A loop that produced the same work repeatedly would keep producing it, and the first sign would be the bill.free · the machine
liveness_feedTells an open Autonomy panel when something it is drawing has changed state, instead of the panel asking again.Every room on that panel polled, so a step taking its turn, or going quiet for longer than it declared, showed up whenever the room next asked. It also left the panel unable to tell nothing happening from not being told.free · the machine
loop_lag_monitorSamples the event loop and reports what blocked it when it stalls.A blocked loop stops health checks, heartbeats and inbound turns at once, and without this the only symptom is an app that feels slow.free · the machine
mcp_client_supervisorKeeps each configured outbound MCP server connected, reconnecting with backoff.A server that dropped once would stay gone until the next restart, and its tools would simply be missing.free · the machine
mcp_session_sweepCloses MCP sessions whose client vanished without saying so.Every abandoned session would hold its stream and its state open until the backend restarted.free · the machine
observer_subscriberWatches the turns of an attached session and proposes what to remember.What is worth keeping would be decided only in the moment, by an assistant busy answering, and most of it would be lost.paid · chain_2 · your library
outcome_watchTells you a task finished and refreshes the Day room, whichever process closed it.A task closed by a named lane, a CLI session or the agent controller reached no phone and no open panel: the wires it replaces only ever fired inside this one process.free · reaching you
pty_feedDrains a terminal pane’s output and, while observing, offers its lines to the observer.Terminal work would reach neither the screen nor the assistant, and what you do in a shell is half of what there is to learn.paid · chain_2 · your library
scheduler_tickWakes once a minute and fires whichever rows are due.Nothing on a schedule would ever run. Every row above depends on it.free · the machine
session_autosaveWrites an open session to disk on your autosave interval.A crash or a power cut would take every turn since the session opened, and those turns are what the library is built from.free · your library
spawn_heartbeatLooks at the background work that is still running, and starts a turn to say what has been going a long time with nothing back.Everything else about a background task speaks when it finishes. Work that simply keeps going would be noticed only when you thought to ask, which is how an eighteen minute run went unchecked.paid · whichever chain the work names · reaching you
spend_day_watchTells every open surface when the spending day turns over.The ledger resets what you have spent at midnight, but only when something next asks it to. Nothing asks on a quiet night, so yesterday’s total stayed on screen until the next thing you were billed for.free · the machine
telegram_pollHolds a long poll open to Telegram and hands each message to the session.Messages sent to the assistant from a phone would arrive only when something else happened to ask.free · reaching you
workspace_reply_retryLooks for a question you asked in a thread that has no answer, and asks the assistant again.A comment got one attempt when you posted it. If that attempt failed you were left with a question, no answer, and nothing anywhere saying so.paid · whichever chain the work names · reaching you
workspace_watchPushes an inbox row to the open app the moment it is written or decided.Half the things that write to the inbox never announced it and nothing outside the backend could, so a row appeared only when you pressed Refresh, and a decision taken on your phone left the window in front of you showing a question already answered.free · reaching you

When something happens

Waiting on a named event rather than on a time.

NameFiresWhat it doesWhat you would lose without itCost
outbound_writerwhen the runtime has something to tell youWrites the opening line of a message the runtime sends you, from the numbers that message already carries.A notice assembled from counts reads like a log line on a phone. Without it, what reaches you and what the panel shows are two different voices about the same event.paid · chain_2 · reaching you
playbook_extractwhen enough tasks have closed done to read one for a procedureReads a task its project’s own checks closed as done and writes the way it was done down as a playbook for next time, or adds the task to a playbook that already says how.A problem solved once is solved again from scratch. Without this, the record of how a task was done is read by nobody.paid · chain_2 · your library
runtime_tuningwhen enough model calls have been billed to judge a ceilingReads what each part of the app actually spends and offers to change a daily spending limit that is stopping work, or one set so high it is not a limit.A limit is set once, on a guess, and then nothing ever looks at it again. Without this, work is turned away all week and the only sign is that something did not happen. It never changes a limit. It shows the change and the spending it was read from, and you decide.free · your library

When you ask for it

Nothing here runs until you arm it.

NameWhat it doesWhat you would lose without itCost
scheduled_taskRuns a recurring task you described, on the cadence you gave it.Asking for something to happen every week would mean writing a job module for it, which puts it out of reach from a conversation.paid · chain_2 · reaching you
tool_callRuns one tool on the cadence you gave it, and sends you what it said.Polling a mailbox or a feed meant writing a job that reimplemented the tool that already does it, which is a second copy of the work and a second copy of its permission story.paid · whichever chain the work names · reaching you

What the cost column means

Free work runs on this machine and calls nothing you are billed for. Free · local model needs a local model server running and still costs nothing to use. Paid means a call to a provider you hold a key for, on the chain named beside it — and where the chain is chosen by the work rather than fixed in advance, it says so.

Nothing here is billed per run in advance. What each of these actually spends is capped, and the ceilings are on the Costs page.

Why every entry has to say what it is for

An entry that cannot say what would be lost without it is one nobody decided to keep — it was inherited. The runtime refuses to start with a blank in either column, which is why this page can be generated at all rather than written from memory.

TESSERACT v1.1.3 — documentation built 9 Oct 2026