Use this file to discover all available pages before exploring further.
This is the verified first-run path for a Field Delivery Engineer using the public khal CLI.
Install the CLI from npmjs. npmjs is npm’s default registry, so no registry flag is normally needed. Do not configure GitHub Packages for this flow; if a GitHub Packages entry exists for app-kit, treat it as non-authoritative for FDE installs.
node --version # Node.js 20+; Node.js 22 is used in app-kit CInpm --version # npm 10+ worksbun --version # required by generated app/service/workflow repos
Private KHAL app repos live in KHAL Gitea. Use the repo URL and credentials from the internal Gitea UI or onboarding note when you install from a private source. GitHub authentication is only relevant for the public docs repo and the GitHub-hosted app-kit/desktop exceptions.
On SSH/headless/agent sessions, print the URL instead of trying to open a browser:
khal auth login --target dev --no-browser
The CLI prints a WorkOS/AuthKit URL and listens for the localhost callback. It stores only the returned KhalOS session token.Verify identity and recovery state without printing secrets:
khal auth status --target dev --jsonkhal whoami --target dev --json
khal auth status --json exits 0 even when unauthenticated and prints the next login command. khal whoami --json exits 2 when no credential exists.
khal context --target dev --textkhal doctor --target devkhal logs <app-id> --target dev --tail 50khal status <app-id> --target dev --jsonkhal open <app-id> --target dev --check --json
status and open are currently hidden compatibility helpers. They are useful for proof, but they are not yet part of the public khal --help ladder.
For SSH remotes, register your SSH key in Gitea first and use the SSH clone URL. Do not print or commit tokens, credential-helper output, or private remote URLs in public docs/issues.
This page was written after running the path from a clean directory with npmjs @latest:
npm install @khal-os/app-kit@latest./node_modules/.bin/khal --version./node_modules/.bin/khal auth login --target dev --no-browser./node_modules/.bin/khal new app fde-demo-app./node_modules/.bin/khal new service fde-demo-service./node_modules/.bin/khal new workflow fde-demo-workflow# for each generated repo:bun installbun run buildbun run typecheckkhal install . --target dev --dry-run --json
All three generated template kinds installed dependencies, built, typechecked, and passed install dry-run with zero blocking checks.