Kittl CLI
Official command-line tool for Kittl app developers: associate a local project with a Kittl app (managing drafts), sync manifest.json and build artifacts, and advance that draft through review without using the dashboard for those steps.
This page is an overview. Use --help at each level for flags and subcommands.
What you can do with it
- Sign in from the terminal
- Initialize developer organization and app, tie this folder to the draft (
kittl app init) - Push manifest metadata to the draft (
kittl app update) - Upload build output, e.g.
dist/(kittl app upload) - Submit for review (
kittl app release). That version is then immutable.
Requirements
- A Kittl account (
kittl auth login).kittl app initwalks you through choosing or creating a developer organization, then creating an app under that org - Beta: While in beta, your account must be approved for app creation by a Kittl admin
Install
Install @kittl/cli from the NPM registry:
npm install -g @kittl/cli
One-off run:
npx @kittl/cli
From a checkout of the public Kittl repository, cd packages/cli and run your package manager’s global link for this package so kittl points at your clone (see packages/cli/README.md).
Optional shell tab completion: run kittl autocomplete <shell> and follow the printed steps (kittl autocomplete --help lists supported shells).
Typical workflow
-
Authenticate (until the session expires):
kittl auth login -
From your app root (an empty folder or an existing repo), associate the directory with a Kittl app and its draft:
kittl app initCreates
.kittl/config.jsonwhen init succeeds. That file is how the CLI knows this folder is already tied to an app: if it is already there,kittl app initexits with an error (remove it or use another directory only if you mean to re-link). Commit.kittl/config.jsonwith the repository so teammates and CI stay linked to the same app; it holds identifiers, not secrets. Treat optional scaffolded files like any other project source. Other files depend on starter scaffolding. -
After you change
manifest.json, push the draft metadata:kittl app update -
After
pnpm run build(or your build/deploy script) produces output, upload the build directory (default isdist/):kittl app upload -
When the draft should go to Kittl for review:
kittl app releaseMarks the draft ready for review; Kittl admin takes over from there. The version you submit is immutable. You cannot change that release’s manifest or uploaded files afterward. Run
kittl app updateandkittl app uploadfirst if anything you care about is still only on disk. Further work uses a new draft (the next version, auto-incremented).
App init and starter scaffolding
kittl app init is interactive: choose or create a developer organization, then name a new app to create under it. Pass [PATH] to initialize inside another folder instead of ..
If .kittl/config.json already exists, the command stops immediately (the CLI treats it as proof this directory was already initialized). Remove that file or run from a different folder if you need to run init again.
After the wizard succeeds, it:
- Writes
.kittl/config.json(app linkage for later commands). - Scaffolds optional starter files: fresh directory vs existing
package.json. - Creates the app draft on Kittl from your
manifest.json.
No package.json yet
The CLI can scaffold a small Vite + HTML entrypoint layout.
package.json already present
Scaffolding is skipped.
It still checks for manifest.json:
- Present: no files are added by the scaffold step.
- Missing: the CLI creates only
manifest.jsonso the draft step can run.
Command reference (overview)
Binary: kittl. Use -h / --help on a command for more details.
| Command | Purpose |
|---|---|
auth login | Sign in |
auth logout | Clear local session |
auth whoami | Show active account |
app init [PATH] | Tie directory to an app; .kittl/config.json; optional starter (see above); PATH defaults to . |
app update | Push local manifest.json to the draft |
app upload | Upload the build directory to the draft (dist/ by default; override with --dist) |
app release | Submit draft for review; submitted version is immutable |
See also
- Quick Start: project layout, manifest, and SDK
- Authentication: OAuth inside the app sandbox (separate from CLI login)