Skip to main content

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 init walks 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).

note

Optional shell tab completion: run kittl autocomplete <shell> and follow the printed steps (kittl autocomplete --help lists supported shells).

Typical workflow

  1. Authenticate (until the session expires):

    kittl auth login
  2. From your app root (an empty folder or an existing repo), associate the directory with a Kittl app and its draft:

    kittl app init

    Creates .kittl/config.json when init succeeds. That file is how the CLI knows this folder is already tied to an app: if it is already there, kittl app init exits with an error (remove it or use another directory only if you mean to re-link). Commit .kittl/config.json with 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.

  3. After you change manifest.json, push the draft metadata:

    kittl app update
  4. After pnpm run build (or your build/deploy script) produces output, upload the build directory (default is dist/):

    kittl app upload
  5. When the draft should go to Kittl for review:

    kittl app release

    Marks 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 update and kittl app upload first 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:

  1. Writes .kittl/config.json (app linkage for later commands).
  2. Scaffolds optional starter files: fresh directory vs existing package.json.
  3. 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.json so the draft step can run.

Command reference (overview)

Binary: kittl. Use -h / --help on a command for more details.

CommandPurpose
auth loginSign in
auth logoutClear local session
auth whoamiShow active account
app init [PATH]Tie directory to an app; .kittl/config.json; optional starter (see above); PATH defaults to .
app updatePush local manifest.json to the draft
app uploadUpload the build directory to the draft (dist/ by default; override with --dist)
app releaseSubmit draft for review; submitted version is immutable

See also