Plans and licence keys
The sidecar enforces the Free limits itself and reads a licence key for the paid tiers. Nothing here phones home: the key is verified offline, and a payment that policy allows is never blocked by an outage on our side. Prices and what each tier includes: Pricing.
Free limits
Section titled “Free limits”| Free | With a key | |
|---|---|---|
Agents under agents: |
2 | Pro 10, Team unlimited |
| Governed payments per calendar month (UTC) | 1,000, then new payments are refused until the month rolls over | from the key; never stopped (overage is billed) |
| Everything else | included | included |
What counts. A governed payment is a request the sidecar did payment work for: it signed, or it asked a human. Refusals (denied) and dry runs never count, so an agent cannot use up your month by being refused. Nothing counts while signer: mock: the sandbox is unlimited.
Over the agent limit. spendctl start refuses to start and names the agents, so a third agent is never silently denied in production.
At the cap. The sidecar answers like any other refusal (402, spendctl_denied) with the reason plan_events_exceeded, which names the reset date. It logs one warning at 80 % and one at the cap. spendctl budget, spendctl license and the dashboard show the month’s count.
Licence keys
Section titled “Licence keys”spendctl license set SPENDCTL-... # stored in .spendctl/license.key (0600, git-ignored)spendctl license # tier, organisation, expiry, this month's usagespendctl license removeSPENDCTL_LICENSE_KEY in the environment takes precedence over the file, which suits containers and CI. Restart the sidecar after changing the key. Keep the key out of spendctl.yaml: policy files are meant to be committed.
A key that does not verify (typo, tampering, unknown signing key) is reported at startup and the sidecar runs as Free. A key expires 30 days after its paid-through date; inside those 30 days the sidecar keeps the paid limits and warns once a day, afterwards it runs as Free.
Keys are issued when the control plane launches; founding members get theirs by email. The sidecar still sends nothing to us. When check-in and usage reporting arrive with the control plane, the privacy policy is updated first.