Work 02 of 9 · Playbook B
Mainspring
The scheduler that keeps autonomous agents on time and in context.
- Playbook
- B · AI & agent products
- Variant
- B1 · Framed dark canvas
- Loud idea
- Frame rails and crosshairs
- Type
- Inter 400 · Inter · Geist Mono
Autonomous agents, on time and in context.
Trigger agents from cron, webhooks or events. Every run starts with its memory, tools and state restored.
One timeline for every agent. Retries and approvals, in order.
See what ran, what’s running and what’s waiting on a person. Every run keeps its trigger, its memory checkpoint and its budget.
SchedulesTue · Sep 23 · UTC
5 agents1 retrying
Daily briefCron · 06:30
Done · 42 min
Lead enrichmentWebhook · crm.lead
Running · 73%
Invoice follow-upEvent · invoice.overdue
Needs approval
Support triageCron · every 30 min
Retry 2 of 3
Memory compactionAdaptive · off-peak
Queued · 12:30
- Runs today
- 1,284
- Resumed
- 97.6%
- Start delay
- 1.8 s
Trigger on anything.
Start runs from cron, webhooks, queue events or a wake-up time the agent picks itself.
Resume with memory.
Each run restores its memory, tools and state from the last checkpoint.
Stay within budget.
Token budgets, timeouts and tool approvals stop runaway jobs early.
Give every agent a schedule. Start with one package.
npm i @mainspring/sdkNode 20+ and Python 3.11+ · Free for 10,000 runs a month
Brief
What it had to do.
- Subject
- Durable scheduling and memory for teams running AI agents.
- Audience
- Platform engineers shipping agent workflows to production.
- Job
- Start building, or read the runtime docs.
- Proof
- A live schedule panel built in HTML with realistic runs.
Token plan
Written before any code.
design.md’s Agent Protocol asks for this table first. Ratios are WCAG 2, measured on the surface each color actually sits on.
| Color | Hex | Role | Contrast |
|---|---|---|---|
| Canvas | #000101 | Page | — |
| Panel | #09090C | Product surfaces | — |
| Ink | #ECEBE7 | Body text | 17.52:1 |
| Warm gray | #8A857B | Secondary text | 5.42:1 on panels |
| Frame | #1F2020 | 1px rails (12% white) | — |
| Cyan | #22D3EE | Data only | — |
Decisions
Why it looks this way.
- 01
The loud idea is the frame: 1px rails and crosshair glints. The hero stays a still radial glow, so the page spends no ambient-loop budget.
- 02
Section titles are two-tone (white, then warm gray) — a quiet system device, not a second loud idea.
- 03
Qronos ships #757168 secondary text (4.30:1); Mainspring uses #8A857B (5.42:1).
- 04
Product-mock labels are 10px Geist Mono at +0.1em — data labels, never body text.