What it costs
You pay for the shape you declare, not for the traffic that arrives. You choose the resources, four unit prices turn them into a monthly figure, and you pay it up front for a billing period you pick. An idle slice costs exactly what a busy one costs, and nothing meters in the background. There is no request count, no egress line and no bill that can arrive larger than the one you agreed to.
That means you can work the number out before you build anything, which is the point of this page. It is short on purpose: one free grant, four prices, and two rules that catch people out.
A slice comes in one of two shapes, and there is no third to be upsold into. It is either free (the Hacker grant, one per account, no card and no expiry date) or configured, shaped in the slice's shape and priced line by line.
Every number here comes from one place in the platform.
drift slice create <name>, or drift slice resize on one that exists — and change the dials; nothing is bought until you submit.The free Hacker slice
drift slice create <name> --free provisions this shape with no form. One free slice per account, enforced in the database.
| Resource | Free grant |
|---|---|
| Atomic functions | 5 slots |
| Function memory | 8 MB per slot, 40 MB across the slice |
| Function timeout | 10 seconds |
| Request rate | 60 per minute |
| Scheduled jobs | 1 |
| Deploy history | 1 rollback slot |
| NoSQL collections | 2, 20 MB each |
| SQL databases | 1, 10 MB |
| Queues | 1, up to 500 messages deep |
| Blobs | 10, 5 MB each |
| Secrets | 5, 1 KB each |
| Locks | 100,000 concurrent |
| Realtime connections | 50 concurrent |
| Canvas site | 50 MB |
| Log retention | 24 hours |
| Backup retention | 3 days |
| Deed storage | Vault 4 KB per entry, 100 entries per identity; Pocket 16 KB per entry |
Backbone adds up to 100 MB of data — 40 MB of collections, 50 MB of buckets, 10 MB of database — matching the 100 MB of code the runner volume holds.
The names are yours
The free slice declares what it has, and the slice refuses a write to any collection, bucket, database, queue or route its declaration does not carry. So the grant ships placeholders for you to type over — slot-1 through slot-5, collection-1, bucket-01, database-1, queue-1 — and renaming them is free. Nothing about the free slice is compared by name.
What is bounded is the count and the total of each resource, so the shape is yours too:
- any number of function slots up to 5, in any sizes that add up to 40 MB
- up to 2 collections totalling 40 MB, 10 buckets totalling 50 MB, 1 database up to 10 MB
- one queue, no deeper than 500
Five slots at 8 MB, two at 16 MB, or one at 40 MB are all the same free slice. Open the form with drift slice resize, change the names and sizes, and it stays free at €0 — the price panel shows what the shape would cost as a configured slice, which is not what you are charged. Cross a bound and the refusal names the one you crossed; nothing is silently shrunk to fit.
Rename the slots before you deploy into them.
400, so a fresh free slice serves slot-1…slot-5 and nothing else until you rename them. Compiled languages need the reshape as well: Go and Rust are refused below a 16 MB booking, so the 8 MB defaults have to be folded into fewer, larger slots first — two at 16 MB, say. Both changes are free.What a configured slice costs
Four rates price a configured slice, and they land on six lines. Everything else is capped by quota and charged nothing.
- Per month
- €0.03 / MiB
- Why this one is priced
- RAM is the density constraint. What each function books is charged, not metered usage.
- Per month
- €0.30
- Why this one is priced
- It fires on a timer even with zero traffic.
- Per month
- €0.01
- Why this one is priced
- A live WebSocket holds RAM on the in-slice hub.
- Per month
- €0.25 / GiB
- Why this one is priced
- Your deployed code and the dependencies it vendors. In practice this is your dependency tree.
- Per month
- €0.25 / GiB
- Why this one is priced
- NoSQL, SQL and blob bytes, summed and charged to the cent.
- Per month
- €0.25 / GiB
- Why this one is priced
- The static sites you upload.
Storage is one rate on three lines, because it is one disk. The split is there so you can see which part of your slice is spending it, and so each part has a cap you set. The three lines always add up to what those bytes cost together: they are apportioned from a single figure rather than rounded one by one, so the parts cannot miss the whole by a cent.
Collections, queues, SQL databases, blob count and secrets are free by count. They appear in the breakdown at €0.00, and you pay for the bytes they hold on the Backbone storage line. There is no base fee.
A function itself is free. You pay for the memory it books and for the disk its deployed artifact holds, and there is nothing left to charge for the fact that it exists. So splitting one function into six costs exactly what the one cost, as long as the memory adds up the same — the bill never asks you to keep your code in fewer, larger pieces than you want to.
Two rules that decide the number
A configured slice has no free allowance of units. The free grant is a whole slice, not a discount subtracted from a configured one. Once a slice is configured it is priced from its first MiB: there is no "first five free".
Every function books its own memory, and there is no default. Each function's row in the slice's shape carries a booking between 8 MB and 256 MB, and the bill is the sum: every MiB on the invoice was asked for by a named function. The smallest bookable function is 8 MB, so the floor for a configured slice with one interpreted function — Python, Node.js, Ruby or PHP — is €0.24/month. A compiled function, Go or Rust, floors at 16 MB instead: it carries a private language runtime per invocation, where the interpreted four share one language server per language. So the same one-function project written in Go floors at €0.48/month, and a booking under 16 MB is refused at deploy rather than served badly. A Canvas-only or Backbone-only slice buys no function, no scheduled job and no realtime connection, so storage is its only priced line, and a small declaration rounds to €0.00.
Book what it costs, not what you guess. That figure is also the function's own pool: its concurrent invocations together stay inside it, so booking more buys both headroom per call and more calls at once. Booking more than you need is paid for; booking less means invocations are refused under load. drift file benchmark measures what a function actually holds and prints what it should book; --apply opens the form with those figures filled in. Size from those rather than from the largest number that looks safe.
What makes a slice free is the grant it fits inside, not the price it computes.
drift slice create <name> --free takes the whole grant with no form, and the form tells you which side of the line you are on as you type.