@linzumi/cli 0.0.11-beta → 0.0.13-beta

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 CHANGED
@@ -1,288 +1,267 @@
1
1
  # Linzumi CLI
2
2
 
3
- Run an AI coding session on the code that is already on your computer, then
4
- open the editor and app preview from a shared browser workspace.
5
-
6
- Linzumi is for the common team workflow that is still too painful:
7
-
8
- - your branch is only on your laptop
9
- - your app only runs with your local setup, secrets, database, or devices
10
- - you want an AI agent to read, edit, run, and explain that code
11
- - you want a teammate to see the editor or preview without cloning the repo
12
- - you do not want to move the project into a cloud VM just to collaborate
13
-
14
- The CLI connects your machine to Kandan, Linzumi's shared browser workspace.
15
- Your code, terminal commands, dev servers, and editor runtime stay local. Kandan
16
- handles sign-in, sharing, HTTPS browser access, and permission checks.
17
-
18
- ## Try It
19
-
20
- Use Chrome, Edge, Arc, Brave, or another Chromium-based browser.
21
-
22
- ```bash
23
- npm install -g @linzumi/cli@beta
24
- linzumi start ~/code/my-app
25
- ```
26
-
27
- Then in the browser:
28
-
29
3
  ```text
30
- Explain this project, open the editor, and tell me how to run it.
31
- ```
32
-
33
- If the project has a dev server, start it locally:
34
-
35
- ```bash
36
- npm run dev
4
+ ▓▓╗ ▓▓╗▓▓▓╗ ▓▓╗▓▓▓▓▓▓▓╗▓▓╗ ▓▓╗▓▓▓╗ ▓▓▓╗▓▓╗
5
+ ▓▓║ ▓▓║▓▓▓▓╗ ▓▓║╚══▓▓▓╔╝▓▓║ ▓▓║▓▓▓▓╗ ▓▓▓▓║▓▓║
6
+ ▓▓║ ▓▓║▓▓╔▓▓╗ ▓▓║ ▓▓▓╔╝ ▓▓║ ▓▓║▓▓╔▓▓▓▓╔▓▓║▓▓║
7
+ ▓▓║ ▓▓║▓▓║╚▓▓╗▓▓║ ▓▓▓╔╝ ▓▓║ ▓▓║▓▓║╚▓▓╔╝▓▓║▓▓║
8
+ ▓▓▓▓▓▓▓░░░░░░░░╚▓▓▓▓║▓▓▓▓▓▓▓╗╚▓▓▓▓▓▓╔╝░░░░░░░░▓▓║▓▓║
9
+ ╚═══▒▒▒@@@@@@@@▒▒═══╝╚══════╝ ╚════▒▒▒@@@@@@@@▒▒╝╚═╝
10
+ ▒@@@@@@@@@@@@@@@@▒ ▒@@@@@@@@@@@@@@@@▒
11
+ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@
12
+ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@
13
+ ║║ ║║
14
+ ║║ ║║
15
+ ║║ ()-().----. ║║
16
+ ║║ \"/` ___ ;_________║║_.'
17
+ ║║ ` ^^ ^^ ║║
18
+ ──────────╨╨─────────────··────··────────╨╨──────────────
19
+ your agent, your laptop, PRs in minutes
37
20
  ```
38
21
 
39
- Open the forwarded preview from Kandan. You should get a normal HTTPS URL that
40
- you can share with an approved teammate, without exposing a raw `localhost`
41
- address.
42
-
43
- To pin this exact beta:
22
+ Today, your AI coding agent has two homes, both bad.
44
23
 
45
- ```bash
46
- npm install -g @linzumi/cli@0.0.11-beta
47
- linzumi start ~/code/my-app
48
- ```
24
+ It can run **alone in your terminal**, where nobody — your teammate,
25
+ your eng lead, your future self at 2am — can see what it's doing or
26
+ help when it gets stuck.
49
27
 
50
- ## What You Get
28
+ Or it can run in **someone else's sandbox VM**, where "works for the
29
+ agent" rarely means "works on your laptop." You merge, pull, run the
30
+ test suite, and find out at 4pm.
51
31
 
52
- Linzumi turns your local project into a shared coding workspace:
32
+ Linzumi gives it a third home: **your real laptop, in a thread your
33
+ team can watch live**. Real env vars, real branches, real dotfiles,
34
+ real teamwork. Diffs land in chat as the agent makes them. Your
35
+ reviewer opens a browser VS Code pointed at *your folder* and has an
36
+ opinion before the agent's even finished. You approve from your phone
37
+ on the way to lunch.
53
38
 
