@kilogent/runner-dev 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -11
- package/dist/cli.js +3083 -1086
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,7 +5,8 @@ workspace.
|
|
|
5
5
|
|
|
6
6
|
Crew agents don't run in the cloud. They run **on your machine**, in your checkouts, with your
|
|
7
7
|
tools. This daemon is what makes that happen: it watches the job queues of the Ships you assign it
|
|
8
|
-
to, claims work oldest-first, and executes each job as a headless
|
|
8
|
+
to, claims work oldest-first, and executes each job as a headless agent session on the engine the
|
|
9
|
+
agent runs on.
|
|
9
10
|
|
|
10
11
|
```bash
|
|
11
12
|
npm i -g @kilogent/runner
|
|
@@ -30,13 +31,52 @@ each publishes only a `latest` tag, and a machine changes environment by install
|
|
|
30
31
|
| | |
|
|
31
32
|
|---|---|
|
|
32
33
|
| **Node.js** | 20 or newer |
|
|
33
|
-
| **
|
|
34
|
+
| **An engine CLI** | the CLI of every engine your agents run on, on your `PATH` — see [Engines](#engines) |
|
|
34
35
|
| **git / gh** | only if your agents work on GitHub repositories |
|
|
35
36
|
| **A Lumi Crew account** | with at least one Ship — [app.kilogent.com](https://app.kilogent.com) |
|
|
36
37
|
|
|
37
38
|
The daemon is a *client*. It signs in as you, and every write it makes is checked server-side
|
|
38
39
|
against your Ship membership. No service-account key ever touches your machine.
|
|
39
40
|
|
|
41
|
+
## Engines
|
|
42
|
+
|
|
43
|
+
An agent runs on an **engine** — the CLI that actually holds the session. The daemon spawns the
|
|
44
|
+
engine's binary per job, and `doctor` checks that every engine a Ship's agents use is installed.
|
|
45
|
+
|
|
46
|
+
**You do not have to install them yourself.** The daemon fetches the CLIs its crews need into its
|
|
47
|
+
own folder (`~/.kilogent-runner/tools/<engine>/`) and runs agents on that copy. A CLI you installed
|
|
48
|
+
yourself is never changed or removed, and the two stay independent: upgrade yours whenever you like,
|
|
49
|
+
the crew keeps running on the version the fleet knows works.
|
|
50
|
+
|
|
51
|
+
⚠️ **They are large.** The Codex CLI is about 284 MB installed and Claude Code about 202 MB. Each is
|
|
52
|
+
replaced rather than added to on an upgrade, so a machine running both settles around half a
|
|
53
|
+
gigabyte. To decline the whole thing and manage them yourself:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
kilogent-runner config set autoInstallEngines off
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Which version a machine installs comes from the fleet, not from this machine: it takes the version
|
|
60
|
+
known to work, moves to a newer release only after that release has been out for a day, and never
|
|
61
|
+
installs one another machine has proved broken. If a new version breaks a job here, this daemon puts
|
|
62
|
+
the working version back, runs the job again, and — only if that succeeds — tells the fleet, so no
|
|
63
|
+
other machine installs it.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
kilogent-runner engine list what each engine needs, what this machine has, and where it came from
|
|
67
|
+
kilogent-runner engine install [engine...] install now (--check, --dry-run, --force)
|
|
68
|
+
kilogent-runner engine uninstall <engine> remove this runner's copy, never yours
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
| Engine | Binary | Credential |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| Claude Code | `claude` ([install](https://claude.com/claude-code)) | a `claude setup-token`, pasted once per Ship in the Crew app |
|
|
74
|
+
| Codex CLI | `codex` ([install](https://developers.openai.com/codex)) | a **machine sign-in**: a captain picks this machine in the Crew app, the daemon runs `codex login --device-auth`, and the captain approves the code on a phone. The login stays on this machine — see [Credentials](#credentials). |
|
|
75
|
+
|
|
76
|
+
Each engine's binary can be overridden with `CREW_<ENGINE>_BIN` (`CREW_CLAUDE_BIN`), which wins over
|
|
77
|
+
the copy the daemon installed and is the supported way to pin a machine to a particular binary. It
|
|
78
|
+
is also how the test suites substitute a deterministic fake.
|
|
79
|
+
|
|
40
80
|
## Connect a machine
|
|
41
81
|
|
|
42
82
|
```bash
|
|
@@ -113,7 +153,7 @@ from a hang.
|
|
|
113
153
|
### `doctor`
|
|
114
154
|
|
|
115
155
|
Run this first when something isn't working. Everything it checks used to be discovered *inside a
|
|
116
|
-
running job*, surfacing as a failed task on your board minutes later: a missing
|
|
156
|
+
running job*, surfacing as a failed task on your board minutes later: a missing engine binary,
|
|
117
157
|
unsaved Ship credentials, a machine no captain approved. It checks Node ≥ 20, your stored session,
|
|
118
158
|
per-Ship approval and credentials, the engine binary, `git`/`gh` when an agent uses GitHub, server
|
|
119
159
|
reachability, the background service, whether that service still points at a CLI that exists, and
|
|
@@ -162,8 +202,8 @@ kilogent-runner config list # what is set, and what
|
|
|
162
202
|
The machine number is a ceiling, not a total: three Ships at `2` each on a machine set to `3` will
|
|
163
203
|
never run more than three sessions. A Ship with no number of its own may use the whole machine.
|
|
164
204
|
|
|
165
|
-
Each job is a separate
|
|
166
|
-
state — but they do share your CPU, your RAM and your
|
|
205
|
+
Each job is a separate engine process with its own empty working directory, so they don't share
|
|
206
|
+
state — but they do share your CPU, your RAM and your subscription's usage window. Start at 2 and watch a
|
|
167
207
|
real job before going higher. Restart the daemon (`kilogent-runner service restart`) to pick up a change.
|
|
168
208
|
|
|
169
209
|
## MCP servers that run on this machine
|
|
@@ -246,12 +286,23 @@ always as a warning — being out of date never fails the preflight.
|
|
|
246
286
|
|
|
247
287
|
## Credentials
|
|
248
288
|
|
|
249
|
-
Agent-session credentials —
|
|
250
|
-
**not** stored on this machine. A captain saves them once per Ship in the Crew app's Ship
|
|
251
|
-
and the daemon fetches them at job time, injects them into the session environment, and
|
|
252
|
-
from the transcript before upload. `kilogent-runner doctor` tells you when a Ship is
|
|
289
|
+
Agent-session credentials — a pasted engine token and, if your agents use GitHub, a token for that —
|
|
290
|
+
are **not** stored on this machine. A captain saves them once per Ship in the Crew app's Ship
|
|
291
|
+
Settings, and the daemon fetches them at job time, injects them into the session environment, and
|
|
292
|
+
redacts them from the transcript before upload. `kilogent-runner doctor` tells you when a Ship is
|
|
293
|
+
missing them.
|
|
294
|
+
|
|
295
|
+
**Machine sign-ins are the exception, on purpose.** An engine whose account has no static token
|
|
296
|
+
(Codex on a ChatGPT plan: its login rotates a refresh token on every use, so a copy on a second
|
|
297
|
+
machine kills the first) is signed in ON ONE MACHINE. The daemon keeps that login in a private
|
|
298
|
+
directory, `~/.kilogent-runner/engines/<engine>/<ship>/<credential>/`, refreshes it itself, and
|
|
299
|
+
never sends it anywhere. Jobs on that credential run on this machine only; the daemon runs one
|
|
300
|
+
session per sign-in at a time. Deleting the credential in the app signs this machine out and removes
|
|
301
|
+
the directory; so does removing the machine from the Ship, and `kilogent-runner uninstall --purge`.
|
|
302
|
+
`doctor` reports each sign-in this machine holds and whether the engine still accepts it.
|
|
253
303
|
|
|
254
|
-
The only thing stored locally is your own session, in `~/.kilogent-runner/config.json`
|
|
304
|
+
The only other thing stored locally is your own session, in `~/.kilogent-runner/config.json`
|
|
305
|
+
(mode `0600`).
|
|
255
306
|
|
|
256
307
|
## Uninstalling
|
|
257
308
|
|
|
@@ -305,7 +356,8 @@ claiming from one queue.
|
|
|
305
356
|
| Var | Effect |
|
|
306
357
|
|---|---|
|
|
307
358
|
| `LUMI_RUNNER_HOME` | Config + log directory (default `~/.kilogent-runner`) |
|
|
308
|
-
| `
|
|
359
|
+
| `CREW_<ENGINE>_BIN` | Path to an engine's binary, e.g. `CREW_CLAUDE_BIN`, `CREW_CODEX_BIN` (default: the copy this runner installed, else the engine's own name from `PATH`) |
|
|
360
|
+
| `CREW_MACHINE_LOGIN_TIMEOUT_MS` | How long a machine sign-in may wait for approval before it is reported expired (default: 16 minutes; a test seam) |
|
|
309
361
|
| `CREW_NO_NOTIFY` | Force desktop notifications off, whatever the config says (they are off by default) |
|
|
310
362
|
| `CREW_NO_POWER` | Disable sleep inhibition |
|
|
311
363
|
| `LUMI_RUNNER_REGISTRY` | npm registry to check for updates (default `https://registry.npmjs.org`) |
|