🚧 CLI is in active development β€” some features are incomplete. Join the waitlist for stable release notifications.
CLI Reference

Developers live
in the terminal.

Every debugging operation β€” from deploying a function to bisecting a production regression β€” is a single flux command.

Installation

One-line install.

Installs a single static binary. No Node.js, no Python, no dependencies.

install
$ curl -fsSL https://fluxbase.co/install | bash

  Installing flux CLI…

  βœ”  Downloaded flux v1.0.0
  βœ”  Installed to /usr/local/bin/flux

  $ flux --version
  flux 1.0.0

  $ flux init my-app && cd my-app
  βœ”  Created project at ./my-app
First Tutorial

Debug a production bug in 30 seconds.

The fastest way to understand these commands is to see them in sequence against a real failure.

  1. 1

    Deploy your function

    flux deploy β€” bundles and deploys your TypeScript functions. Returns a URL per function.

  2. 2

    Watch for failures

    flux tail β€” streams live requests. Errors appear in red with their request ID.

  3. 3

    Root-cause immediately

    flux why <request-id> β€” takes the ID from flux tail and shows root cause, location, and data changes.

  4. 4

    Compare before/after your fix

    flux trace diff <id-before> <id-after> β€” shows which spans changed and by how much after your code change.

Follow the full quickstart β†’
Deploy & Runtime
flux deploy

Deploy functions to production

Bundles all functions in the current project, uploads them, and makes them live behind the gateway in ~20 seconds. Returns a deploy ID and the public URL for each function.

flux deploy
$ flux deploy

  Deploying 3 functions…

  βœ”  create_user   β†’ localhost:4000/create_user
  βœ”  list_users    β†’ localhost:4000/list_users
  βœ”  send_welcome  (async)

  βœ”  Deployed in 2s  deploy:d_7f3a9
flux tail
$ flux tail

METHOD   ROUTE              FUNCTION        DURATION   STATUS
────────────────────────────────────────────────────────────
POST     /login             auth_user       38ms       βœ”
   users.id=7f3a  last_login_at β†’ 2026-03-11T…

POST     /checkout          create_order    121ms      βœ”
   orders.id=82b1  insert
   cart_items.id=a2f1  insert

POST     /signup            create_user     3.2s       βœ— 500
   error: Stripe timeout after 10000ms
   β†’ flux why 550e8400
   ⚠ same row as previous request
   users.id=7f3a  plan free β†’ pro
flux tail

Stream live request logs

Real-time request stream with inline data mutations and error messages. Every request shows method, path, duration, and the rows it changed. Errors show the reason immediately.

flux incident replay

Replay production traffic against your fix

Re-runs a time window of real requests against your current code. Outbound side-effects (email, webhooks, Slack, cron) are disabled. Database writes and mutation logs run normally. Run it after fixing a bug to confirm the incident no longer fails.

flux incident replay 14:00..14:05
$ flux incident replay 14:00..14:05

  Replaying 23 requests from 14:00–14:05…

  Side-effects: hooks off Β· events off Β· cron off
  Database writes: on Β· mutation log: on

  βœ”  req:4f9a3b2c  POST /create_user   200  81ms
  βœ”  req:a3c91ef0  GET  /list_users    200  12ms
  βœ—  req:550e8400  POST /signup        500  44ms
     └─ Still failing: Stripe timeout

  23 replayed Β· 22 passing Β· 1 still failing
Incident Analysis
flux bug bisect

Find the commit that introduced a bug

Binary-searches your git history comparing trace behaviour before/after each commit. Automatically identifies the first commit where a specified request started failing.

flux bug bisect
$ flux bug bisect --request 550e8400

  Bisecting 42 commits (2026-03-01..2026-03-10)…

  Testing commit abc123…  βœ” passes
  Testing commit def456…  βœ— fails

  FIRST BAD COMMIT
  def456  "feat: add retry logic to stripe.charge"
  2026-03-08 by alice@example.com

Ready to try it?

Install the CLI, deploy your first function, and trace it end to end in 5 minutes.

Quickstart β†’Product overview