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 the Arcade Agent Hub. 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 <subcommand>.
  • 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.6 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 init.

cade 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 -m "What changed in HEAD?"            # single message, then exit
cade -m "What went wrong?" < error.log     # prompt + file/stdin
cade resume                                # resume the most recent thread
cade resume "auth-rewrite"                 # resume a thread by name
cade use reviewer                          # switch the current agent
cade --voice                               # speak / hear (requires cade-cli[voice])

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
/pin, /unpin Pin reference material into the session
/tasks, /cron, /hooks, /notify Coordination surfaces (mirrored as cade tasks / cade cron / cade 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, PinContext, PushNotification, WebFetch, and WebSearch.
  • Memory_* — agent-library backed, per-agent indexed knowledge store.
  • Arcade Agent Hub + user MCP servers — Hub for Gmail/Slack/GitHub/… (cade mcp authorize hub); plus anything else you register.
cade tools list                         # all tools, all sources
cade tools list --source local          # filter by source
cade tools search "send slack"          # keyword search
cade tools info Local_ReadFile          # full schema + description
cade mcp authorize hub                  # 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 / test / 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 new reviewer --prompt "You are a meticulous code reviewer."  # create + switch
cade list                                     # all agents
cade use reviewer                             # switch the current agent
cade info / cade edit reviewer                # inspect / change config

cade mem                                      # the current agent's memory (status)
cade mem add ~/notes                          # index a directory
cade mem search "auth design"                 # semantic search
cade mem warm                                 # pre-load the semantic memory model

Memory is per-agent — each agent has its own ~/.cade/data/agents/<id>/memory/.librarian/ index, so a reviewer agent's notes never leak into another. Cade advertises Memory_* tools without starting the memory server; the first actual memory call starts it and keeps it warm for later calls. Use cade mem warm when you want to pay that semantic-search warmup before a conversation.


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 hooks list / add / remove / test
Tasks Durable work units that survive turn boundaries cade tasks list / get / create / update / delete
Cron Scheduled prompts the agent runs on a timer cade cron list / add / remove / enable / disable / run-now

Cross-agent messaging is set up with cade link / cade channel (an agent can only reach another it's been linked to). Hooks and tasks/cron details live in their respective cade <subcommand> --help outputs.


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 new local-qwen --model qwen3:4b
cade 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.6.tar.gz (410.6 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.6-py3-none-any.whl (512.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cade_cli-0.16.6.tar.gz
  • Upload date:
  • Size: 410.6 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.6.tar.gz
Algorithm Hash digest
SHA256 753063c79b2db67a252f057f678a0216241785cb7da456c32245e4be6cc69d83
MD5 074aecfff83d39d73709e5f54c4d611f
BLAKE2b-256 be0ff66a8311463351342b053546666d152f24f797ba87eff2c6f42778c6dc87

See more details on using hashes here.

Provenance

The following attestation bundles were made for cade_cli-0.16.6.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.6-py3-none-any.whl.

File metadata

  • Download URL: cade_cli-0.16.6-py3-none-any.whl
  • Upload date:
  • Size: 512.9 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d7f85b62414c137228d7b785e5dab7a8799828bb199bf8301f3f38e3b91a35ce
MD5 1a65affa46191f2e0cca2331b508cada
BLAKE2b-256 d2660a37dc62abe79b0dd11b17a9c13343559b5067eedbab813f74487c26e265

See more details on using hashes here.

Provenance

The following attestation bundles were made for cade_cli-0.16.6-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

0.16.13

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

This release

0.16.6 This release

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