Skip to content

Repository files navigation

Camy

Camy in your terminal.
Triage the inbox, draft the replies, chase the invoice, hold the calendar,
review the diff, run the tests, publish the site, schedule the rest.
One binary, in every shell, pipe, and cron job you already have.

Latest release Release date CI Homebrew Platforms Documentation Security policy

Install  ·   Quick start  ·   Docs  ·   Reference  ·   Scripting  ·   Security


A camy chat: the agent reads the inbox and calendar, answers, and pauses on an approval before a payment; the human types y and the turn resumes.
Ask. It reads, it answers, and it stops at the amber box until you say y. Real output, sample data.


Install

# macOS and Linux, arm64 and amd64. No sudo.
curl -fsSL https://camy.ai/cli/install.sh | sh

# or, with Homebrew
brew tap trycamy/tap && brew install camy

# or, with npm
npm install -g @camy/cli

Nothing unpacks until its checksum matches. Installation covers manual downloads, pinning a version, camy update, and uninstalling.

The installer: checksum verified, installed to ~/.local/bin, completions and man pages in place, ready in this terminal.
The installer, as it runs.

Sixty seconds

camy auth login                          # browser handoff; a scoped, expiring key lands in your keychain
camy status                              # what is happening right now
camy chat "what needs me before noon?"   # one turn, streamed, with every tool call
git diff | camy chat "review this"       # stdin is context, stdout is the reply
camy approvals                           # what is waiting on you
camy inbox --needs-you                   # the rows that need a decision
camy vm exec -- pytest -q                # your cloud workspace; the exit code is mirrored

No --api-key flag exists. Sign in once; the key lives in your keychain, and scripts read CAMY_API_KEY. Bare camy opens the full-screen app. Quick start walks the whole minute.

camy status: one approval waiting, two inbox rows that need you, two jobs active, the workspace running.
camy status: what needs you, and the command that opens it.

What it does

Chat
Ask; watch every tool call stream. Anything risky stops for you. -c continues, stdin is context.
Approvals
The pauses. Approve, deny, or answer from anywhere; --wait streams the resumed turn.
Inbox
A verdict on every message: needs you, handled, filed. Reply, undo, restore. A sweep dial from off to auto.
Workspace
Your cloud computer. vm exec hands you the exit code, ssh-style; vm shell is a live PTY.
Local bridge
The same agent in the project you are standing in. One card per action; secrets and destructive commands refused.
Automation
Schedules, durable jobs, tasks, capture, webhooks. The same binary, in cron or CI.
Canvas
What a chat built, on disk: files, snapshots, published sites.
Scripts
--json everywhere, --jq and --template built in, NDJSON streams, frozen exit codes.
Terminal
Truecolor to plain. NO_COLOR, --accessible, hyperlinks and inline images where supported.

camy inbox: four rows, each with a verdict: two need you, one handled, one filed.
camy inbox: a verdict on every row.

The leash

Anything risky pauses for a human. The pause is the safety model, not a setting.

  • It fails closed. Headless, with --no-input, --json, or no terminal, the approval stays pending and the exit is 4 with its id. Timeouts never approve and never deny.
  • It reads /dev/tty, never stdin. Piped input cannot answer a prompt. There is no yes-to-everything flag.
  • The local bridge asks per action. Reads run; every write and every command shows the exact command or diff first. .env, ~/.ssh, keys, credential stores, sudo, and rm -rf on root-like targets are refused, whatever anyone approved.

Approvals · The local bridge · SECURITY.md

Scripts

stdout is data. stderr is everything else. --json on any command, --jq and --template built in, streams as NDJSON. Exit codes, frozen for 1.x:

0 1 2 3 4 5 6 7 8 255
ok runtime usage auth approval pending rate limited plan unavailable approval denied vm exec itself failed
camy inbox --needs-you --json --jq '.[].subject'
camy api GET /v1/jobs --jq '.[].id'
camy chat --no-input "post the nightly summary"   # exit 4: waiting on you, not a failure

Scripting · Exit codes

Documentation

camy --help: the core commands, the system commands, and the contract line: every command takes --json, exit codes are a public API.

Every guide is in docs; every command and flag is in the reference, generated from the binary. camy docs carries the topics offline, and every command answers --help.


Support  ·   Security  ·   Changelog  ·   Conduct  ·   Third-party notices  ·   License

© 2026 CamyAI, Inc. All rights reserved.

About

Camy in your terminal — the same agent, memory, and cloud computer you use at camy.ai. Documentation, releases, and the installer.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages