Skip to main content

Cade

The CLI agent from Arcade.dev. Coding, research, and everyday automation — driven from a terminal, a single shell pipe, or a long-lived daemon that replies over Telegram.

curl -fsSL https://arcadeagent.dev/install | sh
cade

That is the recommended install — a prebuilt binary from arcadeagent.dev. No GitHub token, no Python toolchain. First cade walks you through model setup, Arcade login, and Arcade cloud tools. Re-run the same curl to upgrade.


Highlights

  • Three deployment modes from the same binary. Interactive chat (cade), one-shot or pipe (cade -m "…"), or a headless daemon (cade daemon) that serves MCP hosts and messaging.
  • Tools from anywhere. Built-in local tools (filesystem / shell / git / search / tasks / memory), Arcade Cloud tools (Slack, GitHub, Gmail, calendars, …), and any MCP server you register — all unified under one tool surface.
  • Bidirectional MCP. Tools can call context.ui.elicit(…) for structured input, context.log.* for live operator logs, and context.progress.report(…) for editable progress UI — routed end-to-end through whichever adapter is active (Telegram inline keyboard, terminal prompt).
  • Agents + per-agent memory. Multiple agents, each with their own model, system prompt, tools, and an indexed memory store backed by agent-library.
  • Extensibility surface. Hooks (lifecycle events), tasks (durable work), cron (scheduled prompts) — all available to the agent as Local_* tools and to you as cade agent hooks / tasks / cron.
  • Bring your own LLM. OpenAI, Anthropic, or any OpenAI-compatible endpoint (Ollama, vLLM, Together, Groq, Fireworks, …). --local-only skips Arcade Cloud entirely.

Install

Recommended (macOS + Linux)

curl -fsSL https://arcadeagent.dev/install | sh

The script detects your OS/arch, downloads the matching prebuilt binary (macOS arm64, Linux x64), verifies its checksum, and drops cade in ~/.local/bin. Pin a version or install location:

CADE_VERSION=0.16.9 CADE_INSTALL_DIR=/usr/local/bin \
  sh -c "$(curl -fsSL https://arcadeagent.dev/install)"

On Linux the installer auto-picks a cpu or gpu build (GPU when nvidia-smi detects a card; the GPU build bundles the CUDA stack and is a much larger download). Force it with CADE_VARIANT=cpu or CADE_VARIANT=gpu.

Alternatives

Source Command When
uv uv tool install cade-cli Prefer a PyPI-managed tool venv
pip pip install cade-cli Windows, or no curl install
From source git clone … && uv sync Contributing / hacking on Cade

(Windows: grab the .zip from the releases page, or pip install cade-cli.)

Prerequisites to run Cade: an LLM provider key (OPENAI_API_KEY or ANTHROPIC_API_KEY), and an Arcade account (arcade.dev) for cloud tools. Skip Arcade with --local-only or CADE_LOCAL_ONLY=1. The curl installer does not require a local Python — Python 3.11+ is only needed for the uv / pip / from-source paths.

The first run walks you through picking a model provider and key (stored in your OS keyring); re-run it any time with cade account init.

cade account init   # pick provider + model (runs automatically on first launch)
cade login          # Arcade Cloud OAuth (skip with --local-only)
cade --version

Full install and first-run docs: docs/install.md and docs/quickstart.md.


Quick start

cade                                       # interactive chat
cade chat                                  # same
cade chat -r                               # resume most recent thread
cade chat --resume "auth-rewrite"          # resume a named thread
cade -m "What changed in HEAD?"            # single message, then exit
cade -m "What went wrong?" < error.log     # prompt + file/stdin
cade --voice                               # speak / hear (requires cade-cli[voice])

cade --help shows: chat, agent, mcp, daemon, account, login, logout. Tools are under cade agent tools. Older flat names (cade list, cade mem, cade tools, cade resume, …) still work as hidden aliases.

Top-level options

Flag Description
-m, --message Single-message mode; piped stdin is appended to the prompt
--voice Voice mode; install cade-cli[voice] first
-v, --verbose Debug logging
--version Print version

In-chat slash commands

Command Description
/help List commands
/clear Clear screen
/copy Copy last response
/logs Recent log entries
/thread, /history Current thread info
/tasks, /cron, /hooks, /notify Coordination surfaces (also cade agent tasks / cron / hooks)
/usage Context-window status and token usage
/cd, /pwd, /! Shell shortcuts
Ctrl+C Exit

Tools

