arcana-cli
The arcana command-line interface for Arcana OS. A thin Typer wrapper around arcana-core.
uv tool install arcana-cli # or pip install arcana-cli
# or inside the monorepo:
uv sync --all-packages --all-extras
Commands
arcana init
Initialise Arcana OS. Creates ~/.arcana/ with the default directory layout, config.json, and world.json.
arcana init
arcana status
Show system status: home directory, agent count, and model connection count.
arcana status
arcana providers
Full lifecycle management for model provider connections.
arcana providers list
arcana providers add # interactive
arcana providers add -p ollama -m hermes-3 -n local
arcana providers add -p anthropic -m claude-sonnet-4-6 -n claude -k sk-...
arcana providers show local
arcana providers edit local --base-url http://gpu-box:11434
arcana providers edit claude --rotate-key
arcana providers remove local
| Subcommand | Description |
|---|---|
list |
List all saved connections |
add |
Add a connection (interactive or via flags) |
show <name> |
Show a connection's details (secrets redacted) |
edit <name> |
Edit base URL, API key, or custom headers |
remove <name> |
Remove a connection and its stored credential |
providers add flag |
Description |
|---|---|
--provider / -p |
ollama, anthropic, openai, openai_compat, or custom |
--model-id / -m |
Model ID (e.g. hermes-3, claude-sonnet-4-6) |
--name / -n |
Connection name |
--endpoint / -e |
Custom base URL |
--api-key / -k |
API key (stored in the OS keyring, never in plaintext) |
providers edit flag |
Description |
|---|---|
--base-url |
New base URL / endpoint |
--rotate-key |
Rotate the stored API key (interactive hidden prompt) |
--api-key-env VAR |
Read new API key from an environment variable |
--header "Key: Value" |
Set a custom header (repeatable; custom adapter only) |
--no-verify |
Skip the post-edit health check |
providers remove flag |
Description |
|---|---|
--yes / -y |
Skip confirmation prompt |
--force |
Remove even if dependent agents exist |
arcana agent
Manage agents.
arcana agent create # interactive card picker
arcana agent create --name scout --card the-fool --model local
arcana agent list
arcana agent show my-agent
arcana agent edit my-agent --card hermit --tags research,deep
arcana agent delete my-agent
arcana agent delete my-agent --yes # skip confirmation
arcana agent create without flags walks you through a card picker showing all 22 Major Arcana with their archetype and default temperature, lets you toggle optional modifier cards, and prints a blend-compatibility summary before saving. The World is reserved and cannot be assigned.
| Subcommand | Description |
|---|---|
create |
Create a new agent (interactive or via flags) |
list |
List all agents |
show <name> |
Show full config for an agent |
edit <name> |
Update name, description, card, model, or tags |
delete <name> |
Delete an agent |
The --model flag refers to a connection name created with arcana providers add.
arcana run
Run a prompt against a specific agent. --agent is required.
arcana run "Summarise the latest on LLM evals" --agent researcher
arcana run "Refactor this module" --agent my-agent --stream
arcana run "Where did we leave off?" --agent researcher --continue
arcana run "One-off, don't remember this" --agent researcher --no-memory
| Flag | Default | Description |
|---|---|---|
--agent / -a |
— (required) | Target agent by name or UUID |
--stream / -s |
off | Stream output token by token |
--session |
new session | Resume a specific session by UUID |
--continue |
off | Resume the agent's most recent session |
--no-memory |
off | Run stateless — don't load or persist memory |
The agent is rebuilt from its stored record and run through a ModelGateway using its configured connection. Each run is recorded to a session under the agent, and — unless --no-memory is passed — the agent recalls relevant memory before answering and extracts new memory afterwards through its MemoryFederation. The command prints the session id so you can resume it later with --session or --continue. --session and --continue are mutually exclusive.
arcana chat
Start an interactive, full-screen REPL with a card-configured agent — a scrolling transcript above a pinned input box. It drives the same agent + session + memory path as arcana run. --agent is required.
arcana chat --agent researcher
arcana chat --agent researcher --session <uuid> # resume a session
arcana chat --agent researcher --no-memory # stateless session
| Flag | Default | Description |
|---|---|---|
--agent / -a |
— (required) | Target agent by name or UUID |
--session |
new session | Resume a specific session by UUID |
--no-memory |
off | Run stateless — don't load or persist memory |
Inside the session, slash commands are available (type /help to list them):
| Command | Description |
|---|---|
/help |
List the in-session commands |
/memory |
Show what this agent recalls from this session |
/card |
Print the resolved card config — temperature, tone, weights |
/switch <name> |
Load another agent in a new session |
/retry |
Re-run your last message |
/save |
Force a session snapshot to disk now |
/clear |
Clear the transcript (history is kept) |
/fresh |
Start a new session |
/no-memory |
Start a new stateless session (memory off) |
/exit |
Close the session and quit |
Ctrl+C cancels the current turn (or quits when idle); Ctrl+D quits at an empty prompt.
arcana soul
Manage soul.md — your global user context, injected into every agent's session.
arcana soul edit # open in $EDITOR, seeded from a template on first use
arcana soul show # print the current soul.md
| Subcommand | Description |
|---|---|
edit |
Open soul.md in $EDITOR, creating it from a template on first use |
show |
Print the current soul.md, or a hint if it doesn't exist |
arcana cards
Browse the card definitions.
arcana cards # list all 22 Major Arcana
arcana cards show hermit
| Subcommand | Description |
|---|---|
| (default) | List all 22 Major Arcana |
show <name> |
Show one card's archetype, temperature, and details |
Runtime layout
All state lives under ~/.arcana/, created by arcana init:
~/.arcana/
├── config.json
├── world.json
├── soul.md ← optional global user context (arcana soul edit)
├── agents/{id}/ ← agent.json + memory.db + sessions/
├── connections/ ← models.json
├── vector/ ← global-tier vector store
├── spreads/ ← active agent configurations
└── cards/{core,custom}/
Secrets (API keys) are stored in the OS keyring, never in these files.
Development
# Type check
uv run pyright packages/arcana-cli/arcana_cli
# Tests
uv run pytest packages/arcana-cli/tests/ -v
Roadmap
Agents now run with persistent sessions and the federated memory layer wired into run and chat. Still to come are the commands whose backends land later — arcana world, arcana spread, and arcana mcp (the tool/MCP gateway and The World meta-agent).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arcana_cli-0.3.0.tar.gz.
File metadata
- Download URL: arcana_cli-0.3.0.tar.gz
- Upload date:
- Size: 56.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32059d88006deb4be81dfb744501cd6121ca16cae77f94da72816667d1e5944d
|
|
| MD5 |
b913084b26af7a09701b23bb0d592451
|
|
| BLAKE2b-256 |
c0da7e30568924798c5fcc2aaec122f2826da322a17ba029e6821525a581373b
|
Provenance
The following attestation bundles were made for arcana_cli-0.3.0.tar.gz:
Publisher:
release.yml on priscilapower/arcana-os
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arcana_cli-0.3.0.tar.gz -
Subject digest:
32059d88006deb4be81dfb744501cd6121ca16cae77f94da72816667d1e5944d - Sigstore transparency entry: 2194643643
- Sigstore integration time:
-
Permalink:
priscilapower/arcana-os@d7c43bcff5c8be1e1b1d4d53dc912cb1e736ffca -
Branch / Tag:
refs/tags/arcana-cli-v0.3.0 - Owner: https://github.com/priscilapower
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d7c43bcff5c8be1e1b1d4d53dc912cb1e736ffca -
Trigger Event:
release
-
Statement type:
File details
Details for the file arcana_cli-0.3.0-py3-none-any.whl.
File metadata
- Download URL: arcana_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 51.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41ac3765fa8e240f58f8a1a5a77e9881bb69add15e8a16bfa403b833172464e2
|
|
| MD5 |
f1422bf52b8be413393ec5c2c7908abb
|
|
| BLAKE2b-256 |
80ae56d90a804a01f5bd9e6f93f295a6a5356b32f2da4f1eaf208ca71cd21e60
|
Provenance
The following attestation bundles were made for arcana_cli-0.3.0-py3-none-any.whl:
Publisher:
release.yml on priscilapower/arcana-os
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arcana_cli-0.3.0-py3-none-any.whl -
Subject digest:
41ac3765fa8e240f58f8a1a5a77e9881bb69add15e8a16bfa403b833172464e2 - Sigstore transparency entry: 2194643665
- Sigstore integration time:
-
Permalink:
priscilapower/arcana-os@d7c43bcff5c8be1e1b1d4d53dc912cb1e736ffca -
Branch / Tag:
refs/tags/arcana-cli-v0.3.0 - Owner: https://github.com/priscilapower
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d7c43bcff5c8be1e1b1d4d53dc912cb1e736ffca -
Trigger Event:
release
-
Statement type: