Install kndl
Install kndl, and set the machine up as a Hub, a Runner or both, running as services that start at login and restart if they crash.
What each machine needs
Section titled “What each machine needs”| Hub | Runner | |
|---|---|---|
| macOS or Linux, with git and curl | Yes | Yes |
| A Mac with Apple Silicon, or Linux with KVM | Yes | |
| A port that browsers and Runners reach | 7777, or behind a proxy |
The Hub is one Bun process with a SQLite database, and needs little CPU or memory. A Runner runs one microsandbox microVM per running Session, so give it the CPU, memory and disk. A Runner needs no Claude Code and no Claude sign-in.
Install
Section titled “Install”-
Install kndl:
Terminal window curl -fsSL https://raw.githubusercontent.com/kddige/kndl/main/install.sh | shIt installs Bun if it’s missing, clones kndl into
~/.kndl/app, and puts thekndlcommand in~/.local/bin. It ends by printing the command to run next.If you use mise, the installer installs Bun with it (
mise use --global bun@latest), so Bun is on yourPATHandmise upgradeupdates it. Otherwise it uses Bun’s own installer, which puts Bun in~/.bun. -
Set the machine up:
Terminal window kndl onboardIf your shell says
kndlisn’t found, open a new terminal, or run~/.local/bin/kndl onboard.
To install somewhere other than ~/.kndl, set KNDL_HOME when you run the installer. The kndl command remembers it.
Choose what to follow
Section titled “Choose what to follow”A fresh install follows the stable Channel: the latest Release, a tag such as v2026.10.1. To follow main instead, or to pin a branch, tag or commit:
curl -fsSL https://raw.githubusercontent.com/kddige/kndl/main/install.sh | sh -s -- --channel devcurl -fsSL https://raw.githubusercontent.com/kddige/kndl/main/install.sh | sh -s -- --ref <branch|tag|sha>--ref wins over --channel. With no Release yet, a stable install gets main, and kndl update moves it to the first Release that includes its commit. Switch later with kndl update --channel.
Set the machine up
Section titled “Set the machine up”kndl onboard asks:
- What does this machine run? A Hub, a Runner for a Hub elsewhere, or both.
- Who reaches this Hub?
- Only this machine (127.0.0.1), with dev login, for a try.
- My local network, over plain HTTP (0.0.0.0). See Reach the Hub from other machines for what that costs.
- Behind HTTPS, through a reverse proxy or tunnel. It asks for the public URL.
- The GitHub App, for GitHub sign-in and the Repos’ tokens: create it now, paste one you made, or not now. See Set up the GitHub App.
- For a Runner on its own, a pairing link or the Hub’s URL and a Runner token. See Add a Runner.
It offers to install what’s missing (git, curl and microsandbox’s runtime) with Homebrew, apt or dnf, and shows the commands first. Then it writes hub.env and runner.env in ~/.kndl, readable only by you, starts the services, and checks that the Hub answers and the Runner connects.
A Hub with GitHub sign-in ends with its Setup link. Open it to become the Owner.
To change an answer, run kndl onboard again. It asks only what the env files don’t answer yet; --reset asks everything. For a script, --non-interactive never asks and fails naming the flag it needs:
kndl onboard --non-interactive --role runner \ --hub-url https://hub.example.com --token chr_… --install-prerequisitesEvery flag is in Commands.
On Linux
Section titled “On Linux”The services are systemd user units, which stop when you log out. Onboard offers loginctl enable-linger (--linger), which keeps them running and starts them at boot.
A Runner’s user needs /dev/kvm, so onboard adds it to the kvm group. Reboot afterwards: the services keep the groups they started with.
Check on it
Section titled “Check on it”kndl status # what's installed and what it follows, the services, the Hub, the Runnerkndl doctor # checks everything, and says how to fix what's wrongkndl logs hub -f # or runnerkndl doctor --fix repairs what it can. See Troubleshooting for the rest.
Update
Section titled “Update”Run kndl update. See Update kndl.
Next steps
Section titled “Next steps”kndl is an independent project. It is not affiliated with or endorsed by Anthropic. Claude and Claude Code are trademarks of Anthropic, PBC. About kndl