Run your Service
Running a Service once it is live, from the owner's seat. Each alarm runs the response your files name, your coding agent acts within the ceilings you set, and the owner console lists only what is left, each item with its control. Every control is a CLI and API call, and every threshold is a key you deploy.
Money releases on the facts each Service names, with no hand of yours. Running the business is your files' job first: each alarm runs the response you wrote, your coding agent takes what the files leave within the ceilings you set, and the owner console lists the rest under needs you.
api.lawyer, a week after an incident its files answered on their own:
open https://api.lawyer/console # Monday 16 Nov, 08:00api.lawyer · live 2026-11-09.1 · Team · this week 96 matters · charged $31,404.00 · attorneys' own fees $15,925.00 · AI $118.60 · cover and processing $1,148.00 · you $14,212.40, less the take
needs you 4 · each with its control
line docket-watch.ack clears the high bar: 0 changes in 1,206 acks · frees $763.80 a month · apply to move it to a sample
support 1 refund request, 1 dispute that sends itself 17 Nov, 1 contest to rule
done for you 2 · on the audit log
respond 9 Nov 09:40 · quality.alarm on trademark-response.draft · rerouted to attorneys until 14:20 · inc_4Lp1 closed, $4,045.68
agent 9 Nov · moved contract-review.flag back to AI alone, then deployed 2026-11-09.1 with the draft pinned to a build
quiet no alarm on quality, the Pool, spend or limits · 0 holds · suite green on 2026-11-09.1
budgets trademark-response 71% of its 28-day send-back budget left · every other Service over 90%
next line none open: the other 7 people on the line hold reserved acts · their act time fell 18m → 11m this quarter
dates 0 at risk · next 30 days: 41 office dates, each with an owner
ran alone 92 matters delivered with no hand of yours · 312 thread questions answered by AI · 0 refusals chargedEvery line under needs you carries its control. Everything under quiet has an alarm that fires before it needs you, and the budget it has left.
npx services.dev console --since 90d --liveapi.lawyer · live · 17 Aug → 16 Nov · 1,104 matters on 3 versions
AI alone steps AI committed with no person: 61% in August → 78% in November
you 190 minutes a week on the console in August → 35 in November
acts 412 attorney acts, each signed · reserved acts never move
line 2 moved down, each from a proposal you applied: docket-watch.check to AI alone on 14 Sep, contract-review.flag to AI alone on 19 Oct
1 reverted on its own: contract-review.flag, 26 Oct, the week its bar broke · moved again 9 Nov
margin 38% in August → 45% in November, after attorneys' fees, AI, cover and processingEach line that moved came from a proposal you or your agent applied, and the one revert happened on its own (Move a step to AI).
| You | Page | The calls | Plan |
|---|---|---|---|
| take a version live, in stages | Deploy | deploy, deploy --live --stages <shares> --hold <span> | every plan; stages on Team |
| prove it before a buyer sees it | Test and live | test-clocks create <time>, verify --test-clock <tc> | every plan |
| change it under jobs in flight | Versions | jobs repin --from <version> --to <version>, rollback <version> | every plan |
| see where a job's time and money went, and who acted | Observe | jobs trace <job>, audit --since <date> | every plan |
| keep the work good | Quality | quality <service>, evals run <evl> --against <version> | evals on Team |
| let AI earn more of it | Move a step to AI | line <service>, line apply <service> | Launch; holdouts on Team |
| keep your Pool filled and paid | Pool health | pools health <pool> --since 7d, pools standby <pool> --role <role> --in <region> --season <from>..<to> | Launch |
| keep every date the world sets | Dates at risk | clocks assign <clock> <member>, clocks satisfy <clock> | every plan |
| stop the damage when something breaks, and close it on the record | Incidents | hold <service>.<step>, incidents get <inc> | every plan |
| answer buyers | Support | jobs refund <job>, disputes get <dsp> | every plan |
| know where the ceilings are | Limits | limits, plan upgrade <plan> | each plan's own |
Each page shows the call, the event it writes, what the console shows, its plan and a moment from api.lawyer, apis.tax or api.forsale.
Every threshold the console holds you to is a key you wrote, so a change to how the business runs ships through a deploy like any other:
| Event | Fires when | Set by | The answer |
|---|---|---|---|
quality.alarm | a Service burns its send-back, delivery-time or missed-date budget too fast, as below; a missed date the world sets, on its first miss | slo | hold the step, or reroute it to people; respond: { hold: 'draft', to: 'attorney', pay: 120 } |
spend.alarm | a step's AI a job passes twice its 30-day median | Brand.ai.alarm | hold the step; respond: { hold: 'draft' } |
ai.exhausted | a job's AI reaches its budget | price.ai | fund it, hand the step to a person, or end the job |
ai.capped | the brand's AI for the day reaches its ceiling | Brand.ai.daily | raise it, or let AI steps wait for the next day |
pool.alarm:claim_slow | time to claim passes its p90 | Pool.health.claim_p90 | raise a rung sooner; respond: { raise: 'sooner' } |
pool.alarm:unreached | a Task no eligible member reached | on with every Pool | invite from the door, or widen the region; respond: { invite: true } |
pool.alarm:no_eligible | no eligible member for a role and region | Pool.health.no_eligible | offer a standby seat, raise a rung sooner, or invite; respond: { raise: 'sooner' } |
pool.alarm:overloaded | claimed hours pass a share of declared hours for a week | Pool.health.load | offer a standby seat |
pool.alarm:payout_late | act to funds in a member's bank passes its p90 | Pool.health.payout_p90 | the payout's trace, on the console |
pool.alarm:cover_lapsing | coverage on an act lapses inside its window | Pool.health.cover | renewal, or the custodian ladder |
clock.vacant, job.at_risk | a date no one answers for, or a job three-quarters through its within | clocks, price.within | Dates at risk's controls |
limit.reached | a key, a job or the brand reaches a ceiling | Brand.limits, your plan | plan upgrade, or raise the key; your agent, by owner.agent.offers_up_to |
line.ready | a step's evidence clears its bar | human.evidence | line apply; your agent, by owner.agent.line |
line.reverted | a moved line's bar breaks, a model change no eval carried, or a new slice | human.evidence | none: it already moved back |
holdout.found | a person finds a defect on a holdout job | human.holdout | none: the redo runs at no charge |
quality.alarm reads a Service's objectives, with a 28-day budget for each. It fires when the budget burns 14 times too fast over both the last hour and the last 5 minutes, or 6 times over both 6 hours and 30 minutes, and never on fewer than 10 jobs. A missed date the world sets alarms on its first miss:
slo: { sendback: '5%', delivered_p90: '5d', dates_missed: 0 },respond runs in seconds, and Incidents shows it. owner.agent is the standing order for your coding agent on anything respond doesn't cover, and owner.notify says where each kind of news reaches you:
owner: {
agent: { offers_up_to: 'team', hold_on: ['quality.alarm', 'spend.alarm'], line: { standard: 'apply', high: 'propose' }, reroute_pay_up_to: 150 },
notify: { alarms: 'sms', needs_you: 'email daily 08:00', quiet: 'weekly' },
},A reserved act is on neither list: no response and no agent reroutes it, moves its line or acts in it. What is left after both lists is yours. The audit log shows who did each act.
Several Services under one brand share one console and one ledger: your business.