Skip to content
Cloudtifact docs

CLI reference

Every cloudtifact command and option (cloudtifact 0.1.0).

Install with curl -fsSL https://api.cloudtifact.com/install.sh | sh. Once it's on npm, npx cloudtifact works too. Every command takes --help.

Agents: add --toon (compact tables, fewest tokens) or --json to commands that print data, or set CLOUDTIFACT_FORMAT=toon.

login

Sign in through your browser (GitHub, Google or email) and save a token to the global config

cloudtifact login [options]
OptionNotes
--no-browserdon't open a browser, just print the URL (automatic over SSH)

whoami

Show the signed-in user, their workspaces (current one marked) and pending invites

cloudtifact whoami [options]
OptionNotes
--toonprint TOON (compact, for agents)
--jsonprint JSON

logout

Revoke the saved token on the server and forget it

cloudtifact logout [options]

workspace

Your workspaces: where spaces live, with members and roles

cloudtifact workspace [options] [command]

workspace list

List your workspaces; * marks the current one (where new spaces go)

cloudtifact workspace list [options]
OptionNotes
--toonprint TOON (compact, for agents)
--jsonprint JSON

workspace use

Make a workspace the default for new spaces (saved in the global config)

cloudtifact workspace use [options] <slug>
ArgumentRequiredNotes
slugyesworkspace slug

workspace create

Create a workspace; you become its owner

cloudtifact workspace create [options] <slug>
ArgumentRequiredNotes
slugyesworkspace slug, e.g. overjoy
OptionNotes
--name &lt;name&gt;display name (default: the slug)

workspace invite

Invite someone by handle; they get access once they accept

cloudtifact workspace invite [options] <handle>
ArgumentRequiredNotes
handleyestheir handle
OptionNotes
--role &lt;role&gt;role (default member)
--workspace &lt;slug&gt;workspace (default: the current one)

workspace accept

Accept your pending invite to a workspace

cloudtifact workspace accept [options] <slug>
ArgumentRequiredNotes
slugyesworkspace slug

workspace decline

Decline your pending invite to a workspace

cloudtifact workspace decline [options] <slug>
ArgumentRequiredNotes
slugyesworkspace slug

init

Link this repo to a space (creating one in the current workspace if needed) and write .cloudtifact.json

cloudtifact init [options]
OptionNotes
--dir &lt;dir&gt;folder to publish, relative to the repo root
--workspace &lt;slug&gt;workspace for a new space (default: the current one, see workspace list)
--visibility &lt;v&gt;who can view a new space
--space &lt;id&gt;link an existing space instead of creating one
--name &lt;name&gt;name for a new space (default: the repo folder name)
-y, --yesaccept defaults, no prompts
--hooksalso install agent hooks (see hooks install)

push

Upload changed files and record a new version on every target

