Getting started

Last updated 2 November 2026

View .md

Start here to decide whether Tonbo fits what you are building, then run a quickstart from your own laptop.

What Tonbo is for

Agents often run somewhere temporary: a sandbox, a container, a spot instance, a laptop. What they write there is lost when that place goes away. A database server fixes that at the cost of a round trip per query and a server to run; a disk you keep ties the program to one machine. Tonbo keeps the state off the machine and lets the program use it as if it were local, and runs those programs too, in three products that share an account and its keys:

  • Databases: SQLite databases your program opens by name from any machine: local speed, and they outlive the machine.
  • Streams: Durable logs at HTTPS URLs: append exactly once, read from any offset, tail them live.
  • Machines (not open yet): HTTP and WebSocket services from your own arm64 image that sleep when idle, keeping what lasts in their own database and Volume.

When Tonbo is the right choice

  • An agent must carry on from another machine. The next process opens its database by name and finds every confirmed commit (see the Pi Durable quickstart).
  • You want SQLite, but the program does not own its disk. Statements run on a local copy with node:sqlite or Python’s sqlite3, and there is no server to run.
  • A database per agent, task or tenant. Create and delete them through the API (see One database per agent run), and pay for what each keeps.
  • Many readers follow a log that only grows. A transcript, job progress, a feed: writers append exactly once, even on retry, and readers tail it live over plain HTTP (see Job progress to a web UI).
  • Both at once. State in a database and the transcript in a stream: another machine resumes the agent, and anyone can follow it.

When something else fits better

  • Many machines write the same data at once, or you need Postgres itself: use a hosted Postgres. A Tonbo database has one writer at a time.
  • The data can stay on one machine: keep a SQLite file on its disk.
  • Workers acknowledge messages, with leases and redelivery: use a message queue. A stream keeps no reader state.
  • Large files read whole: use object storage. A stream takes 8 MiB an append, and a database fits a snapshot of 256 MiB compressed.
  • A database in an edge runtime, a browser, or a language other than Node.js and Python. Streams work from any HTTP client.

How your code reaches Tonbo

  1. Sign in at tonbo.dev with GitHub or Google.
  2. Create what your program uses, in the console, with the CLI or through the API.
  3. Create an API key for your program (see What a key can reach).
  4. Run your code where it runs today: it reaches Tonbo over HTTPS, with nothing to allowlist.

What it costs

Every account gets $5 of usage free each month. After that you pay for writes and storage, and reads are free. See Pricing.

Quickstarts

Start with Pi Durable: in a few steps you see another machine finish an agent’s run, and a second writer stop the first. The others are alternatives.