Install cw, then log in. Every command takes -h for its own help; the commands and their help are in English.
Account
cw login
Save an API token (create one in My Settings → API Tokens)
cw login [flags]
| Flag | Default | Description |
--url string |
|
platform URL (default https://www.cloudwady.com) |
--with-token |
|
read the token from standard input |
cw logout
Forget the saved token
cw logout [flags]
cw whoami
Show who the token acts as, and its namespaces
cw whoami [flags]
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the API response as JSON |
cw namespaces
The token's namespaces: the codes --namespace takes
cw namespaces [flags]
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the namespaces as JSON |
cw use
Switch between platforms you logged in to
cw use [flags]
cw update
Update cw to the latest release (--check only looks)
cw update [flags]
| Flag | Default | Description |
--check |
|
only say whether a newer release exists |
--force |
|
update even a development build, or reinstall the same version |
--version string |
|
install this release (e.g. v0.3.0) instead of the latest |
cw completion
Tab completion for bash, zsh or fish: source <(cw completion zsh)
cw completion bash|zsh|fish
Prints the shell's completion script for cw: Tab completes commands, show,
each command's flags and the values some flags take (--env, --source, …).
bash in ~/.bashrc: source <(cw completion bash)
zsh in ~/.zshrc, after compinit: source <(cw completion zsh)
fish cw completion fish > ~/.config/fish/completions/cw.fish
Read
cw attention
What needs attention now
cw attention [flags]
What needs attention now: the dashboard's Needs attention rules, with their records.
Exit code 3 when something does, 0 when nothing does.
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the API response as JSON |
--namespace string |
|
only this namespace (code or id) |
cw projects
List projects
cw projects [flags]
cw projects show <id|name> [flags]
| Flag | Default | Description |
--all |
|
include deleted and disabled projects |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--search string |
|
only projects whose name contains this (any case) |
cw projects show <id|name>
cw apps
List apps
cw apps [flags]
cw apps show <id|name> [flags]
A name several apps share is narrowed by the filters below (all but --search):
cw apps show <name> --project <value>
| Flag | Default | Description |
--all |
|
include deleted and disabled apps |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
community or enterprise |
--env string |
|
production, staging or development |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--project string |
|
only apps whose project name or code contains this |
--search string |
|
only apps whose name contains this (any case) |
--server string |
|
only apps on this server (id or name) |
--show-url |
|
add the URL column |
--state string |
|
only apps in this state |
--version string |
|
only this Odoo version, e.g. 19.0 |
cw apps show <id|name>
cw urls
List apps' URLs
cw urls [flags]
--app takes an app's id or name. Where several apps share the name,
--project, --env, --server, --version and --edition narrow which one it means (and nothing else).
| Flag | Default | Description |
--app string |
|
only this app's URLs (id or name) |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows --app to an app of this edition (community or enterprise) |
--env string |
|
narrows --app to an app in this environment (production, staging or development) |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--project string |
|
narrows --app to an app whose project name or code contains this |
--server string |
|
narrows --app to an app on this server (id or name) |
--ssl string |
|
only URLs whose certificate is valid, expiring_soon, expired or unknown |
--version string |
|
narrows --app to an app of this Odoo version, e.g. 19.0 |
cw servers
List servers
cw servers [flags]
cw servers show <id|name> [flags]
A name several servers share is narrowed by the filters below (all but --):
cw servers show <name> --state <value>
| Flag | Default | Description |
--all |
|
include deleted and disabled servers |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--state string |
|
only servers in this state |
cw servers show <id|name>
cw installers
List installed services
cw installers [flags]
cw installers show <id|name> [flags]
A name several installers share is narrowed by the filters below (all but --):
cw installers show <name> --server <value>
| Flag | Default | Description |
--all |
|
include deleted and disabled installers |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--server string |
|
only on this server (id or name) |
--state string |
|
only installers in this state |
cw installers show <id|name>
cw backups
List backups
cw backups [flags]
cw backups show <id> [flags]
--app takes an app's id or name. Where several apps share the name,
--project, --env, --server, --version and --edition narrow which one it means (and nothing else).
| Flag | Default | Description |
--app string |
|
only this app's backups (id or name) |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows --app to an app of this edition (community or enterprise) |
--env string |
|
narrows --app to an app in this environment (production, staging or development) |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--project string |
|
narrows --app to an app whose project name or code contains this |
--server string |
|
narrows --app to an app on this server (id or name) |
--version string |
|
narrows --app to an app of this Odoo version, e.g. 19.0 |
cw backups show <id>
cw restore-points
An app's changes
cw restore-points <app> [flags]
What each change to the app did — its commits, the modules it updated, the backup taken
before it — newest first. "failed, kept as it was": the update failed and the app stayed
as it was; "instant": the database from before the change is still held.
<app> is an id or a name. Where several apps share the name,
--project, --env, --server, --version and --edition narrow which one it means.
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
look the app up in this namespace only |
--offset int |
|
rows to skip |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--server string |
|
narrows <app> to an app on this server (id or name) |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
cw restore-points <app>
cw runs
List recent runs
cw runs [flags]
cw runs show <id> [flags]
--app takes an app's id or name. Where several apps share the name,
--project, --env, --server, --version and --edition narrow which one it means (and nothing else).
| Flag | Default | Description |
--app string |
|
only this app's runs (id or name) |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows --app to an app of this edition (community or enterprise) |
--env string |
|
narrows --app to an app in this environment (production, staging or development) |
--json |
|
print the API response as JSON |
--limit int |
50 |
rows per page (1-200) |
--namespace string |
|
only this namespace (code or id) |
--offset int |
|
rows to skip |
--project string |
|
narrows --app to an app whose project name or code contains this |
--server string |
|
narrows --app to an app on this server (id or name) |
--state string |
|
only runs in this state (e.g. error, running, done) |
--version string |
|
narrows --app to an app of this Odoo version, e.g. 19.0 |
cw runs show <id>
cw logs
An app's logs
cw logs <app> [flags]
The app's logs, newest last: its Odoo log, and with --source
the logs of its setup, restore, backup, transfer, upgrade and script runs:
cw logs v19-0 --source main,restore --follow
<app> is an id or a name. Where several apps share the name,
--project, --env, --server, --version and --edition narrow which one it means:
cw logs v19-0 --project internal --env production
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--follow |
|
keep printing new lines until interrupted (Ctrl-C) |
--grep string |
|
only lines containing this text (any case) |
--json |
|
print each API answer as JSON |
--limit int |
200 |
lines to show (1-2000) |
--namespace string |
|
look the app up in this namespace only |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--server string |
|
narrows <app> to an app on this server (id or name) |
--since string |
1h |
how far back: 30s, 15m, 1h … 24h |
--source string |
main |
which logs, comma-separated: main (the Odoo log), setup, restore,
backup, transfer, upgrade, script — or all |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
cw logs <app> [--since 1h] [--grep …] [--follow] [--source …]
Change
cw backup
Back up an app now
cw backup <app> [flags]
Backs up the app now — what the dashboard's Backup does. A backup of the app that already
runs is reported, not doubled.
It asks first: a production app by typing its name, anything else y/N.
From a script, --yes. The token needs the function ticked in My Settings → API Tokens.
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--format string |
zip |
zip (database and files) or dump (database only) |
--json |
|
print the platform's answer as JSON |
--namespace string |
|
look the app up in this namespace only |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--server string |
|
narrows <app> to an app on this server (id or name) |
--timeout duration |
30m0s |
how long --wait follows the run |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
--wait |
|
follow the run until it ends: exit 0 done, 1 failed, 4 still running |
--yes |
|
do it without asking (needed from a script) |
cw backup <app> [--format dump] [--wait]
cw restart
Restart an app
cw restart <app> [flags]
Restarts the app — its users are cut off for a moment. Refused while an update, a backup
or a restore of it runs: a restart never cancels them.
It asks first: a production app by typing its name, anything else y/N.
From a script, --yes. The token needs the function ticked in My Settings → API Tokens.
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--json |
|
print the platform's answer as JSON |
--namespace string |
|
look the app up in this namespace only |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--server string |
|
narrows <app> to an app on this server (id or name) |
--timeout duration |
30m0s |
how long --wait follows the run |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
--wait |
|
follow the run until it ends: exit 0 done, 1 failed, 4 still running |
--yes |
|
do it without asking (needed from a script) |
cw restart <app> [--wait]
cw runs retry
Run a failed run again
cw runs retry <id> [flags]
Runs a failed run again from the step that failed — what the dashboard's Retry does.
Refused while an automatic retry is due (--now retries anyway), or when a newer run of
the same record exists.
It asks first: a production app by typing its name, anything else y/N.
From a script, --yes. The token needs the function ticked in My Settings → API Tokens.
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--json |
|
print the platform's answer as JSON |
--namespace string |
|
look the app up in this namespace only |
--now |
|
retry even though an automatic retry is due |
--timeout duration |
30m0s |
how long --wait follows the run |
--wait |
|
follow the run until it ends: exit 0 done, 1 failed, 4 still running |
--yes |
|
do it without asking (needed from a script) |
cw runs retry <id> [--now] [--wait]
cw apps update
Update an app
cw apps update <app> [flags]
Updates the app to its branches' latest code — what the dashboard's Update does: pulled,
rebuilt and recreated, then its modules updated. --quick pulls and restarts on the same image.
A production app is backed up first unless --no-backup. Refused while something runs on it.
It asks first: a production app by typing its name, anything else y/N.
From a script, --yes. The token needs the function ticked in My Settings → API Tokens.
| Flag | Default | Description |
--backup |
|
back the app up first (production does by default) |
--backup-format string |
zip |
the backup taken first: zip (database and files) or dump (database only) |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--json |
|
print the platform's answer as JSON |
--modules string |
changed |
the module update that follows: changed (what the pull changed), configured (the app's own scope) or none (--quick only) |
--namespace string |
|
look the app up in this namespace only |
--no-backup |
|
do not back up first, also in production |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--quick |
|
pull the code and restart on the same image, without rebuilding |
--server string |
|
narrows <app> to an app on this server (id or name) |
--timeout duration |
30m0s |
how long --wait follows the run |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
--wait |
|
follow the run until it ends: exit 0 done, 1 failed, 4 still running |
--yes |
|
do it without asking (needed from a script) |
cw apps update <app> [--quick] [--modules …] [--wait]
cw apps update-modules
Update some of an app's modules
cw apps update-modules <app> <module>... [flags]
Updates the named modules (odoo -u) on the app's database, its code as it is — what the
dashboard's Update Modules does. A production app is backed up first unless --no-backup.
Refused while something runs on it.
It asks first: a production app by typing its name, anything else y/N.
From a script, --yes. The token needs the function ticked in My Settings → API Tokens.
| Flag | Default | Description |
--backup |
|
back the app up first (production does by default) |
--backup-format string |
zip |
the backup taken first: zip (database and files) or dump (database only) |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--json |
|
print the platform's answer as JSON |
--namespace string |
|
look the app up in this namespace only |
--no-backup |
|
do not back up first, also in production |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--server string |
|
narrows <app> to an app on this server (id or name) |
--timeout duration |
30m0s |
how long --wait follows the run |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
--wait |
|
follow the run until it ends: exit 0 done, 1 failed, 4 still running |
--yes |
|
do it without asking (needed from a script) |
cw apps update-modules <app> sale stock [--wait]
cw maintenance
Maintenance page on / off
cw maintenance <app> on|off [flags]
Puts the app in maintenance — its users see the maintenance page — or takes it out again.
Refused while an update, a backup or a restore of it runs: it never cancels them.
It asks first: a production app by typing its name, anything else y/N.
From a script, --yes. The token needs the function ticked in My Settings → API Tokens.
| Flag | Default | Description |
--color string |
auto |
auto (in a terminal, unless NO_COLOR is set), always or never |
--edition string |
|
narrows <app> to an app of this edition (community or enterprise) |
--env string |
|
narrows <app> to an app in this environment (production, staging or development) |
--json |
|
print the platform's answer as JSON |
--namespace string |
|
look the app up in this namespace only |
--project string |
|
narrows <app> to an app whose project name or code contains this |
--server string |
|
narrows <app> to an app on this server (id or name) |
--timeout duration |
30m0s |
how long --wait follows the run |
--version string |
|
narrows <app> to an app of this Odoo version, e.g. 19.0 |
--wait |
|
follow the run until it ends: exit 0 done, 1 failed, 4 still running |
--yes |
|
do it without asking (needed from a script) |
cw maintenance <app> on|off [--wait]