Skip to main content

albus CLI

Command-line client for the Albus REST API, built on the public albus-sdk Python SDK. It is a thin shell over the SDK: every command that calls Albus maps to one API operation and prints the JSON response, so output pipes into jq.

Install

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/albusgroup/albus-cli/master/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/albusgroup/albus-cli/master/install.ps1 | iex

Pin a version:

curl -fsSL https://raw.githubusercontent.com/albusgroup/albus-cli/master/install.sh | ALBUS_CLI_VERSION=0.2.0 sh

The installer uses, in order: uv tool install, pip install --user, or pip inside a conda environment. It does not download OS-specific binaries. To install directly instead:

uv tool install albus-cli
# or
pip install --user albus-cli

Authentication

Sign in with a browser, which stores a session per base URL and renews it as it expires:

albus login
albus whoami
albus logout

albus health is the one command that needs no credential, matching its empty security in api/openapi.yaml: run it first to tell an unreachable API from an unauthenticated one. albus status reports which credential is in effect and whether Albus accepts it, as JSON, exiting 0 either way — it is the one command to run to find out where you stand. albus login --no-browser prints the authorization URL instead of opening it, for a coding agent signing in the user in front of it.

Or export an organization API key, which wins over a stored session so CI and agent harnesses need not touch disk:

export ALBUS_API_KEY=...     # organization API key
export ALBUS_BASE_URL=http://localhost:8080/api  # optional; defaults to prod

--base-url overrides ALBUS_BASE_URL, and --timeout bounds each request (a waiting sessions run long-polls and is exempt).

albus login opens a browser on this machine and listens on 127.0.0.1:8484-8487; on a headless host, forward those ports or export ALBUS_API_KEY instead. The session is written to $ALBUS_CONFIG_DIR/credentials.json, else $XDG_CONFIG_HOME/albus/credentials.json, else ~/.config/albus/.

Operations whose security in api/openapi.yaml lists bearerAuth only, such as /whoami, /tokens, and /invites, need the browser session. albus whoami, albus tokens, and albus invites use it even when ALBUS_API_KEY is exported, and say to run albus login when there is none. Sign in first, then albus tokens create to mint the key that ALBUS_API_KEY carries.

Commands

albus health
albus --version
albus login
albus login --no-browser
albus whoami
albus logout
albus status

albus sessions run my-session -p "summarize the incident" \
  --agent-name support-triage --model gemini-3.6-flash \
  --provider gemini --credential albus.sh/secrets/gemini-key
albus sessions run my-session -p "and the follow-up?" \
  --agent-name support-triage --agent-file agent.json --no-wait
albus sessions list
albus sessions get my-session --limit 20
albus sessions audit my-session --after "$cursor"
albus sessions delete my-session

albus secrets list
albus secrets create gemini-key --value ...   # or pipe the value on stdin
albus secrets get gemini-key
albus secrets update gemini-key < value.txt
albus secrets delete gemini-key

albus agents list
albus agents get support-triage
albus agents revision support-triage "$revision"

albus tokens list
albus tokens create ci
albus tokens get "$id"
albus tokens delete "$id"

albus invites create teammate@example.com

tokens create prints the only copy of the key value the API ever returns; list and get return metadata alone.

invites create invites a person by email, and they get their own organization on first sign-in. CreateInviteRequest's role and organization_id have no flags: one user is one organization for the beta.

sessions run waits for the assistant response by default; pass --no-wait to return as soon as the invocation is accepted, or --wait-timeout to bound the wait server-side. Pass --idempotency-key to make a run retry-safe. The JSON output carries the effective idempotency_key, whether supplied by the caller or generated by the server — absent only if something between the CLI and Albus strips the response header on a run that supplied no key.

--agent-file takes a JSON object shaped like the API's AgentConfig and covers what the flags do not (MCP servers, provider URL overrides):

{
  "model": { "name": "gemini-3.6-flash" },
  "mcp_servers": [
    { "name": "github", "url": "https://mcp.example.com/mcp" }
  ]
}

Documentation

Reader URL
A person https://docs.albus.sh
A coding agent https://docs.albus.sh/agents/docs.md

The CLI prints both, so whoever is reading its output has the URL that is theirs.

Development

The CLI is developed in the private Albus repository, next to the api/openapi.yaml contract and the SDK it is built on, and each release is copied to the public albusgroup/albus-cli repository. That repository accepts issues, not pull requests — see CONTRIBUTING.md.

make check      # ruff, mypy --strict, pytest

Release files for albus-cli 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for albus-cli 0.3.0
File Size Uploaded
albus_cli-0.3.0.tar.gz 81.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for albus-cli 0.3.0
File Interpreter ABI Platform
albus_cli-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 110.1 kB

Release files / albus_cli-0.3.0.tar.gz

Download URL albus_cli-0.3.0.tar.gz
Size 81.4 kB
Tags Source
SHA-256 checksum
How to use checksums
aae262fca9cdc69d85c770b2a916bf033d00ab57aee5cb496d1b0fc6570a1d10
BLAKE2b-256 checksum
How to use checksums
89ed1859dac769e9139191127f14d7598793778d1c08923fd76b5687f8e5a624
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / albus_cli-0.3.0-py3-none-any.whl

Download URL albus_cli-0.3.0-py3-none-any.whl
Size 28.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2856dff7ec34385dab64e3f61e4d25311e37cefb02b1c891c7bbe4f3252d4fb5
BLAKE2b-256 checksum
How to use checksums
31e6c9297f258507d257745755e484d42023d6d54b17ff11e09b1da3e58e1eff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.12.2

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page