ribo CLI/CLI Reference

ribo CLI Reference

ribo is the command-line tool for tissue.systems. The name comes from the ribosome — the molecular machine inside every living cell that reads genetic instructions and assembles proteins from them. In the same way, ribo reads your ribo.toml and assembles a running Cell from your code.

Complete reference for every ribo command.


ribo login

Authenticate with tissue.systems. Opens a browser for the OAuth flow, then stores a token locally.

ribo login

Token is saved at:

  • macOS: ~/Library/Application Support/ribo/token.json
  • Linux: ~/.config/ribo/token.json

Flags

Flag Description
--server <url> Auth server URL (default: https://tissue.systems)
--key <token> Skip the browser — save a pre-issued API key directly
# Standard browser login
ribo login

# Save a key directly (CI, scripts)
ribo login --key eyJhbGciOiJIUzI1NiJ9...

ribo logout

Remove the stored token.

ribo logout

ribo deploy

Deploy a Cell from a ribo.toml configuration file. If a build command is defined, it runs first.

ribo deploy [--config <path>] [--server <url>]

Flags

Flag Default Description
--config <path> ./ribo.toml Path to the config file
--server <url> https://api.dev.tissue.systems Management API URL

Output

deployed  my-cell
address   ab1cd2
kind      js
url       https://word-ab1c.dev.tissue.systems
c3        DB→my-database
files     ASSETS→ab1cd2-assets (18 files)
pulse     0 * * * *
  • url — the Cell's permanent public URL
  • address — a short stable ID derived from your user ID and cell name; never changes between deploys
  • c3 — c3 bindings (binding name → database name)
  • files — FILES bindings (binding name → bucket name, file count)
  • pulse — comma-separated cron schedules (only shown if [[pulse]] is declared)

Examples

ribo deploy
ribo deploy --config ./prod/ribo.toml
ribo deploy --server http://localhost:8082

ribo list

List all your deployed Cells.

ribo list [--server <url>]
ab1cd2  my-cell        3.1kb  2026-05-25T12:00:00  https://word-ab1c.dev.tissue.systems
ef5gh6  another-cell   1.2kb  2026-05-24T09:30:00  https://other-ef56.dev.tissue.systems

Columns: address, name, code size, last deployed, public URL.


ribo delete

Remove a deployed Cell permanently. The URL stops working immediately.

ribo delete <name-or-address> [--server <url>]
ribo delete my-cell
ribo delete ab1cd2

ribo addr

Print the stable address for a cell name without deploying. The address is deterministic — derived from your user ID and the cell name.

ribo addr <name>
ribo addr my-cell
# → ab1cd2

Useful for building URLs before deploying, or verifying which address a name maps to.


ribo db

Manage c3 SQLite databases. See c3 Overview for usage in Cells.

ribo db create

ribo db create <name> [--server <url>]

Create a new database. Names must be lowercase alphanumeric with hyphens.

ribo db create myapp
ribo db create analytics

ribo db list

ribo db list [--server <url>]

List all your databases.

myapp
analytics

ribo db drop

ribo db drop <name> [--server <url>]

Delete a database and all its data. Irreversible.

ribo db exec

ribo db exec <name> ["<sql>"] [--file <path>] [--server <url>]

Run a SQL statement or load a .sql file. Output is JSON for inline queries. Use --file for multi-statement migrations — it uses execute_batch internally, so it handles any number of statements efficiently in a single request.

Flags

FlagDescription
--file <path>, -f <path>Path to a .sql file. Executes all statements in the file. Use this for schema migrations and bulk data loads.
ribo db exec myapp "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, email TEXT UNIQUE)"
ribo db exec myapp "INSERT INTO users (email) VALUES ('hello@example.com')"
ribo db exec myapp "SELECT * FROM users"
# → [{"id":1,"email":"hello@example.com"}]
ribo db exec myapp "SELECT COUNT(*) as total FROM users"
ribo db exec myapp "PRAGMA table_info(users)"

# Load a schema or seed file (any number of statements)
ribo db exec myapp --file schema.sql
ribo db exec myapp --file ./migrations/001_init.sql

ribo bucket

Manage g7 object storage buckets. See g7 Overview and Managing Buckets for details.

ribo bucket create

ribo bucket create <name> [--server <url>]

Create a new bucket. Names must be lowercase alphanumeric with hyphens. Idempotent — creating an existing bucket is not an error.

ribo bucket create avatars
ribo bucket create raw-uploads

ribo bucket list

ribo bucket list [--server <url>]

List all your buckets.

avatars
raw-uploads
processed-images

ribo bucket ls

ribo bucket ls <name> [--server <url>]

List the objects (files) stored in a bucket.

ribo bucket ls my-files
images/avatar.png     42318
images/banner.jpg     198432
reports/2026-05.pdf   81920

Columns: key, size in bytes.

ribo bucket drop

ribo bucket drop <name> [--server <url>]

Delete a bucket and all its objects. Irreversible.

ribo bucket drop old-uploads

Global behaviour

Default server: All commands default to https://api.dev.tissue.systems. Override with --server for local development.

Authentication: ribo deploy, ribo list, ribo delete, ribo db *, and ribo bucket * require a valid token. Run ribo login first.

Cell addresses: An address is base36(sha256(userId + ":" + name)[0..4]), zero-padded to 5 or 6 characters. The same name always maps to the same address for a given user.

Slugs: Each Cell gets a human-readable public slug (e.g. crane-a4f2) on first deploy. The slug is stable across redeploys. The public URL is https://<slug>.dev.tissue.systems.


See also