54
- 1. Codex can inspect and edit the folder you allowed.
55
- 2. You can open a browser editor for that local folder.
56
- 3. Local app previews are reachable through Kandan HTTPS URLs.
57
- 4. Approved teammates can join the editor or preview.
58
- 5. Kandan enforces auth, sharing grants, and allowed-port policy.
39
+ In three minutes from now you'll have it.
59
40
 
60
- The important part: your project does not have to leave your computer for this
61
- to work.
41
+ ## What you'll have in three minutes
62
42
 
63
- ## What Runs Where
43
+ - **An AI coding agent running on your real laptop**, in a thread
44
+ your team can read along with.
45
+ - **A browser VS Code editor** pointed at the same folder, share-able
46
+ by link — no clone, no deploy, no "let me push a branch real
47
+ quick."
48
+ - **A private support channel with the Linzumi team**, in case
49
+ anything goes sideways.
64
50
 
65
- On your computer, the CLI starts a runner. The runner can:
51
+ Two commands. No cloud VM. Your code, your terminal, and your dev
52
+ server stay on your laptop the whole time.
66
53
 
67
- - launch or connect to Codex
68
- - download the Kandan-approved editor runtime
69
- - start code-server for the folder you chose
70
- - connect to explicitly approved local ports
71
- - stream editor and preview traffic through Kandan
54
+ ## Install + start
72
55
 
73
- In the browser, Kandan provides:
74
-
75
- - sign-in and workspace UI
76
- - local-runner status
77
- - editor and preview links
78
- - sharing controls
79
- - HTTPS termination
80
- - access checks before traffic reaches your machine
81
-
82
- When docs mention `127.0.0.1` or `localhost` on the local-service hop, that
83
- means your computer, not the Kandan server.
84
-
85
- ## Requirements
86
-
87
- Install these before running the beta:
88
-
89
- ```bash
90
- node --version
91
- npm --version
92
- bun --version
93
- codex --version
94
- ```
95
-
96
- Expected:
97
-
98
- - Node.js 20 or newer
99
- - npm
100
- - Bun 1.2 or newer
101
- - Codex CLI
102
- - Chrome, Edge, Arc, Brave, or another Chromium-based browser
103
-
104
- Safari is semi-supported for now. Use Chromium for the best editor and
105
- collaboration behavior.
106
-
107
- ## First Run
56
+ You'll need **Node.js 20+**, **Bun 1.2+**, the **Codex CLI**, and a
57
+ Chromium-based browser (Chrome, Edge, Arc, or Brave). Safari mostly
58
+ works; live collaboration is smoother in Chromium.
108
59
 
109
60
  ```bash
61
+ npm install -g @linzumi/cli@beta
110
62
  linzumi start ~/code/my-app
111
63
  ```
112
64
 
113
- What happens:
114
-
115
- 1. The CLI opens Kandan.
116
- 2. You sign up or sign in.
117
- 3. Kandan asks permission to connect this computer.
118
- 4. The CLI stores a scoped local-runner token.
119
- 5. The CLI checks Bun, Codex, and the Kandan editor runtime.
120
- 6. Kandan shows the computer as connected.
65
+ Here's what the next 30 seconds look like:
121
66
 
122
- The first editor launch can download a Kandan-approved runtime archive. Later
123
- runs reuse the verified runtime from:
67
+ 1. Your browser opens to Linzumi.
68
+ 2. Sign in (or sign up — one click).
69
+ 3. Linzumi asks if it can connect to this computer. Click allow.
70
+ 4. Your laptop appears as a runner in your workspace, and
71
+ `~/code/my-app` is added to your trusted-paths list automatically.
72
+ 5. Type something in chat — *"Explain this project and tell me how
73
+ to run it"* — and Codex picks it up on your machine.
124
74
 
125
- ```text
126
- ~/.linzumi/editor-runtimes
127
- ```
75
+ That's it. The rest of this README is detail.
128
76
 
129
- The production path does not use a random local `code-server` install. Kandan
130
- publishes a checksummed runtime manifest, and the CLI only advertises editor
131
- readiness after that runtime is verified locally.
77
+ ## Agent-first launch path
132
78
 
133
- ## Good Things To Try
134
-
135
- Ask Codex to map the project:
79
+ Copy this into an agent running in the repo you want changed:
136
80
 
137
81
  ```text
138
- What does this app do? Where should I start reading?
82
+ Get me a working hello-world PR from https://linzumi.com/agents.md
139
83
  ```
140
84
 
141
- Ask Codex to make a small change:
142
-
143
- ```text
144
- Find the main settings page and add a clear empty state.
145
- ```
85
+ That one prompt is the launch path. The canonical agent instructions are
86
+ hosted at `https://linzumi.com/agents.md`; `https://linzumi.com/skills.md`
87
+ stays available for compatibility. The agent will ask for your email,
88
+ ask for the emailed code, say hello to `@sean` in the shared support
89
+ channel, start the runner in the current folder, open Codex and the
90
+ browser editor, then post the PR or reviewable branch.
146
91
 
147
- Open the editor from Kandan and inspect the changed files.
148
-
149
- Start a local dev server:
150
-
151
- ```bash
152
- npm run dev
153
- ```
154
-
155
- If a port is not auto-detected, restart with an explicit approved port:
92
+ Under the hood, the npm package exposes these commands:
156
93
 
157
94
  ```bash
158
- linzumi start ~/code/my-app --forward-port 3000
95
+ npx -y @linzumi/cli@latest signup --email alice@example.com --agent-name BuildBot
96
+ npx -y @linzumi/cli@latest claim --pending <pending_id> --code <XXXX-XXXX>
97
+ npx -y @linzumi/cli@latest thread new "Hello world PR" --message "Starting now."
98
+ npx -y @linzumi/cli@latest agent runner "$PWD" --runner-id hello-world-agent
159
99
  ```
160
100
 
161
- For a collaboration test, invite another user, open the same file in the local
162
- editor, and type in Chromium. Remote cursor labels and selections should be
163
- visible.
101
+ The agent-owned runner reads `~/.linzumi/agent-token.json`, uses the
102
+ workspace/channel scope from the approval flow, trusts only the selected
103
+ folder by default, and listens only to the approving human unless
104
+ `--listen-user` is explicitly passed.
164
105
 
165
- ## Hosted Kandan
106
+ `linzumi claim` also prints `support_channel_url`. That channel is the
107
+ shared onboarding room for the approving human, the claimed agent identity,
108
+ and Linzumi support. Keep repository work in task threads; use the support
109
+ channel when signup, runner, mobile, or browser-editor setup gets stuck.
166
110
 
167
- For a hosted Kandan deployment, point the CLI at the hosted websocket URL:
111
+ Once the runner is online, the agent can ask Kandan to start Codex and
112
+ open the browser editor for the same thread and folder:
168
113
 
169
114
  ```bash
170
- linzumi start ~/code/my-app --kandan-url wss://<your-kandan-host>
115
+ npx -y @linzumi/cli@latest codex start <thread_id> \
116
+ --runner hello-world-agent \
117
+ --cwd "$PWD" \
118
+ --work-description "Make the smallest hello-world change, run the relevant test, open a PR or clearly labeled local-review branch, and post the link."
119
+
120
+ npx -y @linzumi/cli@latest editor open <thread_id> \
121
+ --runner hello-world-agent \
122
+ --cwd "$PWD"
171
123
  ```
172
124
 
