Skip to main content
Ready to deploy? Start Free Trial
Availability. API Tokens appears in My Settings once the API is enabled for your namespace. Everything here is read-only: nothing you run can deploy, change or delete anything.

What you can read

One read-only surface, three ways in: the cw command line, AI assistants over MCP, and the HTTP API behind both. All three answer the same questions:

Topic What you get
What needs attentionApps in error, production backups critical, missing or stale, TLS certificates expired or expiring, runs that failed in the last day — the same rules and counts as the dashboard.
AppsFind apps by name, environment, version, edition, server or project; state, server, last deploy and backup health. One app also shows every URL with its certificate and outside check, the commit each repository runs against the newest on its branch, and a version upgrade under way.
ProjectsYour projects and the environments your role sees in each, with their app counts.
Restore pointsWhat each change to an app did — the commits it moved, the modules it migrated, the backup taken first — and whether it can still be undone at once.
URLsEvery app's URLs across your namespaces, by certificate state: find what expires before it does.
Servers & servicesYour servers and the services installed on them.
BackupsEvery backup of an app: when, size, format, whether it was verified, and its off-site copies.
RunsDeploys, updates, backups and restores, step by step — and why a failed step failed.
LogsAn app's Odoo log, searchable, up to a day back, or followed live, on plans that include the Logger. Secrets are masked.

Create an API token

How to Access: My Settings API Tokens

Name the token, choose the namespaces it may read and what it may read there (apps, servers, backups, runs, logs, attention…), and how long it lives: one week, 30 to 365 days, or a number of days you pick. A token never reaches more than your own access, and if your access changes, the token follows at once.

The token is shown once. It starts with cwk_; keep it like a password. You can rename it, change its namespaces or what it may read later, and revoke it at any time — anything using it stops working immediately.

A token reads only what it was given when it was made: to let an older token read something added since — projects, restore points, URLs — edit it and tick it.

Install the CLI

macOS and Linux:

curl -fsSL https://www.cloudwady.com/install.sh | sh

The script downloads the build for your machine, checks it against the release checksums and installs cw into /usr/local/bin or ~/.local/bin — never with sudo. With Homebrew on macOS:

brew install kingswady/tap/cw

Windows, in PowerShell:

irm https://www.cloudwady.com/install.ps1 | iex

It checks the download the same way, installs cw.exe into your own AppData\Local\Programs\cw and adds that folder to your PATH — no administrator needed; open a new terminal afterwards. To do it by hand instead, download cw_windows_amd64.zip from the latest release, unzip it, and put cw.exe in a folder on your PATH.

Everywhere, cw update keeps it current (brew upgrade cw if Homebrew installed it). From cw 0.9.0 on, cw offers to update itself when a newer release is out, and checks each release's signature before installing it.

Updating from cw 0.7.0 or older. Those versions still look for releases at the repository's old address, and cw update answers could not find the latest release. Update once with the new address, or run the install command above again:
CW_DOWNLOAD_BASE=https://github.com/kingswady/cwcli/releases cw update
cw login        # paste the token; it is kept in your system keychain
cw whoami       # who the token acts as, its namespaces, and when it expires
cw use          # switch between platforms you logged in to
cw namespaces   # the namespaces the token reads, and your level in each

Tab completion: cw completion zsh (or bash, fish) prints the script for your shell; the README says where to put it.

Commands

Command What it shows
cw attentionWhat needs attention now; exit code 3 when something does.
cw appsYour apps. --search shop, --env production, --version 19.0, --edition, --server, --project, --show-url; deleted and disabled apps only with --all.
cw apps show shopOne app, by name or id: its URLs, its repositories with the deployed and newest commit, and any upgrade under way.
cw projectsYour projects and their environments; cw projects show shop for one.
cw restore-points shopThe app's changes, newest first: what each moved, and the way back.
cw urls --ssl expiring_soonApps' URLs with their certificates and outside checks; --app shop for one app.
cw servers · cw installersServers, and the services installed on them.
cw backups --app shopAn app's backups and how many off-site copies each has; cw backups show 9482 lists the copies.
cw runs --app shop --state errorRecent runs; cw runs show 4812 lists the steps and why one failed.
cw logs shop --since 15m --grep ERRORThe app's Odoo log; --source restore reads the log of its restores instead (also setup, backup, transfer, upgrade, script, several with commas, or all); --follow keeps printing new lines.

Every read command takes --json (the API's own answer, for jq), --namespace acme, --limit, --offset and --color auto|always|never. Exit codes: 0 success, 1 the platform refused or failed, 2 a mistake on the command line, 3 cw attention found something.

Connect an AI assistant (MCP)

MCP lets an assistant such as Claude, Cursor or Codex call CloudWady's read functions itself. cw mcp connects it with the token you logged in with:

claude mcp add -s user cloudwady -- cw mcp

Claude Desktop, Cursor and most other assistants take the same server in their configuration:

{ "mcpServers": { "cloudwady": { "command": "cw", "args": ["mcp"] } } }

An assistant that connects over HTTP can use https://www.cloudwady.com/mcp with the header Authorization: Bearer cwk_…. Then ask in plain words — "What needs attention on CloudWady?", "Why did the last deploy of shop fail?" — or start from the prompts it offers: triage, why_failed and app_health.

In scripts and CI

CW_TOKEN takes the place of the saved token and CW_URL of the saved platform:

export CW_TOKEN=cwk_…      # from your CI secret store
cw runs --app shop --state error --json
cw attention --json > attention.json || ./notify-team.sh attention.json

The HTTP API

Everything above is GET https://www.cloudwady.com/api/v1/… with Authorization: Bearer cwk_…. An answer is {"data": …}; a refusal is {"error": {"code": …, "message": …}} with a matching HTTP status. The full reference is the OpenAPI document at /api/v1/openapi.json.

curl -H "Authorization: Bearer $CW_TOKEN" https://www.cloudwady.com/api/v1/attention

Every answer carries X-Token-Expires-At, so a script can warn before its token stops working.

Limits & security

  • Read-only. No token can change anything.
  • Your access, no more. A token reads only the namespaces you gave it and sees what the dashboard shows your role there; a revoked role or namespace takes effect on the next request.
  • Secrets stay out. Passwords, keys and credentials are never part of an answer, and log lines are masked.
  • Rate limit. 120 requests a minute per token and 300 per user. Past it the answer is 429 with Retry-After; cw logs --follow waits and carries on.
  • Tokens. Stored hashed, shown once, expiring on the date you chose. If one may have leaked, revoke it in My Settings.

Was this page helpful?

Your answer helps us prioritize documentation improvements.

Thanks — your feedback helps us improve.