Tools come from three sources and are addressed uniformly by their registered name:

  • Local_* — built-in: filesystem (ReadFile, WriteFile, Edit, ListFiles), shell (Bash), Search, Git, Task*, AskUserQuestion, RetrieveToolResult, ToolSchema, PushNotification, WebFetch, and WebSearch.
  • Memory_* — agent-library backed, per-agent indexed knowledge store.
  • Arcade cloud tools + user MCP servers — Gmail/Slack/GitHub/… via cade mcp authorize arcade; plus anything else you register.
cade agent tools list                   # MCP tools (Local_* hidden by default)
cade agent tools list --source local    # built-in Local_* tools only
cade agent tools search "send slack"    # keyword search
cade agent tools info Local_ReadFile    # full schema + description
cade mcp authorize arcade               # Arcade catalogue (OAuth)
cade mcp install-hosts                  # register Cade in Cursor / Claude / …

The full local tool surface (including the bidirectional MCP capabilities and cade daemon integration) is documented in docs/mcp.md.

Custom MCP servers

cade mcp add my-server http://localhost:8080
cade mcp add my-server http://… --auth bearer -t <token>
cade mcp authorize my-server                      # OAuth flow (browser)
cade mcp list / status / enable / disable / rm

User MCP servers register on the agent's ~/.cade/config/agents/<name>.toml [[mcp]] list (with cade.toml [agent_defaults].mcp as the shared default). Servers with large catalogs are auto-deferred (parameter schemas stripped to keep tool-list bytes down) and fetched on demand via Local_ToolSchema.


Agents + memory

Each agent bundles a model, system prompt, tools, and memory. The current agent is ambient — most commands act on it.

cade agent new reviewer --prompt "You are a meticulous code reviewer."
cade agent list
cade agent use reviewer
cade agent info / cade agent edit reviewer

cade agent mem add ~/Notes                    # one step: register + index
cade agent mem                                # status
cade agent mem search "auth design"

Memory is per-agent under ~/.cade/data/agents/<id>/memory/<agent>/.librarian/. Cade keeps the index and embedder ready (auto-heal empty indexes, warm after add/update, longer first search timeouts). The model uses Memory_* for notes recall — not Local_* filesystem tools. Details: docs/agents.md.


Headless daemon: cade daemon

One long-lived supervisor serves all your agents to MCP hosts (Claude Desktop, Cursor) and messaging adapters (Telegram, iMessage). Each conversation gets its own persistent thread — model, memory, and tools carry across messages. See docs/daemon.md.

cade daemon init                         # mint a token + optional Telegram/iMessage wizard
cade daemon start                        # foreground (gateway + messaging)
cade daemon start -v                     # also print message traffic
cade daemon install launchd              # macOS LaunchAgent (or: systemd)
cade daemon status / stop                # health; SIGTERM
cade daemon token new cursor -e delegate -e resources

Adapter + tool config lives in ~/.cade/config/agents/<name>.toml. Edit and kill -HUP $(cat ~/.cade/run/daemon.pid) to reload without restart.

Security defaults are fail-closed: allowed_senders = [] blocks everyone on messengers; tools are default-deny against [tools].allow. Loopback MCP (stdio shim / local CLI) needs no token; pass cade daemon start --auth or bind off-loopback to require bearer tokens.


Extensibility: hooks, tasks, cron

Three primitives the agent uses directly (as Local_* tools) and you can drive from the CLI:

Surface What it is CLI
Hooks Lifecycle event handlers (pre/post tool, user prompt submit) cade agent hooks …
Tasks Durable work units that survive turn boundaries cade agent tasks …
Cron Scheduled prompts the agent runs on a timer cade agent cron …

Cross-agent messaging is set up with cade agent link / cade agent channel. See cade agent --help for the full surface.


Bring your own LLM

Cade works with any OpenAI-compatible endpoint. Three ways to wire one in (CLI flag → env → config, first match wins):

# CLI flag for Ollama. Use a model from `ollama list`.
cade chat -L --endpoint http://localhost:11434 --model qwen3:4b

# Or create a dedicated agent for the local model
cade agent new local-qwen --model qwen3:4b
cade agent use local-qwen
export OLLAMA_BASE_URL="http://localhost:11434"
CADE_LOCAL_ONLY=1 cade -m "hello from a local model"

# Config — ~/.cade/config/cade.toml
[model_settings]
host = "http://localhost:8000/v1"
api_key = "ollama"

Skip Arcade Cloud authentication entirely with --local-only or CADE_LOCAL_ONLY=1 when running against local LLMs.


Configuration

All state lives under ~/.cade/. Override the location with CADE_HOME=/path/to/alt.

