> Fetch the index of every Tonbo docs page as Markdown at https://tonbo.dev/llms.txt

# Pricing

Last updated 29 October 2026

Estimate what your streams will cost before you build, and see what each one cost this month: the prices, three worked examples that show which designs cost less, and usage per stream.

Streams use the same price list as databases, and reads cost nothing.

| Item | Price |
| --- | --- |
| Writes | $1.50 per million write units, which the rest of these pages call writes. A write unit is up to 10 KiB (10,240 bytes) of an append’s body. Every append costs at least one unit, and a larger one one unit per 10 KiB. Creating a stream counts one unit, and deleting one costs nothing. |
| Storage | $0.05 per GiB-month (30 days) of what each stream keeps, as Tonbo stores it: the bytes of its messages as you appended them, without compressing them (a JSON stream’s without insignificant whitespace), and of its snapshots, until you advance its retention or delete it. A closed stream still keeps everything. It is charged for the time it is kept: Tonbo measures it every five minutes, so a stream kept for 7 days pays for 7 days. |
| Reads | Free, tails included, under fair use. |

Streams and databases draw on one monthly allowance of $5 per account, then on the credit you buy, as [Databases pricing](https://tonbo.dev/docs/databases/pricing.md) describes. When none is left, appends answer `402` and reads continue (see [When the balance runs out](https://tonbo.dev/docs/databases/pricing.md#zero-balance)).

## Worked examples

Each example builds the same thing two ways. Each price is one 30-day month at list price, with what is stored held all month, before the $5 of free usage and after it. A stream’s creation counts one write, and is included. A job log kept 90 days is sized and priced on [Job progress to a web UI](https://tonbo.dev/docs/streams/job-progress.md#cost). The [Rules for streams](https://tonbo.dev/docs/streams/rules.md) turn them into what to write, and the open tails a hundred live readers would need are on [Limits](https://tonbo.dev/docs/streams/limits.md#tails).

### One stream per run, with an expiry

10,000 agent runs a month, each with a stream of its own: created once, then 300 appends of 2 KiB.

| Case | Writes | Writes cost | Storage | Month | After the free $5 |
| --- | --- | --- | --- | --- | --- |
| Each stream expires after 7 days | 3,010,000 | $4.52 | $0.07 | $4.58 | $0.00 |
| Never deleted: month 12, with 12 months of runs kept | 3,010,000 | $4.52 | $3.43 | $7.95 | $2.95 |

$4.58 against $7.95, and the second grows every month: a stream keeps everything until it is deleted. Give each run’s stream an expiry, or delete it when its readers are done.

### Fan-out to many readers

A job appends a 2 KiB event every second all month, and advances the stream’s retention every day, so it keeps about a day of events.

| Case | Writes | Writes cost | Storage | Month | After the free $5 |
| --- | --- | --- | --- | --- | --- |
| One reader | 2,592,000 | $3.89 | $0.01 | $3.90 | $0.00 |
| A hundred readers | 2,592,000 | $3.89 | $0.01 | $3.90 | $0.00 |

$3.90 with one reader and $3.90 with a hundred: reads are free, tails included, so readers do not change the bill. What bounds them is the account’s open tails in a region, so a hundred live viewers read through a server of yours that holds one tail.

### Batch small messages

10,000,000 events of 100 bytes a month, kept on average for half of it. One design appends each event alone; the other appends 100 at a time, as one JSON array of 10,000 bytes.

| Case | Writes | Writes cost | Storage | Month | After the free $5 |
| --- | --- | --- | --- | --- | --- |
| One append per event | 10,000,000 | $15.00 | $0.02 | $15.02 | $10.02 |
| 100 events per append | 100,000 | $0.15 | $0.02 | $0.17 | $0.00 |

$15.02 against $0.17: an append costs one write per 10 KiB and at least one, so fill each append toward 10 KiB. It also sends a hundred times fewer requests against the account’s rate.

## Usage per stream

Each stream’s usage this month, at list price before the allowance and credit, is on **Streams** in the console, and from the CLI or `GET /v1/usage/streams`:

```shell
tonbo stream usage
tonbo stream usage --period 2026-10 --prefix run-
```

There is one row per stream, deleted streams of the month included: a stream deleted and created again under the same name has a row for each. The `other` row holds the rest of the account’s usage, its databases included, so the rows and `other` add up to the account’s total; `tonbo database usage` lists the databases, and no stream is ever a row there. `--names events,run-42` limits the answer to named streams.
