Skip to main content
rafflesia is a headless biological evidence CLI. It parses flags, calls the API, prints a JSON envelope, and exits. There is no local state beyond your credential, and no command interprets results for you.

Global flags

Every command accepts these:

Human output vs. JSON

By default commands render a compact human view. Anything programmatic should pass --json and read the envelope:
--print avoids a jq dependency for single values:
--output keeps large payloads off your terminal — the file gets the body, and stdout gets the metadata (path, byte count, digest):

Environment variables

Server resolution order is --server, then RAFFLESIA_API_BASE_URL, then the server recorded by auth login, then the local default.

Exit codes

The exit-code contract is deliberately narrow:
  • 0 — the command succeeded.
  • 1 — anything else: flag validation, transport failure, or a structured envelope error.
Failure detail is carried in the printed envelope and on stderr — the stable error.type, error.code, message, and doc_url — not encoded in distinct exit statuses. Scripts should branch on error.code, not on the exit value.

Idempotency

Mutating operations accept an idempotency key so a retry after a timeout cannot create a second job or a second object. Over HTTP that is the Idempotency-Key header; the job-submitting CLI commands manage it for you.

Update notices

The CLI checks for newer releases in the background and prints a one-line notice to stderr after a command completes. It never blocks the command, and it is inert on non-TTY stderr and in CI. Check explicitly with: