Skip to content

CLI

Terminal window
npx artbucket login assets.example.com --scope write
npx artbucket brand push brand --publish

The CLI is the artbucket package on npm, for Node 22 and later: npx artbucket runs it anywhere, npm install -g artbucket keeps it. login takes your server (https:// is assumed without a scheme; give http://localhost:3000 in full), signs in through the browser with the device flow, and keeps a key in ~/.config/artbucket/credentials.json (it lasts an hour, and each command renews it when it has lapsed, for as long as you use it within 90 days), with that server as the default: later commands go there without ARTBUCKET_URL, which still wins when set. It asks to suggest (propose), what an agent gets by default: uploads wait for a person to approve them. Pushing a brand edits it and --publish releases it, so that takes --scope write; --scope read asks for less, and the consent screen never offers more than you have. Signing in never gives admin (keys, invite, members): those take a key an admin makes in Connections (API keys), as ARTBUCKET_KEY. Disconnect it from Connections. Or set ARTBUCKET_KEY. From a clone, pnpm artbucket runs the same CLI, and pnpm link --global puts it on your path.

Without Node, the CLI is an image too: ghcr.io/pwnera/artbucket/cli, tagged like the app’s (Docker).

Terminal window
docker run --rm -it -v artbucket:/config ghcr.io/pwnera/artbucket/cli login assets.example.com
docker run --rm -v artbucket:/config -v "$PWD":/work ghcr.io/pwnera/artbucket/cli brand push brand --publish
Terminal window
artbucket search sintel poster
artbucket search --status deleted
artbucket url {id} --width 1200 --format webp
artbucket check {id} --channel paid-social --territory DE
artbucket ingest ./hero.png https://example.com/logo.png --tag launch
artbucket ingest ./v2.png --version-of {id}
artbucket review
artbucket approve {id}
artbucket reject {id} --reason "off-brand colors"
artbucket rules --context instagram-story
artbucket keys create claude --scope propose
artbucket invite sam@agency.example --scope write --collection {id}
artbucket share {collection-id} --upload
artbucket audit

Sites, and a build deployed to one (Sites): push zips the folder, hidden files left out, and sends it; --path mounts it beside a brand portal. check sends a build hosted anywhere for the same check, stores nothing, and exits 1 when it uses what may not be shown, so it can fail a CI job.

Terminal window
artbucket sites
artbucket site new acme-docs --brand acme --kind docs --create
artbucket site push dist --site acme-docs
artbucket site push storybook-static --site acme --path /storybook --kind storybook
artbucket site push dist --site acme-docs --preview pr-12
artbucket site eject acme-guidelines --brand acme
artbucket site check dist
artbucket site scan src --site acme-app --packages @acme/ui

--preview pr-12 keeps the build as a preview at its own address, printed when it is up, and leaves the live one alone (Preview a pull request).

site eject starts a guidelines site from the brand’s released pages, built with the kit (Eject to code).

site new starts a site from the brand (landing, docs or guidelines), wired to deploy with npm run deploy; brand export writes the release readers see into a folder a build reads: its rules as JSON, tokens.css and the files they point at.

Terminal window
artbucket brand export .brand --brand acme
artbucket brand export .brand --brand acme --release 12

A brand’s pages, rules and theme, from JSON files in the shapes the API takes:

Terminal window
artbucket templates
artbucket pages
artbucket page logo > logo.md
artbucket page save logo page.json
artbucket page edit logo ops.json
artbucket rules set rules.json
artbucket theme set theme.json
artbucket publish --note "New accent, and a page on logo use"

A brand as files for a Git repository (brand as code):

Terminal window
artbucket brand pull brand --brand acme --assets
artbucket brand diff brand
artbucket brand push brand --publish --note "Bluer primary"

In CI, with a write key (artbucket keys create ci --scope write) in ARTBUCKET_KEY: npx --yes artbucket brand push brand --brand acme --publish. CLI and CI has every flag, and GitHub Actions and GitLab CI recipes.

--json prints the raw API response. artbucket --help lists every command.