173
- For Render-hosted Kandan, public TLS should work without local certificate
174
- flags. The CLI derives the HTTPS API origin from the websocket URL for OAuth,
175
- runtime manifest download, and runtime archive download.
176
-
177
- For local development with a private CA:
125
+ The launch target for this path is zero-to-hello-world-pr+editor in under
126
+ 3 minutes, measured from `signup` through PR/reviewable change link plus
127
+ browser VS Code readiness.
128
+
129
+ ## What just happened
130
+
131
+ You now have:
132
+
133
+ - **A runner.** Your laptop, listed in the workspace, advertising the
134
+ folder you started in (and any others you've added to your trusted
135
+ list).
136
+ - **A workspace** you can invite teammates into. They open the same
137
+ browser app, see the same threads, and can start their own runners
138
+ on their own machines.
139
+ - **A private Linzumi support channel.** We can see this channel; we
140
+ **cannot** see your repo contents, your tokens, your Codex
141
+ transcripts, your editor session, or your other threads. Stuck?
142
+ Post there — we read it.
143
+ - **A browser VS Code editor**, available on demand for any Codex
144
+ session, posted into the thread when ready.
145
+
146
+ ## Three things to try first
147
+
148
+ 1. **Onboard yourself to a new repo.** *"Explain this project and tell
149
+ me how to run it."* Codex maps the codebase before you've opened
150
+ a single file. Days saved on day one.
151
+ 2. **Make a real change without context-switching.** Codex edits files
152
+ on your disk. Watch the diff land in chat, or jump into the
153
+ browser editor (it's VS Code in your browser, pointed at your
154
+ folder) and shape it yourself.
155
+ 3. **Show a teammate something on your screen.** Open the browser
156
+ editor or share your local dev server through a normal HTTPS
157
+ link. No exposing localhost, no copy-pasting IPs, no "screenshare
158
+ real quick."
159
+
160
+ ## Working as a team
161
+
162
+ This is what makes Linzumi different from running an AI coding agent
163
+ alone in a terminal.
164
+
165
+ - **Your laptops are always in sight.** Every machine you've run
166
+ `linzumi start` on shows up as a runner. From any channel, you can
167
+ see how many of your runners are reachable right now and which ones
168
+ are listening on that channel.
169
+
170
+ - **Put Codex on the job from the channel.** Pick an available runner
171
+ and a trusted folder from the channel menu, type what Codex should
172
+ work on, hit start. Linzumi attaches a fresh Codex to that runner
173
+ with the folder and settings you picked.
174
+
175
+ - **One Codex per thread.** Once a Codex picks up a thread, it owns
176
+ the thread — no second Codex can step in and trample the work. The
177
+ lock holds for the life of the thread.
178
+
179
+ - **Browse what your team's been up to.** Open the runners dropdown
180
+ to see, across every device, the most recently active threads with
181
+ short AI-written summaries. Jump in and keep working.
182
+
183
+ - **Chat with humans without waking Codex.** Start a message with `&`
184
+ and Codex won't see it. Side conversations live in the same thread
185
+ without nudging the agent.
186
+
187
+ ## Trusted folders — the security model
188
+
189
+ Linzumi only runs Codex or opens the editor inside folders you've
190
+ explicitly trusted. The trust list lives at `~/.linzumi/config.json`.
178
191
 
179
192
  ```bash
180
- KANDAN_TLS_CA_FILE=/path/to/ca.crt linzumi start ~/code/my-app \
181
- --kandan-url wss://linzumi.io:4140
193
+ linzumi paths list
194
+ linzumi paths add ~/code/my-app
195
+ linzumi paths remove ~/code/my-app
182
196
  ```
183
197
 
184
- ## Tailscale Development
185
-
186
- If your browser needs to reach a local Kandan server through Tailscale:
198
+ `linzumi start <path>` adds `<path>` to the trust list automatically
199
+ on first use. `linzumi connect` uses the list as-is — or pass
200
+ `--allowed-cwd <paths>` for a one-off comma-separated override.
201
+
202
+ There's no credential escalation: an agent attached to a trusted
203
+ folder can only read and write inside that folder, with the same
204
+ privileges as your shell. Every action is auditable from the thread.
205
+
206
+ ## When something looks wrong
207
+
208
+ - **`linzumi: command not found`** — your global npm bin folder isn't
209
+ on `PATH`. Run `npm prefix -g`; add the printed path's `bin` folder
210
+ to your shell.
211
+ - **`bun: command not found`** — install Bun, then rerun
212
+ `linzumi start`. The `linzumi` binary is a node shim that delegates
213
+ to Bun for fast TypeScript startup.
214
+ - **`codex: command not found`** — install the Codex CLI, or pass
215
+ `--codex-bin <path>` to `linzumi start`.
216
+ - **Browser sign-in opens but never returns to the CLI.** Your browser
217
+ can't reach the address the CLI is listening on. Pass
218
+ `--oauth-callback-host <ip-or-host-your-browser-can-reach>`.
219
+ - **Browser editor never says it's ready.** Rerun `linzumi start` and
220
+ watch the console for the editor download step. The very first
221
+ launch on a slow network can take a minute or two.
222
+ - **Collaboration looks off in Safari.** Switch to Chromium for now.
223
+ - **Anything else.** Post in your Linzumi support channel — we read it.
224
+
225
+ ## Pinning a version
187
226
 
188
227
  ```bash
189
- linzumi start ~/code/my-app \
190
- --kandan-url ws://100.71.192.98:4162 \
191
- --oauth-callback-host 100.71.192.98
228
+ npm install -g @linzumi/cli@0.0.13-beta
229
+ linzumi --version
192
230
  ```
193
231
 
194
- Use your own Tailscale IP.
232
+ ## Advanced
195
233
 
196
- ## Commands
234
+ Most people never need anything in this section.
197
235
 
198
- ```bash
199
- linzumi
200
- linzumi --help
201
- linzumi --version
202
- linzumi start <folder>
203
- linzumi connect --help
204
- linzumi connect [runner options]
205
- linzumi auth [auth options]
206
- ```
207
-
208
- Most people should use `linzumi start`.
236
+ ### Lower-level connect
209
237
 
