Skip to main content
This page documents every command, flag, shortcut, and environment variable available in the current repost binary. Use the navigation below to jump to a specific section.

Global flags

These flags apply to every repost command.

auth

The auth commands manage how the CLI authenticates to your Repost account.
Opens browser login, receives a local callback, and stores the generated API token securely in your system keychain or an encrypted config file.
If a token is already saved, this command keeps the existing token and will not replace it. Run repost auth logout first when you need to switch accounts.
Stores an API token for non-browser authentication. If TOKEN is omitted, the CLI reads from stdin. Tokens must start with rp_ and be exactly 43 characters long.
Validates the current token against the Repost API and prints a summary. When server validation succeeds, the output includes:
  • Token name
  • Token type (personal or organization)
  • Token prefix
  • Scopes
  • Creation time
  • Last-used time
  • Expiration date
  • Auth method (stored token or REPOST_TOKEN environment variable)
If a stored token has been revoked server-side, the CLI removes the local copy and asks you to authenticate again.
Attempts to revoke the stored token on the Repost server, then removes the token saved in local secure storage.
repost auth logout does not unset REPOST_TOKEN from your shell environment. Commands that run after logout will continue to use the environment variable if it is still set. Unset it manually with unset REPOST_TOKEN.

bucket

repost bucket list

Lists every bucket the authenticated account can access.
Shortcut: repost bl Output columns:

forwarder

The forwarder commands let you list, pause, resume, and disable forwarders across your buckets.

repost forwarder list

Lists forwarders across every accessible bucket. Pass --bucket <bucket-slug> to scope the output to one bucket. Bucket ID is accepted for compatibility.
Shortcut: repost fl Output columns:

Pause, resume, and disable

Run any of the following commands without flags to open an interactive selector, or pass --bucket and --forwarder for scripted use.
repost forwarder resume also reactivates a forwarder that has been disabled, not just one that is paused.
Flags for pause, resume, and disable: Action output columns (same shape for pause, resume, and disable): Command shortcuts:

forward

repost forward connects selected internal forwarders to your local machine and opens the terminal UI.
Flags:
Do not combine --pending-first and --skip-pending. If both are present, --skip-pending takes precedence and all queued events are skipped.
Target resolution rules:

TUI keyboard shortcuts

These shortcuts are available during an active repost forward session.

schema

The schema commands define, validate, version, and generate code for your webhook events. They delegate to a bundled schema engine that release builds embed, so no separate install is needed — your arguments pass through verbatim and the engine’s output and exit code are preserved. These are human-facing commands: they do not emit the agent JSON envelope, and the --json / --output flags do not apply. See Schema for the end-to-end workflow.
Scaffold a new schema workspace: creates repost/schema.repost (a generator block plus a small working example), a .env placeholder, and a .gitignore that covers .env and the generated output. Refuses if repost/ already exists. Interactive on a terminal; pass the flags to run headless.
Parse and validate .repost files without writing output. The exit code reflects the diagnostics, so it is CI-friendly.
Validate, then emit each generator’s SDK (typescript, go, python, java, or kotlin) and the JSON Schema into the path its generator block points at. No migration is written. It refuses (hard error) when the migration lineage has a fork or a hand-edited snapshot, and warns on stderr — but still generates — when the schema has unmigrated changes.A Java or Kotlin generator also needs packageName, clientName, and a resourceOutput root (for the client.json registry) alongside output. JVM projects usually generate through the Maven (repost:generate / repost:check) or Gradle (repostGenerate / repostGenerateCheck) plugin rather than the CLI — see the Java and Kotlin guides.
Diff the current output against the previous state; when it changed, write a new repost/migrations/<timestamp>_<name>/ snapshot (the directory is prefixed with a UTC YYYYMMDDHHMMSS timestamp), bump the affected event versions, and regenerate. No change is a no-op. Each migration records its parent (or parents for a reconciliation) and a checksum of its snapshot.--name is optional: when a migration is written and it is omitted, the command prompts for a name on a terminal (an empty answer gives a timestamp-only directory) and errors when stdin is not a terminal.When the migration would remove event types, it lists them and requires an explicit y on a terminal (default No), or --accept-removals to proceed non-interactively. This is the one command that reconciles a fork: it diffs the merged schema against every head, prints a per-parent summary, and records parents: [...].
After merging a branch that added migrations, run repost schema migrate dev once to write a reconciling migration; in CI, use repost schema migrate status (below) as the gate.
Report migration health without writing anything — the CI gate. Exit code 0 with a one-line summary when the lineage is clean; non-zero with a line-per-finding report when a merge left a fork, when the schema has unmigrated changes (the emission differs from the last snapshot, so migrate dev is not a no-op), or when a snapshot’s checksum no longer matches (a hand-edited or corrupted artifact).
Apply the committed migrations to a live Repost environment: sends the migration head, the full lineage, and the accumulated schemas.json; the server materializes the event-type registry. Requires a clean local status — a fork, unmigrated changes, or a checksum mismatch is a hard error. Re-deploying the same head is a no-op. A server head that is not in your lineage refuses the deploy with a machine-readable reason: behind (your checkout is stale — git pull the latest migrations and redeploy) or diverged (the histories have split — reconcile by git-merging the deployed migrations and running migrate dev, or replace the deployed history with --force).Auth: REPOST_TOKEN (an environment-scoped token with the schema:deploy scope) and optionally REPOST_API_URL, read from repost/.env before the process environment.--force replaces a diverged (or rolled-back) deployed history: the CLI fetches the deployed head, shows what will be replaced, and asks for confirmation, then echoes that head back as an optimistic lease — if the head moves between the look and the deploy, the force is refused. Forcing to an older, previously deployed checksum rewinds the registry (the rollback path).
Push the current schema to a live Repost environment without a migration artifact — Prisma’s db push, for dev and staging loops. Refused on environments that already have migration history, so a push can never fork a production lineage. The payload is checksummed from the emission itself, so repeat pushes of an unchanged schema are no-ops. Same auth as migrate deploy.
Convert a Svix environment export into a repost/ workspace.
Format .repost files in place. Idempotent.