cloudtifact push [options]
OptionNotes
-m, --message &lt;message&gt;version message
--dry-runshow what would change, upload nothing
-q, --quietprint nothing unless something fails
--no-dbdon't run the docs folder's db/*.sql files

status

Show local changes since the latest version on each target

cloudtifact status [options]
OptionNotes
--toonprint TOON (compact, for agents)
--jsonprint JSON

watch

Push on every change to the docs folder

cloudtifact watch [options]
OptionNotes
-m, --message &lt;message&gt;version message for each push

comments

Print open comment threads as Markdown for an agent

cloudtifact comments [options]
OptionNotes
--path &lt;path&gt;only comments on this doc (relative to the docs folder)
--allinclude resolved threads
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--toonprint TOON: one flat table of comments, the cheapest format for an agent
--jsonprint JSON (the API's thread objects)

reply

Reply to a comment thread

cloudtifact reply [options] <commentId> <text...>
ArgumentRequiredNotes
commentIdyes
text...yesreply text
OptionNotes
--space &lt;id&gt;space id (default: search this repo's targets)

edit

Edit a comment or reply you wrote; the old text is kept in its history

cloudtifact edit [options] <commentId> [text...]
ArgumentRequiredNotes
commentIdyes
text...nonew text (or use --file, or pipe it in with -)
OptionNotes
--file &lt;path&gt;read the new text from a file

history

Show every version of a comment: who wrote it, and through which agent

cloudtifact history [options] <commentId>
ArgumentRequiredNotes
commentIdyes
OptionNotes
--toonprint TOON (compact, for agents)
--jsonprint JSON

resolve

Resolve a comment thread

cloudtifact resolve [options] <commentId>
ArgumentRequiredNotes
commentIdyes

unresolve

Reopen a comment thread

cloudtifact unresolve [options] <commentId>
ArgumentRequiredNotes
commentIdyes

publish

Publish an HTML page (with the files it references) or a folder; prints its link

cloudtifact publish [options] <path>
ArgumentRequiredNotes
pathyesan .html file or a folder with index.html
OptionNotes
--publicanyone with the link can view (only when first published; default: private)
--name &lt;name&gt;space name (default: the page's <title>, else the file name)
--workspace &lt;slug&gt;workspace for a new space (default: the current one, see workspace list)
--entry &lt;file&gt;folder only: the page to publish as index.html
-m, --message &lt;message&gt;version message
--no-dbdon't run the db/*.sql files next to the page

artifacts

List pages published with cloudtifact publish

cloudtifact artifacts [options]
OptionNotes
--toonprint TOON (compact, for agents)
--jsonprint JSON

versions

List a space's versions, newest first

cloudtifact versions [options]
OptionNotes
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
-n, --limit &lt;n&gt;how many to show (default 20)
--toonprint TOON (compact, for agents)
--jsonprint JSON

db

Query and manage a space's database (one SQLite database per space)

cloudtifact db [options] [command]

db query

Run SQL against the space's database; read-only unless --write

cloudtifact db query [options] [sql]
ArgumentRequiredNotes
sqlnothe SQL to run (or use -f)
OptionNotes
-f, --file &lt;path&gt;read the SQL from a file (files over 100 KB are split by statement; needs --write)
--param &lt;value&gt;bind the next ? placeholder (repeatable; sent as strings)
--writeallow writes and schema changes (needs push access)
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--toonprint TOON (compact, for agents)
--jsonprint JSON (the API's { columns, rows, ... } as returned)

db schema

List tables with their columns and row counts, and the database size

cloudtifact db schema [options]
OptionNotes
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--toonprint TOON (compact, for agents)
--jsonprint JSON

db export

Dump the database as SQL (replay it with db query --write -f)

cloudtifact db export [options]
OptionNotes
-o, --output &lt;file&gt;write to this file instead of stdout
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)

db reset

Delete every table and row (admins only; undo with db restore)

cloudtifact db reset [options]
OptionNotes
-y, --yesdon't ask for confirmation
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)

db restore

Roll the database back to a point in time within the last 30 days (admins only)

cloudtifact db restore [options]
OptionNotes
--at &lt;time&gt;ISO 8601 time, e.g. 2026-09-28T10:00:00Z (or Unix ms)
-y, --yesdon't ask for confirmation
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--toonprint TOON (compact, for agents)
--jsonprint JSON

db writes

The write log, newest first: who wrote (member or guest), from where, and what

cloudtifact db writes [options]
OptionNotes
-n, --limit &lt;n&gt;how many (default 100, max 500)
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--toonprint TOON (compact, for agents)
--jsonprint JSON

db guest-writes

The named writes guests may run in this space (from the page folder's db/guest-writes.sql)

cloudtifact db guest-writes [options]
OptionNotes
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--toonprint TOON (compact, for agents)
--jsonprint JSON

db migrate

Run the folder's db/*.sql files not yet applied, in filename order, without publishing

cloudtifact db migrate [options]
OptionNotes
--space &lt;id&gt;space id (default: the first target in .cloudtifact.json)
--dir &lt;folder&gt;folder holding db/ (default: the linked repo's docs folder, else the current one)
--dry-runlist the files that would run; change nothing

hooks

Agent hooks that push after each edit

cloudtifact hooks [options] [command]

hooks install

Merge a post-edit hook into each harness's project config (default: all detected)

cloudtifact hooks install [options]
OptionNotes
--claudeClaude Code: .claude/settings.json PostToolUse
--codexCodex: .codex/hooks.json PostToolUse (apply_patch)
--cursorCursor: .cursor/hooks.json afterFileEdit

skill

The agent skill that teaches agents to use Cloudtifact

cloudtifact skill [options] [command]

skill install

Write cloudtifact/SKILL.md into every agent skills folder on this machine

cloudtifact skill install [options]