File Purpose
config/cade.toml Global settings + [agent_defaults] (model, provider, UI, …)
config/agents/<name>.toml Per-agent config (model, prompt, [[mcp]], [tools], [adapters.*], hooks)
data/agents/<id>/ Per-agent state: threads/ memory/ tasks/ inbox/
run/daemon.pid Single gateway-supervisor pidfile
run/agents/<name>/ Per-agent runtime: mcp-services, grants
logs/cade.log Rotating log file

Full layout, env vars, and TOML schema in docs/configuration.md.

Common env vars

Variable Purpose
OPENAI_API_KEY / ANTHROPIC_API_KEY LLM provider keys
OPENAI_BASE_URL Custom OpenAI-compatible endpoint
ARCADE_API_KEY, ARCADE_BASE_URL Arcade Cloud (alternative to OAuth)
CADE_LOCAL_ONLY=1 Skip remote tools entirely
CADE_HOME Override config directory
CADE_ATTACH=0 Don't attach CLI turns to cade daemon
CADE_AUTOSTART=0 Don't spawn the daemon when attach needs one
CADE_PROJECT_ROOT Sandbox Local_* filesystem tools to this root

Contributing

git clone https://github.com/arcadeai-labs/cade.git
cd cade
uv sync --extra dev
uv run pytest
uv run ruff check src/ tests/

Style: Python 3.11+ with modern type hints (dict, list, | None); ruff for lint + format; pytest with asyncio_mode = "auto". Public functions and classes get docstrings.

Build/release docs live in docs/development.md. PRs welcome — open an issue first for anything substantial.


Resources

  • arcade.dev — product
  • docs.arcade.dev — API and tool catalog
  • docs/ — quickstart, examples, install, config, MCP, agents, automation, channels, voice, development, and adapters. Browse as a site with make docs (MkDocs Material)
  • Issues · Releases

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cade_cli-0.16.13.tar.gz (425.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cade_cli-0.16.13-py3-none-any.whl (534.3 kB view details)

Uploaded Python 3

File details

Details for the file cade_cli-0.16.13.tar.gz.

File metadata

  • Download URL: cade_cli-0.16.13.tar.gz
  • Upload date:
  • Size: 425.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cade_cli-0.16.13.tar.gz
Algorithm Hash digest
SHA256 2d1965c3e248e80da7776109850bdabe420f39a37d228fd25fc077c6b5caf9e4
MD5 fbddf7a623e09d91d63f056a5d518565
BLAKE2b-256 be9fce81a1a120c69130a80c763e2db90fd1b9e1f7d51c15491b2c5168108628

See more details on using hashes here.

Provenance

The following attestation bundles were made for cade_cli-0.16.13.tar.gz:

Publisher: release.yml on arcadeai-labs/cade

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cade_cli-0.16.13-py3-none-any.whl.

File metadata

  • Download URL: cade_cli-0.16.13-py3-none-any.whl
  • Upload date:
  • Size: 534.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cade_cli-0.16.13-py3-none-any.whl
Algorithm Hash digest
SHA256 d527ca86de8af1a7e3bc4cf1fab3967a22cd4b20fd7902033fbf640d7cf4d5a6
MD5 a19d80fd85489d3c1310354dfe71e212
BLAKE2b-256 c9fc7194864d1f2fa0656e60516a5bf47049d3500a918193a6955e27c3f523a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cade_cli-0.16.13-py3-none-any.whl:

Publisher: release.yml on arcadeai-labs/cade

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.20.7

2 files

0.20.6

2 files

0.20.5

2 files

0.20.4

2 files

0.20.3

2 files

0.20.2

2 files

0.20.1

2 files

0.20.0

2 files

0.19.2

2 files

0.19.1

2 files

0.19.0

2 files

0.18.1

2 files

0.18.0

2 files

0.17.0

2 files

0.16.21

2 files

0.16.20

2 files

0.16.19

2 files

0.16.18

2 files

0.16.17

2 files

0.16.16

2 files

0.16.15

2 files

0.16.14

2 files

This release

0.16.13 This release

2 files

0.16.12

2 files

0.16.11

2 files

0.16.9

2 files

0.16.8

2 files

0.16.7

2 files

0.16.6

2 files

0.16.5

2 files

0.16.4

2 files

0.16.3

2 files

0.16.2

2 files

0.16.1

2 files

0.16.0

2 files

0.15.10

2 files

0.15.9

2 files

0.15.8

2 files

0.15.7

2 files

0.15.6

2 files

0.15.5

2 files

0.15.4

2 files

0.15.2

2 files

0.15.1

2 files

0.15.0

2 files

0.14.1

2 files

0.14.0

2 files

0.13.4

2 files

0.13.3

2 files

0.13.2

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.4

2 files

0.3.3

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page