Pricing

Two plans, and both do everything

You pay for machines. Every plan drives devices, reads your own data, runs in CI and carries the whole agent runtime — there is no tier that unlocks a feature, no add-on for performance, and nothing on this page you have to talk to someone to find out.

Plans

Pick by how many machines you have

Solo

$39/month

for one machine

Everything the product does, on the machine you work on.

  • 1 machine
  • 1 CI run at a time
Get SoloCancel any time, yourself

Team

Most popular

$159/month

for 5 machines — about $32 each

A small team, and a second CI run in flight for busy pull-request days.

  • 5 machines
  • 2 concurrent CI runs
Get TeamCancel any time, yourself

Enterprise

Let’s talk

priced on machines, invoiced yearly

More machines than five, invoicing, and a procurement process to satisfy.

  • As many machines as you need
  • CI concurrency to match
  • Invoice, PO and bank transfer
  • Security review and SSO conversations
Talk to usA quote within two working days

What you get

No tier unlocks the agent runtime and nothing here is an add-on. The plans differ by the two countable things above — machines and CI slots.

  • Drive real devices

    Simulators and devices over real HID — taps the app cannot tell from a finger.

  • Flows that heal

    Selectors survive a moved control, so a redesign is not forty broken tests.

  • Record and replay

    A session becomes a file: replay it, assert on it, diff two runs of it.

  • Runtime inspector

    Eleven node kinds and the causality edges between them, not a flat log.

  • Performance

    Twelve detectors, baselines, and a regression that fails the pull request.

  • Product analytics

    Funnels, retention, affinity and friction — over the same rows as the traces.

  • Agents and MCP

    Eighty tools, the intent runtime and a deny rail your agent obeys.

  • Yours, offline

    A signed grant works with no network, and captured data stays in your repo.

  • Fourteen-day trial, no card
  • Cancel any time, yourself
  • No per-seat metering
  • VAT handled at checkout

After you buy

Two commands, then it is yours

Your key arrives by email the moment the payment clears. Activation exchanges it for a signed grant on this machine.
Terminal
npm install -g @squiggle.sh/clisquiggle activate
  • You do not type the key into the command. squiggle activate prompts for it, masked as you paste. Passing it inline works and warns — a key given as an argument is written to ~/.zsh_history in plain text, where it outlives the terminal and syncs to backups.
  • The key is exchanged, not stored. What lands in ~/.squiggle/license.json is a signed grant; four characters of the key are kept so squiggle license has something to show you, and nothing more.
  • One key, three front doors. The same grant is read by the CLI, the MCP server and the desktop app, so activating once is activating everywhere on that machine.

Trial

Fourteen days, no card, everything on

A trial carries the top tier deliberately: a trial that quietly withheld something would teach you the product lacks it.
Terminal
squiggle activate --trialsquiggle license
  • No card, and no checkout. One command. It is the same binary you keep afterwards, so nothing changes shape when you pay.
  • Once per machine, ever. Honestly stated rather than discovered: the fingerprint is remembered server-side, so a reinstall does not reset it and neither does a new email.
  • It ends by expiring, not by breaking. Paid commands start refusing with the reason; your captured data, your flows and your recordings are files in your repo either way.

CI

Runners do not burn seats

A CI runner is a new machine on every build, so binding a seat to one would exhaust a Team licence by Friday. It is a separate credential with a separate limit.
ci.yaml
env:  SQUIGGLE_LICENSE_TOKEN: ${{ secrets.SQUIGGLE_LICENSE_TOKEN }}
  • Not machine-bound. The token is checked out per run and holds a short lease instead of an activation, so it never appears in your seat count.
  • Concurrency, not volume. There is no cap on how many runs you do in a month, only on how many are in flight at once. A finished runner frees its slot within minutes, and an over-limit run is told which limit it hit rather than failing on a bare exit code.
  • Every plan runs in CI. Solo gets one run at a time, Team two. Gating CI behind the higher tier would have been a feature gate wearing a quantity’s clothes — and it would have rationed nothing, since the runs happen on your runners and your compute, not ours.

Questions

Before you buy

Five things worth knowing, answered with the mechanism rather than a reassurance — each one is a property of the licensing code.
What counts as a seat?
A machine, not a person. Activation binds to a hardware fingerprint, so the same developer on a laptop and a desktop uses two — and a machine you activate twice still uses one.
Can I move a seat to a new machine?
Yes, yourself, at any time. Freeing a seat happens in Polar’s customer portal under Licenses, and the released machine stops being entitled at its next revalidation. We never hold your key — only its last four characters — so this cannot be a support ticket.
Does it phone home before every command?
No. Activation writes a signed grant to ~/.squiggle and it is honoured offline until it expires. Revalidation happens in the background, after the command has already run — a licence check never adds latency and never fails a run on a train.
What happens if I cancel?
The grant is clamped to your subscription, so it never outlives what you paid for. Paid commands then refuse by name and everything free — activate, license, doctor, --help — keeps working. Nothing you already captured is locked up: the store is SQLite and JSONL in your own repo.
Is it per-user or per-machine billing?
Team is one purchase covering five machines, not five subscriptions — about $32 a machine. There is no per-seat metering and no invoice that grows while you are not looking.
What if I need more than five machines?
Team is the top tier and there is no enterprise plan — deliberately. Invoicing, SSO and negotiated seat counts are a sales conversation, not a feature to withhold, so a sixth machine is a second Team licence with its own five, or an email to sales@squiggle.sh.