SIBYL LABSdocs

CLI reference V3

The sibyl command. Four subcommands cover the full surface: init, upgrade, status, health. Pure stdlib HTTP. No requests, no httpx, no background daemon. The wheel installs in seconds.

topology · sibyl command surface

Four subcommands, one shared session model.

sibyl init activate · bind upgrade stake · subscribe status tier · cap · cache health json diagnostic SHARED · ~/.sibyl-memory/credentials.json · tier_cache.json · memory.db every subcommand reads/writes this state · atomic, 0600 perms no daemon · no background process · runs only when you invoke it

Common flags (every subcommand)

FlagDefaultMeaning
--credentials-dir <path>~/.sibyl-memory/Use a different credentials + DB directory. Useful for multiple accounts on one machine.
--api-base <url>https://api.sibyllabs.orgOverride the API host. For staging or self-hosted setups.
--jsonfalseEmit machine-readable JSON instead of styled terminal output.
--quiet · -qfalseSuppress informational output. Errors still print to stderr.
--no-colorfalseDisable ANSI color. Useful for CI logs.
--help · -hShow subcommand help and exit.
--versionPrint CLI + SDK + Hermes versions and exit.
sibyl init since 0.1.0

Activate your account. Generates a one-time session UUID, opens the browser to sibyllabs.org/plugin/activate?session=…, prints a 6-digit pairing code for the email path, and polls /api/plugin/check every 3 seconds with a 10-minute timeout. On bind, writes ~/.sibyl-memory/credentials.json atomically at mode 0600.

sibyl init [--reset] [--add-wallet] [--no-browser]
$ sibyl init session created · opening browser · pairing code: 4 9 2 0 7 1
FlagEffect
--resetRevoke the existing session token, generate a new one, walk through activation again. Memory data preserved.
--add-walletRun a SIWE bind against an existing email-only account. Required before subscribing in USDC or staker-tier checks.
--no-browserDon't auto-open the browser. Useful for SSH sessions; copy the URL by hand.
--timeout <sec>How long to poll for bind. Default 600 (10 min).
writes credentials.json (atomic, 0600)
reads — none
network POST /session-init
POST /email-bind or /bind
GET /check (poll)
exit codes 0 · activated
2 · timeout
130 · ctrl-c
sibyl upgrade since 0.1.0

Lift the free-tier cap. Opens sibyllabs.org/plugin/upgrade?session=… with your existing session token. Polls /api/plugin/access every 3 seconds with a 15-minute timeout. On a tier change, refreshes the local credentials.json hint and clears tier_cache.json so your next write picks up the new entitlement without an extra round trip. Both files are local performance hints — the cap decision is always made server-side, and the credentials JSON is HMAC-signed so a hand-edit fails the server-side verification. See authentication · tamper-evidence.

sibyl upgrade [--path stake|subscribe|lifetime] [--no-browser]
$ sibyl upgrade --path subscribe tier flipped: free → sync · expires 2026-06-15
FlagEffect
--path stakePre-select the staker path on the upgrade page. Skips the path-picker.
--path subscribePre-select the USDC subscribe path.
--path lifetimePre-select the lifetime payment path.
--no-browserPrint the upgrade URL without opening the browser. Useful for SSH.
--timeout <sec>How long to poll for tier change. Default 900 (15 min).
writes credentials.json (rewrite)
tier_cache.json (clear)
reads credentials.json
network GET /access (poll)
GET /pricing (page-side)
on-chain stake · 1 SIWE (no gas)
subscribe · 1 USDC tx
see also /memory/payment
sibyl status since 0.1.0

The 90% command. Combines local credentials, DB size, tier cache freshness, and a live server-side tier verification. Flags tier drift between local and server. The right default to put in your shell prompt or run before any "is it really working?" question.

sibyl status [--refresh] [--cap-only] [--json]
$ sibyl status --cap-only 1.24 MB / 2.00 MB [62%] · tier=FREE · cache fresh 6d 23h
FlagEffect
--refreshForce a server-side tier re-check, ignoring the local cache. Use after an upgrade if the CLI hasn't picked it up.
--cap-onlyPrint one line with current size + cap + tier. For shell prompts.
--jsonEmit JSON. See /memory/account for the schema.
writes tier_cache.json (refresh)
reads credentials.json
tier_cache.json
memory.db (size only)
network GET /access (1 call)
exit codes 0 · ok
1 · tier drift
2 · no credentials
3 · server unreachable
see also /memory/account
sibyl health since 0.1.0

Provider self-check. Wraps SibylMemoryProvider.health() and emits a JSON dict describing version, schema, DB state, credentials state, and server reachability. Useful for shell scripts, status pages, and support threads.

sibyl health [--exit-code-mode] [--no-network]
$ sibyl health --exit-code-mode ok · all systems green · exit 0
FlagEffect
--exit-code-modeEmit a single OK/FAIL line and use the exit code as the signal. For shell if blocks.
--no-networkSkip the server reachability probe. Useful when offline.
writes — none
reads credentials.json (presence)
memory.db (open test)
network GET /health
exit codes 0 · all green
1 · partial degradation
2 · critical failure
see also /memory/account

Environment variables

Every flag also accepts an environment-variable override. Useful for CI, container deploys, or staging tests.

VariableDefaultWhat it overrides
SIBYL_API_BASEhttps://api.sibyllabs.org--api-base
SIBYL_ACTIVATE_BASEhttps://sibyllabs.org/plugin/activateactivation URL host
SIBYL_UPGRADE_BASEhttps://sibyllabs.org/plugin/upgradeupgrade URL host
SIBYL_CREDENTIALS_DIR~/.sibyl-memory/--credentials-dir
SIBYL_QUIET0--quiet
NO_COLOR--no-color (per the NO_COLOR standard)

Exit codes (full reference)

CodeMeaningUsed by
0Successall
1Soft failure / tier drift / partial degradationstatus, health
2Hard failure / timeout / no credentialsall
3Server unreachablestatus
4HMAC verification failed (tamper-evidence triggered)status
130Interrupted (Ctrl-C)all

Scripting patterns

Wait until upgraded before continuing

#!/usr/bin/env bash
while ! sibyl status --cap-only | grep -q "tier=SYNC"; do sleep 3; done
echo "ready"

Block deploy if memory is degraded

#!/usr/bin/env bash
sibyl health --exit-code-mode || { echo "memory degraded · aborting deploy"; exit 1; }

Print cap usage in your shell prompt

# bash/zsh
PS1='$(sibyl status --cap-only --no-color 2>/dev/null | cut -c1-22) \w $ '

Sources

The CLI is implemented at packages/sibyl-memory-cli/src/sibyl_memory_cli/cli.py in the open source tree. Pure stdlib — urllib only, no requests, no httpx. The wheel is roughly 10 KB. Full changelog at packages/sibyl-memory-cli/CHANGELOG.md.