Tovuk exposes the product catalog through the CLI and API so agents can make deployment decisions without dashboard access:Documentation Index
Fetch the complete documentation index at: https://docs.tovuk.com/llms.txt
Use this file to discover all available pages before exploring further.
products[].best_for, products[].avoid_for, products[].meters, and
products[].limit_fields to choose the smallest resource that fits the job.
Use plans[].limits and plans[].pricing before load tests, media uploads, or
paid usage.
limit_fields includes the relevant runtime, storage, payload, batching,
retention, and monthly allowance fields for each product.
Product Guide
Worker: Use for Rust public APIs, webhooks, auth callbacks, forms, queue handlers, and cron handlers. Avoid browser rendering, static files, large media storage, and single-key serialized state. Main meters:worker_requests, worker_cpu_ms,
and worker_transfer_bytes.
Static Frontend:
Use for React, TanStack, Vite, Astro, Svelte, or plain HTML output served at
/. Avoid JS or TS servers, SSR handlers, API routes, middleware, and secrets.
Main meter: static_transfer_bytes.
SQLite:
Use for service-local relational data, transactions, migrations, and data
inspection. Avoid files, media, single-key counters, and cross-service shared
storage. Main meters: sqlite_rows_read, sqlite_rows_written, and
sqlite_storage_bytes.
Object Storage:
Use for user uploads, images, videos, documents, generated files, and downloads.
Avoid relational data, secrets, and high-frequency tiny writes to one key. Main
meters: object_storage_bytes, object_storage_class_a_operations, and
object_storage_class_b_operations. tovuk storage upload automatically
switches to multipart transfer for files larger than 100 MiB.
State:
Use for keyed realtime coordination, rooms, locks, counters, sessions, and
per-tenant state. Avoid general relational data, large files, and stateless HTTP
handlers. Main meters: state_requests, state_duration_gb_milliseconds,
state_sqlite_rows_read, and state_sqlite_rows_written.
KV:
Use for small config, sessions, feature flags, cache metadata, and rate-limit
metadata. Avoid SQL queries, large file storage, and strongly serialized
coordination. Main meters: kv_reads, kv_writes, kv_deletes, kv_lists,
and kv_storage_bytes.
Queues:
Use for background jobs, webhook retries, email tasks, batching, and dead-letter
recovery. Avoid synchronous reads, large payloads without object storage, and
strict global ordering. Main meter: queue_operations.
Cron:
Use for UTC scheduled cleanup, polling, reports, and sync tasks. Avoid
long-running workflows without checkpoints and user-facing request handling.
Main meters: worker_requests and worker_cpu_ms.
Builds:
Use for pre-deploy quality gates, release builds, frontend builds, and deploy
promotion. Avoid runtime request handling, background jobs, and artifact storage
after deploy. Main meter: build_minutes.
Usage Caps:
Use for load tests, launch guardrails, and paid-usage hard stops. Avoid using
caps as a replacement for code-level rate limits or as a way to hide inefficient
code. Main meters: any supported meter from tovuk pricing --json.
Agent Rules
- Prefer one same-origin worker-static service when a project has both frontend
and backend needs: static files at
/, Rust API under/api/*. - Keep JavaScript and TypeScript frontend-only. Move API routes, SSR handlers, middleware, and server logic to the Rust Worker.
- Store large payloads in object storage, then pass object paths through Queues or SQLite.
- Use State only when one object key needs serialized coordination.
- Use KV for small lookup data where eventual consistency is acceptable.
- Set hard usage caps before high-throughput work:
tovuk pricing --json response is the source of truth for current
free limits, Pro included usage, overage prices, meters, and limit fields.