Add cmux Plus at $15/month with Pro sizes and one saved VM
Adds cmux Plus at $15/month below Pro ($50) and Max ($200). Plus includes one saved Cloud VM total, including paused machines, with no monthly hour cap. It offers the same machine sizes as Pro: 2 vCPU / 4 GiB / 16 GiB, 4 vCPU / 8 GiB / 32 GiB, and 8 vCPU / 16 GiB / 64 GiB. New machines default to 4 vCPU / 8 GiB / 32 GiB; disk can grow to 128 GiB. Plus retains community support; Pro includes five machines, iOS access and email support.
Pricing, embedded pricing, billing, checkout, server admission and native plan displays now agree. Paused machines occupy a saved-machine slot on every plan: Plus 1, Pro/Max 5, Team 5 per paid seat. Only running/provisioning machines consume shared CPU/RAM pools. Existing machine lifecycle operations remain usable; deleting a machine releases its slot. Native counters reflect paused machines, realtime deletion and account-wide slots outside the visible scope.
The internal go entitlement and cmux-starter-monthly-15 lookup remain stable. Live Stripe cmux Plus is active with the existing default price price_1UVhYiGhInAdn3Jb6mkDnDz4 (USD 1,500 cents/month). Its name and description were updated in place. No customer subscriptions or legacy prices were changed. App Store Go retains its independent rollout flag.
Observed / Not run
Candidate: 20d1443589b87eb1b4d32023e2f8f6e1b4100f4c.
- Independent correctness review: PASS on the final head. The native realtime count finding was repaired and re-reviewed. The final pricing delta also passed review.
- Independent website visual review: PASS on the final head, with actual desktop light/dark and mobile captures. The missing Plus comparison action and old concurrent-machine label were repaired. Browser checks verify both Plus checkout links, saved/paused wording, prices, sizes, themes and no viewport overflow.
- Final-head
bun test tests/pricing-page.test.tsx: 19 passed. Typecheck, complexity gate and pricing ESLint passed on the verification VM; pre-push web lint and architecture checks passed. - At
bed270f41eb98f34bfa14c009171d2fd88f03786, all 16 scoped web suites passed. Real-PostgreSQL checks passed 192 workflow tests, three plan-allowance tests, four independent-limit tests and all 18 DB-enabled resource-pool tests. A clean database applied all 123 migrations; the second application found zero pending. The SQL fixture passed saved-machine admission across teams, paused accounting, deletion/replacement, runtime above 1,000 hours and legacy lifecycle transitions. Source hashes verify that the final delta changes only pricing markup, English/Japanese comparison labels and the existing pricing test expectation; server, migration and native sources are unchanged. - Regression proof:
bun test tests/vm-billing-limit-paywall.test.tsfailed the Plus size-ceiling assertion on regression commitd3e839f90d406(expected 16 GiB, received 4 GiB), then passed all 25 tests atbed270f. - Swift syntax and native localization parity passed (11 catalogs, nine locales). Changed web keys passed a 20-locale audit (424 translated values); final comparison wording passed the English/Japanese authored-pricing audit. Existing sparse catalogs keep their fallback policy. The broad web localization audit reports pre-existing sparse-catalog drift.
- The hosted Cloud package lane at
bed270fexecuted 381 passing tests in 52 suites. The selected native model tests also passed atbed270f: 22 NewMachineModel tests and 10 MachinesPanelVMStream tests executed. The native pricing capture tour compiled successfully but failed before UI test execution because its fleet runner had no logged-in console user. No native screenshots were produced; the website review does not establish native visual coverage. Native source is identical in the final pricing-only commit, but these are not final-head native build receipts. - No staging deployment, production migration or live payment/webhook transaction was performed. The owned verification VM was deleted after artifacts were retained.
Rollout and installed clients
Do not merge until the production migration has been applied and verified. The migration already exists: 20261027120000_starter_cloud_limits (SHA256 d5aefd64027c51d38f6424374952c0e92e5862c328919f575a4c76c899141c11). It replaces the historical Go guard; it deletes no VMs and changes no subscriptions. An approved operator must inspect pending names/hashes, rehearse staging, then run the canonical bun run cloud-vm:migrate -- production from this reviewed checkout before merge. This session lacks the required production database access. The existing production Actions migration job reads main only, so it cannot apply this unmerged migration.
Merging main then starts the Vercel web/backend deployment; it does not apply migrations. Verify the deployed pricing page and authenticated Cloud limits afterward. No 0.65.3 release is required for checkout, server-enforced quota or server-advertised sizes. Stable 0.65.2 already reads the server's size ladder and activeVmCount; updated Plus branding, the 8 GiB native default/fallback and realtime counter repairs reach installed clients with the next Mac release.
Changelog
Added: cmux Plus at $15/month with Pro machine sizes, one saved Cloud VM including paused machines, and no monthly hour cap.