Walleye docs

Billing

What an instance costs, how storage and egress are priced, and the free trial.

Walleye is sold as a managed instance. You pay for the instances you run, plus storage and egress above what those instances include. There are no plans, no organization fee and no per-seat charge: add as many members in as many roles as you like, and none of them costs anything. Support is email for everyone.

Instance rates

Every instance is billed per second while it runs, at one hourly rate for its shape and cache tier. A launch rate covers all three of its Machines. A billing month is 730 hours.

ShapeCachePer hourAlways on, per month
rampsmall$0.054from $5, $39 always on
rampmedium$0.108$79
ramplarge$0.204$149
rampxlarge$0.410$299
launchsmall$1.095$799
launchmedium$2.053$1,499
launchlarge$4.108$2,999
launchxlarge$8.218$5,999

ramp / small is serverless. Fly suspends its Machine after a few idle minutes (a memory snapshot; the engine resumes where it was) and starts it on the next request, and no time it spends suspended is billed. A ramp small instance is charged at least $5.00 in any month it exists: when its running time for the month comes to less than $5, the difference is added at renewal. Above about 93 hours a month it simply bills the hourly rate. Every other shape and tier is always on and bills every second from start to stop.

A stopped instance keeps no Machines and bills no instance time; it costs storage only.

Storage and egress

ResourceIncluded each billing monthAdditional usage
Object storage10 GB per ramp instance, 100 GB per launch instance$0.05/GB-month
Egress100 GB per organization$0.05/GB
  • Storage is the size of each instance’s S3 bucket, sampled hourly and summed across the organization. Only capacity above what its instances include is charged; a stopped instance still contributes its included capacity, a deleted one does not. One GB-month equals 730 GB-hours.
  • Egress measures response bodies leaving the instance URL. Internal transfers between Machines and S3 are excluded.

Allowances reset on the subscription’s monthly billing date and do not roll over.

What is metered

Instance time comes from each Machine’s own record. An always-on Machine bills the interval between the start and the stop the control plane performed. A serverless Machine bills the running segments of its Fly event log: a segment opens on a start or resume and closes on a suspend, stop or exit, and the control plane reads the log every minute. Nothing is estimated in between.

A Machine’s record is also its meter, so whenever one is removed the seconds it covers are billed first, down to the second rather than to the last completed minute. That holds wherever the removal happens.

Deleting an instance settles everything it ran that no completed minute has billed yet before its records are erased. An instance that lived for less than a minute is still billed for the seconds it ran, and a deleted instance keeps its line on the billing page for the rest of the period.

Stopping and starting settles the same way. A stop keeps the Machine’s record for the minute still owed on it; the start replaces that record with the new Machine’s, and the seconds in between are billed at the moment of the swap. Restarting an instance in the same minute you stopped it costs you exactly the time it was awake, no more and no less.

So does resizing. The start after a resize retires the old shape’s Machines and their records, so the seconds they ran since the last completed minute are billed first, at the old shape’s rate. An instance resized from ramp small to launch small is charged for its whole ramp phase at the ramp rate and its whole launch phase at the launch rate, with no gap between them and no second on both.

The billing page lists every instance of the period with the hours it ran and what those hours cost at its rate, plus the storage and egress gauges. A running instance’s hours are exact as of the last completed minute; the Stripe usage summaries behind storage and egress can take several minutes to update.

Free trial

The free trial is one ramp small instance until it has used $5.00 of compute. No card is required, and there are no automatic charges. It ends on that figure, not on a date: an instance that sits idle costs nothing and the trial simply stays open.

While a workspace is on the trial:

  • creating a second instance is refused with 402, asking for a payment method;
  • creating any shape or cache tier other than ramp small is refused the same way;
  • resizing the trial instance away from ramp small is refused the same way.

Once the trial instance reaches the $5.00 allowance, Walleye stops it and starting it again returns 402 until a payment method is on file. The data stays intact. A trial that never reaches $5.00 is never invoiced.

Paying

Adding a payment method on the Billing page opens the workspace’s metered subscription and lifts every restriction: any shape, any cache tier, as many instances as you want. Instance, storage and egress usage is collected in arrears at monthly renewal, on the subscription’s billing date, and the ramp small monthly minimum is applied to that invoice. Renewal invoices allow 24 hours for delayed usage receipts before automatic collection. There are no mid-month usage threshold charges.

Closing a workspace

Closing a workspace is three deliberate steps, in this order. Nothing here happens as a side effect of something else: no step moves money except the one you take to stop the charges, and each step is refused until the one before it is done.

  1. Delete every instance. Deleting an instance destroys its Machines, its S3 bucket and every table in it. Do this from the instances list, one instance at a time. Deleting an instance is never gated by billing.
  2. Cancel the subscription on the Billing page. This is the only thing that ends a paid subscription, and it is refused with 409 while the organization still has an instance that has not been deleted — the message names the instances to delete first. Cancelling stops future charges. It starts no charge and refunds nothing of its own: Stripe issues its normal final invoice for the usage already accrued in the period, including the ramp small monthly minimum where it applies. Cancelling again once it is cancelled does nothing and is not an error. A cardless trial is ended the same way, with End trial; a workspace that never had a subscription has nothing to cancel and can go straight to the next step.
  3. Delete the organization from Settings. This removes its members, tokens and every remaining record. It performs no billing operation at all, and it is refused with 409 while the organization has an active subscription, asking you to cancel it first.

Deleting the organization is also refused while storage the organization still holds has not gone with its instances, or while usage it accrued has not yet reached Stripe. Retrying once that finishes completes the deletion.

Identity

WorkOS owns memberships. Each organization is linked to its Stripe customer using stripeCustomerId. Members are access control only: Walleye never counts them and never charges for them.