KhalOS uses two package managers on purpose. The app-kit workspace (theDocumentation Index
Fetch the complete documentation index at: https://docs.khal.ai/llms.txt
Use this file to discover all available pages before exploring further.
@khal-os/* framework packages and the khal CLI) is a pnpm monorepo. Each generated app/service/workflow repo is a bun workspace. Knowing which tool runs where is the only setup detail that trips up first-time contributors.
TL;DR
pnpm
For the
@khal-os/* SDK workspace. pnpm install, pnpm build, pnpm typecheck, pnpm lint.bun
For generated app, service, and workflow repos.
bun install, bun run build, bun run typecheck.Node version and CLI channel
Install Node 20 or newer. The@khal-os/* packages target modern Node and bun itself installs cleanly on 20.x. If you use nvm, run nvm use inside any repo that ships an .nvmrc.
The khal binary comes from @khal-os/app-kit on npmjs. Fresh FDE installs should use @latest; use @next only when a release owner explicitly asks you to validate an unreleased CLI fix.
The SDK workspace — pnpm
The SDK workspace ships the four framework packages your pack will depend on: @khal-os/sdk, @khal-os/ui, @khal-os/types, and @khal-os/app-kit (the khal CLI). It uses pnpm and Turbo under the hood.
Pack repos — bun
Every generated app, service, or workflow repo uses bun as both its package manager and its runtime. bun install is fast, workspaces are first-class, and the bundled khal new templates already match the toolchain the app-kit expects.
Don’t cross the streams. Running
pnpm install inside a pack-* repo, or bun install inside the SDK workspace, will produce a lockfile the other tool ignores — and the next person on the repo will have to untangle it. When in doubt, check which lockfile is already committed.Verifying your setup
After you’ve cloned the workspace, pick one of each and confirm both install cleanly:
Next steps
Build your first pack
Scaffold a new pack with
khal new app <name> and get a “Hello FDE” component shipping.Pack anatomy
A directory-level tour of everything inside a pack — manifest, frontend package, backend service, Helm chart, CI.