Getting Started

Ten minutes, once through the whole path. At the end you will have sent a task from a phone and watched it run on your own machine.

Before you start

1 · Node.js first, then install the executor

First make sure Node.js and npm are both there — this is required. Run these two and only go on once both print a version:

$ node -v
$ npm -v

Either one says command not found? Install Node.js LTS (it ships npm) from nodejs.org first, or follow Windows from zero · Mac from zero · Linux from zero. Why: Runtimes are installed through npm, and the KernelHub installer does not install Node for you.

Then, on the machine that holds your code:

$ curl -fsSL https://icloser.xyz/install | sh

Windows PowerShell: irm https://icloser.xyz/install.ps1 | iex. On macOS / Linux it installs to ~/.local/bin and needs no sudo; on Windows it installs to %LOCALAPPDATA%\Programs\icloser, needs no admin, and afterwards checks whether typing icloser in a new terminal reaches the copy it just installed (if another tool on the machine has the same name, use icli). If the SHA-256 cannot be verified it says so rather than skipping quietly.

Brand-new computer, no Node yet?
Walk through "from zero" first, one line per step: it turns Node, PATH, logging in a Runtime, pairing and the first task into commands you can copy. Windows from zero · Mac from zero · Linux from zero

2 · First run

From inside the directory you want KernelHub to work in:

$ icloser run

That directory becomes a workspace. The process stays in the foreground and polls for work every few seconds. The first lines it prints tell you which workspace it joined and which runtime it selected — read them; they are the answer to most later confusion.

3 · Pair a device

Open KernelHub Desktop on the same machine and choose Pair this phone, then scan the code with the phone. A join link works too. See Pairing for the details and for what to do when scanning does nothing.

4 · Choose the runtime

KernelHub selects a runtime it can find on the machine. To pin one, pass it explicitly:

$ icloser run --runtime-kind claude

Whichever runtime you pick, grants are checked in the same place: writes, edits and execs go through KernelHub's built-in Tool Server. How the runtimes differ: see Runtimes.

5 · Grant permission tiers

Nothing runs until you say what it may do. Grant on the machine itself:

$ icloser grant read $ icloser grant write $ icloser grant exec

Read and write are enough to edit files. Add exec only if you want it to run builds and tests. Delete / migrate data is never granted remotely. See Permissions.

6 · Send a task

On the phone or desktop, type one sentence into the composer and send it. Name the file if you know it — a task that names its target is easier for you to verify afterwards:

Add an install section to README.md, matching the tone of the rest of the file. Do not commit.

7 · Watch the Live Workspace

The task card turns into a live view: files read, commands run, files changed. When it edits something, a diff appears while it is still working. See Live Workspace.

8 · Read the diff

Open Diff on the card to see the change line by line. The file list is attributed to this task — files that were already modified before it started stay out. See Diff.

9 · Approve if it asks

If the task needs a tier it does not have, it stops before doing the work and raises a card. Approving applies to that one task and expires when the task ends. See Approval.

10 · Read the result

A finished task says what it did, what it changed, and what it could not do. If the result is thin, use Revise — that continues the same task instead of starting a new one. See Results.

First: Node.js and npm (required)

Install Node.js LTS (it ships npm) before anything below, then check that both commands print a version. Runtimes are installed through npm, and the KernelHub installer does not install Node for you.

$ node -v
$ npm -v

Both print a version → carry on. Either says command not found → install Node.js LTS first; a brand-new computer is walked through step by step in the Windows / Mac / Linux from-zero guides.

Install it

One line per platform. The script reads the release manifest, so the version, the file name and the checksum are never written into the command you type. It refuses to install if the SHA-256 does not match.

macOS
$ curl -fsSL https://icloser.xyz/install | sh

Installs into ~/.local/bin — no sudo. Override with KERNELHUB_BIN_DIR. The old names icli / kernelhub-cli / devnexus-cli keep working.

Lands one of icloser_darwin_amd64 · icloser_darwin_arm64

Linux
$ curl -fsSL https://icloser.xyz/install | sh

Installs into ~/.local/bin — no sudo. Override with KERNELHUB_BIN_DIR. The old names icli / kernelhub-cli / devnexus-cli keep working.

Lands one of icloser_linux_amd64 · icloser_linux_arm64

Windows
PS> irm https://icloser.xyz/install.ps1 | iex

Writes your user-level PATH and the current session, so the next command works without opening a new terminal. It never touches the machine-wide PATH.

Lands one of icloser_windows_amd64.exe · icloser_windows_arm64.exe

Installed build is checked against the manifest on the spot — putting the file there is not the same as installing it. Prefer to check by hand? Every binary, its size and its SHA-256 are on the download page. 1.0.2 · build 202609161352

The first command after it lands

Run these in your project directory. pair is a one-off: it creates the workspace, writes the local config and draws a QR code in the terminal. run is the one you leave open.

$ icloser version

Which build did I actually get — say this first when reporting a problem

$ icloser pair

Once per project: workspace + one permission question + a QR code

$ icloser run

Leave it open. This is the thing that picks work up and does it.

Scrolled the QR code away, or want a second device on the same workspace? Run icloser qrdo not run pair again. A second pair creates a brand new, empty workspace and none of your tasks are in it.

Where the Desktop console opens

The console is a separate process — it does not start with icloser run. Start it with kernelhub-desktop (on a Mac you can also open KernelHub Desktop.app). The two commands below tell you whether it is running and where, and open it once it is; the second one just prints the address in a non-interactive shell instead of popping a browser window.

$ icloser console

Where things stand, where the console is, what to do next — works before you have a workspace

$ icloser open

Open it in the default browser

Addresshttp://127.0.0.1:18092
macOSkernelhub-desktop_darwin_amd64 · kernelhub-desktop_darwin_arm64
Linuxkernelhub-desktop_linux_amd64 · kernelhub-desktop_linux_arm64
Windowskernelhub-desktop_windows_amd64.exe · kernelhub-desktop_windows_arm64.exe

Bound to the loopback address only. Nothing outside this machine can reach it, which is why it needs no login of its own.

There is also a packaged desktop app (a .dmg on macOS, an .msi on Windows). It is the same console with a window around it, and it can pair a folder without you touching the terminal. Get it from the download page.