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.
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 theIdempotency-Key header; the job-submitting CLI commands manage it for you.