Maintenance

repost version

Prints the binary version. Output may include commit hash and build date metadata.

repost update

Checks for a newer release and prompts to install it. Add --force to redownload the latest release regardless of the current version.

Shell completion and help

repost completion [bash|zsh|fish|powershell] prints a shell-completion script, and repost help [COMMAND] (or repost with no arguments) prints usage. These are standard Cobra built-ins — interactive conveniences with no JSON envelope and no stable contract, so they are out of scope for agent automation. For machine-readable command discovery, use capabilities and docs schema instead.

Agentic commands

These commands are built for non-interactive use — scoped tokens, machine-readable output, and stable exit codes. This section is the flag-level reference. For the operating model, runbooks, and the JSON contract, see the Agents section and Output & errors.

Output format

Every command below honors the global output flags. expect, tail, capabilities, and docs schema always emit JSON regardless of these flags. docs search and docs agent emit Markdown. capabilities exposes each command’s output_mode so agents can distinguish envelopes, top-level JSON, JSONL, raw-body exceptions, Markdown, and interactive streams.

Command, schema, and scope map

bucket list, forwarder list, and forwarder pause/resume/disable are documented under bucket and forwarder above; pass --json for the schemas listed here.

Identity and discovery

Prints the authenticated identity, active organization, plan, and usage. Schema repost.whoami/v1. No command-specific flags.
Prints the machine-readable command manifest — paths, usage, descriptions, command kind, group IDs, output mode, agent contract status, output schema names, and flags. Always JSON. Cache it by its version field.
Prints one command’s output schema, output mode, runtime envelope shape, and a data_shape when one is documented. Schema repost.command_schema/v1.
docs search prints the query cheatsheet. docs agent prints the operating manual. Output is Markdown.

Investigate

Search received events. Schema repost.events.search/v1. Returns next_cursor/has_more for forward paging.
Fetch one event with credentials redacted by default. Schema repost.events.get/v1. Body truncates to 4096 bytes unless --full.
Compare two events after default redaction. Schema repost.events.diff/v1.
Infer a JSON schema from event bodies or supplied samples. Schema repost.events.schema/v1.
Search delivery attempts. Schema repost.forwards.search/v1.
The authoritative per-attempt delivery timeline for one event and forwarder. Schema repost.forwards.chain/v1.
List dead-letter rows for a bucket or forwarder. Schema repost.dlq.list/v1.
Forwarder health over a window, with optional threshold gating. Schema repost.health/v1.

Wait for events

Block until one matching event arrives on the observe stream. Emits a bare JSON object (no envelope) and exits 0; exits 7 on timeout.
Stream compact, redacted events as NDJSON (one object per line). Set at least one bound.

Mutate

Create a bucket and an external forwarder in one step. Schema repost.init/v1.
Promote a temporary guest webhook setup into account-backed resources through the browser-confirmed local callback flow. Schema repost.promote.setup/v1. The command first emits status: "requires_user_action", then either status: "completed" after the CLI receives the browser callback or status: "failed" before exiting non-zero.
create provisions a bucket (schema repost.bucket.create/v1); get returns a bucket plus its forwarders (schema repost.bucket.get/v1).
Create a forwarder on a bucket. Schema repost.forwarder.create/v1. --target is required for EXTERNAL forwarders.
Preview or create a forwarder-scoped replay. Schema repost.replay.create/v1. A single explicit event ID needs no --yes; a --query or --dlq selection, or multiple IDs, require --yes unless --dry-run.
Inspect and steer replay jobs by ID. status/waitrepost.replay.status/v1; listrepost.replay.list/v1; replay pause / replay resume / replay cancelrepost.replay.action/v1.

Environment variables

When REPOST_BASE_URL=example.com is set, the CLI automatically derives the following service URLs: Set REPOST_API_URL, REPOST_WEB_URL, or REPOST_WS_URL individually only when a single endpoint needs a different value than what REPOST_BASE_URL would derive.

Authentication

Install the CLI binary and configure authentication on any platform.

Local Forwarding

Connect internal forwarders to your local machine and use the TUI.

Schema

Define, validate, version, and generate webhook events with repost schema.