210
- `linzumi connect` is the lower-level command for connecting to an explicit
211
- workspace and channel:
238
+ `linzumi start` is what you want almost every time. The lower-level
239
+ form is useful when you already know your workspace and channel:
212
240
 
213
241
  ```bash
214
242
  linzumi connect \
215
- --kandan-url wss://serve.kandanai.com \
216
- --workspace default \
217
- --channel general \
243
+ --workspace <your-workspace> \
244
+ --channel <your-channel> \
218
245
  --cwd ~/code/my-app
219
246
  ```
220
247
 
221
- ## Useful Options
222
-
223
- ```bash
224
- --kandan-url <ws-url> Kandan websocket URL
225
- --oauth-callback-host <ip> Callback host reachable by your browser
226
- --runner-id <id> Stable id for this computer
227
- --codex-bin <path> Codex executable, default codex
228
- --model <name> Codex model metadata shown in Kandan
229
- --reasoning-effort <value> Codex reasoning metadata shown in Kandan
230
- --fast Mark this runner as low-latency
231
- --forward-port <ports> Comma-separated local ports Kandan may expose
232
- --allowed-cwd <paths> Comma-separated roots Kandan may use
233
- --log-file <path> JSONL runner event log
234
- ```
235
-
236
- `--code-server-bin` exists only as a development override. It is not the
237
- supported production editor path.
238
-
239
- ## Troubleshooting
240
-
241
- Check the CLI version:
242
-
243
- ```bash
244
- linzumi --version
245
- ```
246
-
247
- Expected:
248
+ ### All the flags
248
249
 
249
250
  ```text
250
- linzumi 0.0.11-beta
251
- ```
252
-
253
- If `linzumi` is not found, your global npm bin directory is not on `PATH`.
254
-
255
- If `bun` is not found, install Bun and rerun `linzumi start`.
256
-
257
- If `codex` is not found, install or configure the Codex CLI, or pass
258
- `--codex-bin`.
259
-
260
- If OAuth opens but does not return to the CLI, pass an
261
- `--oauth-callback-host` that your browser can reach.
262
-
263
- If the editor does not become ready, do not install a local code-server package
264
- as a workaround. The server-managed runtime must download and verify cleanly.
265
- Rerun the CLI and check the runner log.
266
-
267
- If collaboration behaves oddly in Safari, retry in Chromium. Safari is currently
268
- semi-supported.
269
-
270
- ## For Kandan Release Engineers
271
-
272
- The production contract is:
273
-
274
- 1. Build the server-approved editor runtime archive.
275
- 2. Publish the manifest and archive from Kandan.
276
- 3. Publish the CLI beta.
277
- 4. The CLI downloads only the approved runtime archive.
278
- 5. The CLI verifies the archive SHA before advertising editor readiness.
279
-
280
- For local package verification:
281
-
282
- ```bash
283
- bun test
284
- npm pack --dry-run
251
+ --agent-token-file <path> Agent token cache for `linzumi agent runner`
252
+ --oauth-callback-host <ip> Sign-in callback host your browser can reach
253
+ --codex-bin <path> Codex executable, default `codex`
254
+ --model <name> Model requested for Codex sessions and labelled in Linzumi
255
+ --reasoning-effort <value> Reasoning effort requested for Codex sessions and labelled in Linzumi
256
+ --fast Advertise this runner as low-latency in the workspace
257
+ --forward-port <ports> Comma-separated local TCP ports Linzumi may share as authenticated previews
258
+ --allowed-cwd <paths> Override ~/.linzumi/config.json with comma-separated trusted roots
259
+ --log-file <path> JSONL runner event log
285
260
  ```
286
261
 
287
- The npm package must include this README, `bin/linzumi.js`, and the `src`
288
- runtime files.
262
+ `--runner-id`, `--auth-file`, `--code-server-bin`, `--codex-url`,
263
+ `--launch-tui`, `--listen-user`, `--sandbox`, `--approval-policy`,
264
+ `--stream-flush-ms`, and `--token` are also accepted; `linzumi
265
+ --help` shows them all with brief descriptions. They exist for
266
+ multi-runner orchestration, custom Codex deployments, and CI
267
+ scenarios — not for everyday use.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@linzumi/cli",
3
- "version": "0.0.11-beta",
4
- "description": "Connect your computer to Kandan for local Codex sessions, editors, and forwarded previews",
3
+ "version": "0.0.13-beta",
4
+ "description": "Linzumi CLI point a Codex agent at the real code on your laptop, with your team watching and steering from shared threads.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "linzumi": "bin/linzumi.js"