dsa is a standalone Node 24+ CLI with bundled validation, templates, and static rendering. It prints JSON by default and writes actionable errors to stderr. It stores no configuration, login session, or credentials.
npm install -g https://github.com/bestagentkits/design-studio-ai/releases/download/v0.3.0/bestagentkits-design-studio-ai-0.3.0.tgz
dsa --help
dsa projects export --help
dsa media generate --helpCommand reference
All commands below begin with dsa. Options without “required” are optional. Use command --help for the installed version. Document/operation input accepts --file - for stdin; prompt input accepts --prompt-file -.
| Command | Options | Behavior |
|---|---|---|
observability summary | --scope owner|all --days N --project-id ID --actor-id ID --channel NAME --kind NAME --status NAME --action ACTION | Read activity/usage/coverage. All-account scope requires configured operator; actor filter only in all scope. |
observability events | Summary filters plus --limit N --cursor CURSOR | Read safe paginated activity events. |
observability trace ID | --scope owner|all --days N | Read correlated request steps within 1–30 days; default7. |
health · config | No required options | Read public health/configuration; never persist credentials. |
schema | --operations | Print document JSON Schema or targeted-operation schema. |
catalog | No options | List bundled themes, templates, and blocks. |
themes list · get ID | No required options | Inspect design tokens and palettes. |
templates list · get ID | list: --kind KIND | Inspect supported starters. |
templates instantiate ID | --name NAME --theme ID --output FILE | Create a local document with fresh IDs; no server write. |
blocks list · get ID | get: --offset PIXELS | Inspect reusable node groups. |
design-systems schema · list | No required options | Discover the shared definition schema or your saved libraries. |
design-systems get ID | --system-version N | Read the latest or an immutable saved version. |
design-systems versions ID | No required options | List saved library versions. |
design-systems create | --file FILE required | Create a library from a validated definition; accepts stdin with --file -. |
design-systems update ID | --system-version N --file FILE required | Append a version using the version of the definition actually read; conflicts require reconciliation. |
design-systems apply ID PROJECT_ID | --revision N required; --system-version N | Apply saved tokens/system to an owned project and pin the selected library version. |
design-systems insert ID PROJECT_ID | --revision N --page PAGE_ID --item ITEM_ID required; --system-version N | Insert a saved component or composition into a project. |
design-systems remove ID | No required options | Delete the library and history; existing project designs remain intact. |
fonts | --query TEXT | Search Google font families/categories; inspect source for live/cache/fallback provenance. |
providers models ID | --query TEXT | Search the saved connection model catalog; custom endpoints retain manual IDs and labeled suggestions. |
projects list | --query TEXT --kind KIND --sort updated|created|name | Search persisted owned projects. |
projects check ID | No required options | Inspect saved design bounds, text fit, estimated contrast, media, and export limitations; never an accessibility certification. |
projects get ID | No required options | Read document and saved revision. |
projects create | --name NAME required; --description TEXT --kind KIND --template ID --theme ID --file FILE --input-format auto|json|yaml | Create a persisted project. Choose --file (JSON or YAML) or --template. |
projects rename ID NAME | --revision N required | Rename with an explicit observed revision. |
projects clone ID | --name NAME | Create an independent project, copying owned media bytes. |
projects delete ID | No required options | Delete project, assets, and publications. |
brief get ID | No required options | Read the persisted interview, answers, scope, and independent brief revision. |
brief put ID | --revision N --file FILE required | Save request/interview/answers/scope; revision 0 creates. Input file excludes expectedRevision. Invalidates approval. |
brief interview ID | --revision N --provider ID required; --model ID | Generate and persist contextual questions/scope using configured BYOK; charges may apply. |
brief approve ID | --revision N required | Record explicit human approval of the current answered scope. Does not generate or publish. |
projects document get ID | --output FILE | Read the canonical document. |
projects document put ID | --file FILE --revision N required; --input-format auto|json|yaml | Save a complete validated document (JSON or YAML file) with atomic concurrency protection. |
projects document patch ID | --file FILE --revision N required; --input-format auto|json|yaml | Apply a targeted operation array (JSON or YAML file) and save atomically. |
projects document merge ID | --file FILE required | Merge JSON {base, document, baseRevision} against the exact document/revision originally read; overlapping edits require reconciliation. Accepts - for stdin. |
projects document changes ID | --since N (default 0) | Read the current saved revision and project when changed, or unchanged: true at the observed revision. N must be nonnegative. |
projects import | --file FILE required; --name NAME; --input-format auto|json|yaml | Create a new project from a canonical document in JSON or YAML. |
projects export ID | --format FORMAT required; --output FILE / --out FILE --page INDEX --revision N | Download real server bytes, including react ZIP, glb and gltf. Binary formats require a file; glTF is JSON text. |
render | --file FILE --format json|html|svg required; --input-format auto|json|yaml --output FILE --page INDEX --time SECONDS | Render a JSON or YAML document offline; preserves references without fetching private media. |
assets list PROJECT_ID | No required options | List stored assets. |
assets upload PROJECT_ID | --file FILE required; --mime TYPE | Upload media; placing it is a separate edit. |
assets download ASSET_ID | --output FILE required | Download authenticated bytes to a file. |
generate PROJECT_ID | --provider ID --revision N required; --prompt TEXT or --prompt-file FILE; --model ID --output FILE | Generate a proposal without saving; BYOK charges may apply. |
providers list · remove ID | No required options | Read masked configurations or remove a connection. |
providers set ID | --key-env VARIABLE or --key-stdin or --keep-key; --base-url URL --model ID; custom: --name NAME --protocol FORMAT --auth-method METHOD --auth-header HEADER | Otherwise reads PROVIDER_API_KEY, e.g. OPENAI_API_KEY. |
tokens list · revoke ID | No required options | List metadata or revoke access. |
tokens create | --name NAME required | Returns the newly created secret once. |
publish · unpublish PROJECT_ID | No required options | Create a public snapshot or remove all project snapshots. |
preview · unpreview PROJECT_ID | No required options | Create a public preview link or remove all project snapshots. |
share · unshare PROJECT_ID | No required options | Create a public share link or remove all project snapshots. |
media generate PROJECT_ID | --kind KIND --provider ID required; --prompt TEXT or --prompt-file FILE; --model ID --voice ID --source-asset ID --duration SECONDS --strength NUMBER | Generate/edit image, video, speech, music, or effects using compatible modes. |
media status PROJECT_ID JOB_ID | No required options | Poll queued fal media or Leonardo images. |
google-slides PROJECT_ID | --key-env VARIABLE or --key-stdin | Defaults to GOOGLE_ACCESS_TOKEN; creates a real supported presentation. |
api METHOD /api/path | --file FILE | Same-origin REST escape hatch; no JSON body for GET/HEAD. |
Files and exit codes
JSON is the default for metadata. Document/template/export content sent to stdout is raw. --output writes the file and returns metadata; binary exports require a filename. Exit codes: 0 success, 1 input/API/conflict, 2 authentication/authorization, 3 network/invalid response, 4 local file/runtime error.
dsa providers set openai --key-env OPENAI_API_KEY
dsa media generate PROJECT_ID --kind image --provider openai \
--source-asset ASSET_ID --prompt-file edit.txt
dsa providers set fal --key-env FAL_API_KEY
dsa media generate PROJECT_ID --kind audio --provider fal \
--duration 30 --prompt-file music.txt
dsa media status PROJECT_ID JOB_IDSource type selects a compatible default model. --strength is for fal image/audio transformations, --voice for OpenAI speech. All fal modes and Leonardo images queue real jobs; poll to completion before claiming an asset exists. The package is distributed through GitHub Releases, not the npm registry.