NewTruo Deploy and DBaaS PostgreSQL, live in the TruoCloud panelSee the catalog
Beta · public price

Serverless

Four primitives, one account.

Key-value, SQL database, functions and scheduled tasks, with the API surface you already know and on our own infrastructure. Managed from the panel and over API, CLI and MCP.

$truo serverless fn deploy ./worker.js --name checkout
→ deployed · KV binding: sessions · DB binding: orders
→ fully isolated: nothing persists between invocations

What you get

Four services

kv · db · fn · cron

Bought separately, sharing one account, one invoice and one tenant token.

No rewrite

The same API surface

The queries and calls you already wrote port over untouched.

Isolation

Full isolation per invocation

Each function run is isolated from the rest, with nothing shared between invocations.

Agent-operable

Panel, API, CLI and MCP

Manage them from the panel, and fully through the public v1 API, with an SDK, a CLI and a local MCP.

The primitives

Four pieces that compose

Each is bought on its own, but they are meant to be used together: a function reads from key-value, writes to the database, and a scheduled task fires it.

Key-value

kv.truo.cloud

put, get and list with prefix and cursor, TTL, metadata and idempotent delete.

Workers KV surface

Database

db.truo.cloud

SQL with prepare, bind, first, all, run and batch, plus meta.changes and last_row_id.

D1 surface

Functions

fn.truo.cloud

export default { fetch(request, env) }, with env.KV and env.DB injected.

Workers surface

Scheduled tasks

cron.truo.cloud

Five-field UTC cron expressions firing HMAC-signed webhooks.

Cron Triggers surface

Plans

The same ladder across all four services

One plan per service. The included quotas change; the price does not.

Beta: all four services currently run a single replica on a single node, and the function engine depends on one host. There is no high availability and no Service Level Agreement. Your data is backed up: your function code is replicated continuously and a fresh replica starts in under a second, but while that host is down, functions do not execute.

Every plan has a cap: once the monthly quota runs out the API answers 429 and the scheduled run is marked as skipped in the log. No overage is billed. The Free plan is also not covered by the Service Level Agreement.

If you hit the cap, upgrading lifts it right away: the service does not wait for next month.

Quotas

What each plan includes

By service, with what happens at the cap at the foot of each table.

Key-value

kv.truo.cloud

Workers KV surface

IncludedFreeDevStartupBusinessScale
Reads per month1 M10 M50 M200 M1,000 M
Writes per month100 k1 M5 M20 M100 M
Storage256 MB2 GB10 GB50 GB250 GB

At the cap · The API answers 429 until next month or until you upgrade.

Database

db.truo.cloud

D1 surface

IncludedFreeDevStartupBusinessScale
Databases3102550200
Rows read per month25 M250 M1,000 M5,000 M25,000 M
Rows written per month1 M10 M50 M250 M1,000 M
Storage500 MB2 GB10 GB50 GB250 GB

At the cap · Queries answer 429 until next month or until you upgrade.

Functions

fn.truo.cloud

Workers surface

IncludedFreeDevStartupBusinessScale
Functions520502001,000
Invocations per month100 k1 M5 M25 M100 M

At the cap · Invocations answer 429 until next month or until you upgrade.

Scheduled tasks

cron.truo.cloud

Cron Triggers surface

IncludedFreeDevStartupBusinessScale
Schedules5251005002,500
Runs per month5 k50 k250 k1 M5 M

At the cap · Runs are marked as skipped until next month or until you upgrade.

Code execution

Every invocation runs fully isolated

This is what makes running third-party code defensible: every run starts clean and leaves nothing behind for the next one.

  • ●

    No network interface

    The execution environment has no network card: everything in and out goes through a controlled channel to the platform.

  • ●

    Tokens never enter the execution environment

    A platform-side relay injects them, and validates that the namespace requested is the one in the binding.

  • ●

    Outbound traffic with a policy

    fetch goes out through that relay: private IPs, link-local and cloud metadata are denied, with DNS resolved platform-side.

  • ●

    No state between invocations

    The environment resets when it finishes. Nothing survives from one invocation to the next, or across customers.

Want to port something you already run and watch how it behaves?