---
title: "The whole system"
url: https://services.dev/docs/start/system
captured: [legal-check.txt]
---
# The whole system

URL: https://services.dev/docs/start/system

> One Service({...}) becomes a whole business. The file, the objects it creates, the two rules that hold them together, and how the Service and services.dev earn.

Describe the work in one `Service({...})`. Place people where you want them; by default there are none, and AI delivers every job. Sell it everywhere: the file becomes your API, CLI, MCP server, SDK, site, docs and an app for everyone in the job.

## The whole system, in one file

Translation, grown: a sworn translator signs, the registry files it, and a renewal date outlives the job. Each comment names the object a key creates:

```ts title="services/translation.ts"
export default Service({ // Service
  name: 'Translation',
  input: { document: 'file', to: 'language', client: 'party' }, // Parties
  output: { document: 'file', filing: 'text' },
  rules: rules(), // Rules: sign is reserved
  roles: { translator: { pool: translators(), pay: 30 } }, // Pool, and its Tasks
  deliver: { // Steps, each committed by the Gate
    translate: 'ai',
    harden: { review: 'adversarial', lenses: ['meaning', 'terms'] },
    sign: { by: 'translator', stamp: true }, // Task: a member signs
    file: { submit: 'https://registry.example.test/filings', receipt: 'filing' },
  },
  subject: { kind: 'filing', key: 'filing' }, // Subject
  clocks: { renewal: { due: '1y after file', owner: 'buyer', lives_on: 'subject' } }, // Clock
  price: { usd: 89, release: 'file' }, // Money: charged on the receipt
})
```

Fourteen lines, and every object on the map is in them or made from them: each order is a Job with its Record, the Surfaces and apps are generated, and the Brand is the one file beside it.

- Define: **Brand** (domain · words · credentials · fees) owns **Service({...})** (input · output · steps · price) bound by **Rules** (reserved · open · refused)
- Generate: **Surfaces** (API · CLI · MCP · SDK · Site · Docs) and **Apps** (customer portal · delivery portal · owner console)
- Order: **Buyer** (a person, or their agent) orders **Job** (record · ledger · parties · clocks)
- Deliver: **Steps** (work · review · ask · submit) propose to **Gate** (graph · mechanics · merits · authority · proof) commits to **Record** (append-only, the one source of status)
- People: **Role step** (the act a credential covers) posts **Task** (offered, never assigned, fee fixed at post) to **Pool** (members, eligibility, dispatch, pay, door)
- Money: **End** (delivered · accepted · a receipt · a won deal) releases **Charge** (held until its fact is on the record) splits on **Ledger** (pay · pass-through · AI · fee · your margin)
- Time: **Subscription** (a schedule or an event) mints Jobs on **Subject** (kept facts · periods · who is of record) carries **Clocks** (dates the world sets, with rungs)

**One business, many brands.** `brand.ts` renames the core in the business's words (a job is a matter, a member a signer), and several brands can sell the same Services from one Pool:

```bash
npx services.dev check
```

```txt title="magic values: none"
brand.ts · 10 lines · legal · api.lawyer · words job → matter, subject → asset, task → review, member → signer, pool → network, end → outcome
```

## Two rules hold it together

**Every doer proposes, and the gate commits.** AI, a person, your code and another Service reach the record the same way. Each one proposes, and the gate checks the proposal before it writes. An AI draft and a licensed signature carry the same kind of evidence, and a key that tries a person's act is refused the same way every time.

**Every surface renders one contract.** The API, the CLI, the MCP server, the SDK, the site, the docs and the apps are renderings of the same [registries](https://services.dev/docs/surfaces/contract.md). No surface renames anything. `Brand.words` is the one renaming, and you declare it.

## How it earns

Every Service states its price, and every charge waits for the fact it names: delivery, acceptance, a receipt or a verified outcome. When it releases, one ledger splits it, and the buyer, you and each member read the same lines:

**you = charge − tax − processing − AI − pay − pass-through − coverage − placement − nested Services − services.dev's take**

services.dev's take falls on the value your brand adds, less on higher plans. It never touches pay, a pass-through, placement or a licensed fee, and an uncharged job pays none. [Your plan](https://services.dev/docs/money/plans.md) decides which keys run on live jobs:

| Plan | For | Adds |
|---|---|---|
| Free | Sell your first Service | Every surface and app, on your builder.domains address; Every review pattern, at any depth; All seven asks, filings with receipts, and clocks on the job; You and two staff as signers; Per job, per unit, tier, self-help and approval prices |
| Launch | Your name, your people, work that recurs | Your own domain on every surface; Your own Pool of five, a rented one, or yours on an existing door; Payout schedules, with a hold on new members; Subjects, kept facts, clocks that outlive the job, subscriptions; Outcome pricing, pay at the win, and a sample that falls |
| Team | Run a market, paid on the win | Pools to 50, with cascade, tiers, golden Tasks and firms; A door of your own, with a demand board; Standby for a dated season, and one Pool across brands; Share pay to members, and the custodian ladder; Tenants, Rules across regions, staff SSO and custom roles |
| Scale | Pass the buyer's review | Unlimited members in Pools you own; SCIM, audit export and SIEM; Private deploys and data regions; Practice workspaces; Your Pool, exported for other operators |

`check` names the plan live jobs need, line by line:

```txt
$ npx services.dev check
services/translation.ts · 14 lines · $89 per job, within 48 hours, charged on file's receipt.
  plan    Launch (services.dev) · roles.translator.pool at services/translation.ts:6 · subject at :13 · clocks at :14
          every key runs in test on any plan · deploy --live asks for Launch
  take    your plan's take on each released charge · never on the translator's $30.00
```

Sign the act yourself, with no `pool`, keep the clock on the job, and it sells on Free. [Money](https://services.dev/docs/money.md) is how a Service earns and pays, line by line.

## The default, and what each key adds

With input, output and a price, a Service has one AI step and one adversarial review, and it's charged on delivery. No person touches it. Everything else is one key you add:

| You add | The business gains | Shape | Live on |
|---|---|---|---|
| [`review`](https://services.dev/docs/grow/review.md) lenses and rounds | a draft hardened before it ships | lingua | Free |
| [an `ask`](https://services.dev/docs/grow/ask.md) | the buyer or client signs, consents, answers, uploads, decides or grants | any | Free |
| [`human: 'risky'`](https://services.dev/docs/people.md) | a person you choose looks at the jobs the review flags | lingua | Free |
| [`rules` and a `role`](https://services.dev/docs/grow/role.md) | a credentialed person performs the reserved act: licensing met by design | api.lawyer | Free when you sign; Launch with a Pool |
| [a `submit`](https://services.dev/docs/grow/submit.md) | filings with typed receipts, routed rejections and repair windows | api.lawyer, apis.tax | Free |
| [`clocks` on the job](https://services.dev/docs/grow/clock.md) | dates the world sets, acted on before each one | apis.tax | Free |
| [a `subject` and its clock](https://services.dev/docs/service/subject.md) | obligations that run for years | apis.tax | Launch |
| [`price` forms and an `outcome`](https://services.dev/docs/money.md) | every way the work earns, each released on a fact | api.forsale | Free per job; Launch for an outcome |
| [a Pool's tiers and firms](https://services.dev/docs/people/pool.md) | a market of members, ranked by their record | any with people | Team |

## Next

**[Services as software](https://services.dev/docs/start/why.md)**: why the finished job is what you sell, and the one question that decides it.

---

- Up: [Your first paid job](https://services.dev/docs.md)
- Previous: [Your first paid job](https://services.dev/docs.md)
- Next: [Services as software](https://services.dev/docs/start/why.md)
