Skip to main content

Using the kamu CLI

This page walks through the command groups shipped in the current kamu release. Every command has --help, and most list commands take --json for scripting. Install and log in first: see kamu CLI: install and log in.

How commands authenticate​

There are two credential paths, and it matters which one a command uses.

  • Access key (KAMU_ACCESS_KEY or --key): the platform services. Used by sites, clone, publish, assets, status, dns. This is the right credential for agents and CI.
  • Your KamuID login (kamu auth login): identity and organization commands, orgs in particular. These act as you, not as a key.
kamu auth login          # device flow, mints an access key for your first org
kamu auth whoami # who am I, which org
kamu auth token # print the current access token (for curl etc.)
kamu auth logout

Command map​

GroupWhat it drivesCredential
kamu orgsKamuID organizations: list, switch, create, invite, removelogin
kamu siteskamusites: create a website with an AI build, list, delete, form relaysaccess key
kamu cloneClone any project repo from the forge with git wired upaccess key
kamu publishPublish a single HTML file to a shareable URLaccess key
kamu assetsUpload images to the CDN, check quotaaccess key
kamu statuskamustatus: projects, monitors, alert rules, public status pagesaccess key
kamu dnskamudns: domains, records, availability searchaccess key
kamu dbkamudb databaseslogin
kamu beekamubee apps, deploys and logslogin

Organizations​

kamu orgs list
kamu orgs switch <slug> # the active org for later commands
kamu orgs show <slug> # info, members, pending invitations
kamu orgs create <name>
kamu orgs invite user@example.com --org <slug> --role member|admin
kamu orgs remove <email> --org <slug>
kamu orgs delete <slug> # owner only

If a stored login predates the organization scopes, kamu orgs fails and asks you to run kamu auth login again.

Websites: kamu sites​

kamu sites create starts an AI build from a brief. The business flags feed the builder; --description is the one that matters most.

kamu sites create \
--business "Acme Plumbing" \
--industry Plumbing \
--business-type Plumber \
--description "Residential plumber in Tampere, 24h emergency service, free quotes." \
--services "Leak repair,Bathroom renovation,Emergency call-outs" \
--pages "Home,Services,Contact" \
--phone "+358 40 123 4567" --email info@acme.fi \
--logo ./logo.png \
--primary-color "#0b5fff"

Useful flags:

  • --existing-url lets the builder draw on a site you already have.
  • --material <file> uploads a reference file, repeatable.
  • --logo-prompt generates a logo when you have none.
  • --no-watch returns immediately instead of following the build.
  • --team picks the org when the key covers several.
kamu sites list [--json]
kamu sites delete --yes # archives the repo and takes the site offline

Form relays​

A relay destination receives the site's contact-form submissions as JSON at a URL you control. Protect the target with the shared secret, delivered as the X-Kamu-Relay-Key header.

kamu sites form add --site <id-or-slug> --target https://example.com/hook \
--secret <shared-key> --label "CRM webhook" [--rate-per-hour 60]
kamu sites form list --site <id-or-slug>
kamu sites form get <destination-id> # delivery stats
kamu sites form remove <destination-id>

Git: kamu clone​

kamu clone                      # pick a project interactively
kamu clone my-project # repo name, owner/name, or a substring
kamu clone my-project ./dir

The clone passes the access key to git in memory and installs kamu git-credential as the repo-local credential helper. After that, plain git pull and git push work in that directory as long as the key is in the environment. A missing KAMU_ACCESS_KEY in a fresh shell is the usual cause of a failed push.

Single pages: kamu publish​

Publishes one self-contained HTML file. The platform creates a repo per published file, so republishing the same file keeps the URL and records every version in git history.

kamu publish report.html --name "Q3 report"
kamu publish report.html --password s3cret # protect the page
kamu publish report.html --repo <owner/name> # republish to an existing publish repo
kamu publish list

Images: kamu assets​

kamu assets upload hero.jpg team/*.png [--org <slug>] [--json]
kamu assets usage

Uploads are content-addressed, so the same file uploaded twice is stored once. Files are served from files.kskamu.app.

Monitoring: kamu status​

Everything hangs off a kamustatus project. The dashboard view is app.kamuhub.com → Monitor. For the full wiring of error telemetry and heartbeats, see the KamuStatus guides.

Projects​

kamu status projects list
kamu status projects create --name "Acme" --slug acme --org <kamuid-org-id>
kamu status projects show <project-id>
kamu status projects delete <project-id>

Monitors​

Monitor types: http (default), tcp, dns, ping, heartbeat.

kamu status monitors list <project-id>
kamu status monitors add <project-id> --name "Website" --type http \
--target https://example.com --interval 60 --expected-status 200 \
[--body-contains "Welcome"] [--method HEAD] [--timeout 10000]
kamu status monitors add <project-id> --name "API port" --type tcp --target api.example.com --port 443
kamu status monitors add <project-id> --name "MX" --type dns --target example.com --dns-type MX
kamu status monitors add <project-id> --name "Nightly job" --type heartbeat --grace 3600
kamu status monitors show <monitor-id> # includes certificate and domain expiry
kamu status monitors stats <monitor-id> --hours 168
kamu status monitors disable|enable|delete <monitor-id>

A heartbeat monitor gives you a ping URL. The job calls it on every run, and the monitor goes down once --interval (default 300) plus --grace seconds pass without a ping. See heartbeats; monitor types and body assertions are in uptime monitoring.

Alert rules​

Alert rules belong to a monitor.

kamu status alerts list <monitor-id>
kamu status alerts add <monitor-id> --type email --target ops@example.com --consecutive 3
kamu status alerts add <monitor-id> --type slack --target https://hooks.slack.com/...
kamu status alerts add <monitor-id> --type webhook --target https://example.com/alerts
kamu status alerts delete <alert-id>

Status pages​

A status page is a public, read-only view of selected monitors in a project. Create and edit pages in the dashboard: Monitor → project → Status pages, pick a name, a URL slug and the monitors to show. Monitors can be grouped under display headings.

A page is served by kamustatus directly, not through the dashboard:

WhatURL
Status pagehttps://api.kamustatus.com/status/<slug>
Badge (Shields.io endpoint JSON)https://api.kamustatus.com/status/<slug>/badge

The CLI reads a public page without any credentials:

kamu status page <slug>          # name, then one line per monitor with status and uptime
kamu status page <slug> --json

A project can also expose its own slug as a status page when public status is enabled on the project.

DNS: kamu dns​

kamu dns zones                               # managed domains
kamu dns get example.com
kamu dns search acme --limit 20 # availability across TLDs
kamu dns records list example.com
kamu dns records add example.com --type A --name @ --content 203.0.113.10 --ttl 3600
kamu dns records add example.com --type CNAME --name www --content example.com
kamu dns records add example.com --type TXT --name @ --content "v=spf1 include:_spf.example.net ~all"
kamu dns records delete example.com <record-id>

Record types: A, AAAA, CNAME, MX, TXT, SRV, CAA, ALIAS.

Databases and apps: kamu db, kamu bee​

kamu db list | create | get | connstr | suspend | resume | delete
kamu bee apps
kamu bee deploy # release from kamu.toml in the current directory
kamu bee status -a <app>
kamu bee logs -a <app> -f -n 500 # live tail, 500 historical lines first
kamu bee destroy -a <app>

Scripting tips​

  • Prefer --json and pipe through jq. Human output is not a stable format.
  • Set NO_COLOR=1 in CI logs.
  • kamu completion <shell> prints the completion script for bash, zsh, fish and PowerShell.