@linzumi/cli 0.0.32-beta → 0.0.34-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 +30 -292
- package/dist/index.js +647 -151
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Linzumi
|
|
1
|
+
# Linzumi
|
|
2
2
|
|
|
3
3
|
```text
|
|
4
4
|
▓▓╗ ▓▓╗▓▓▓╗ ▓▓╗▓▓▓▓▓▓▓╗▓▓╗ ▓▓╗▓▓▓╗ ▓▓▓╗▓▓╗
|
|
@@ -19,317 +19,55 @@
|
|
|
19
19
|
your agent, your laptop, coding live
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**Linzumi is a lightweight, Slack-like chat built for native AI
|
|
23
|
+
Engineering teams.** Your coding agents run on your computer, reach
|
|
24
|
+
you in your browser or on your phone, and build context for your team
|
|
25
|
+
about what's going well, what's blocked, and what's ready to ship.
|
|
26
|
+
Ship more, regret less.
|
|
27
|
+
|
|
28
|
+
## Try it
|
|
29
|
+
|
|
30
|
+
Paste this into your terminal:
|
|
23
31
|
|
|
24
32
|
```bash
|
|
25
33
|
codex \
|
|
26
34
|
-c sandbox_workspace_write.network_access=true \
|
|
27
35
|
--ask-for-approval never \
|
|
28
36
|
--sandbox danger-full-access \
|
|
29
|
-
-- '
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
That's the launch path: the first Codex is only the bootstrapper. It
|
|
33
|
-
opens the agent instructions, confirms your email and workspace details,
|
|
34
|
-
asks you for the emailed code when it arrives, creates `/tmp/hello_linzumi`,
|
|
35
|
-
creates the shared support channel, starts the Linzumi Commander for that
|
|
36
|
-
folder, asks the Commander to launch the inner Linzumi Codex session in a work
|
|
37
|
-
thread, and opens the browser editor pointed at the demo app. The
|
|
38
|
-
Commander-launched Codex session starts the hot-reload app and edits it.
|
|
39
|
-
When you ask the bootstrapper to get you to "wow", that means the complete
|
|
40
|
-
first-run outcome: a running Linzumi workspace, browser VS Code editor,
|
|
41
|
-
editable `/tmp/hello_linzumi` app on your computer, and a shareable Linzumi
|
|
42
|
-
secure-tunnel preview URL for that app.
|
|
43
|
-
|
|
44
|
-
Terms:
|
|
45
|
-
|
|
46
|
-
- **Bootstrapper Codex**: the outer Codex started by the pasted command. It
|
|
47
|
-
sets up Linzumi and local processes, but does not edit the demo app.
|
|
48
|
-
- **Linzumi Commander**: the long-running local bridge started with
|
|
49
|
-
`linzumi commander`; it runs as the claimed human's Commander and owns the
|
|
50
|
-
secure tunnel, trusted folder, browser editor, and inner Codex launch.
|
|
51
|
-
- **Linzumi Codex session**: the inner agent running inside the Linzumi thread;
|
|
52
|
-
it edits `/tmp/hello_linzumi` and posts progress.
|
|
53
|
-
- **Human**: the workspace owner who opens the one-time login link and watches
|
|
54
|
-
the work in `#general` and `#linzumi-support`.
|
|
55
|
-
|
|
56
|
-
The snippet uses automatic command approval and full local process access
|
|
57
|
-
because the bootstrapper must start a real Linzumi Commander and browser editor on this
|
|
58
|
-
computer. It is intentionally not the dangerous sandbox-bypass mode.
|
|
59
|
-
|
|
60
|
-
Today, your AI coding agent has two homes, both bad.
|
|
61
|
-
|
|
62
|
-
It can run **alone in your terminal**, where nobody — your teammate,
|
|
63
|
-
your eng lead, your future self at 2am — can see what it's doing or
|
|
64
|
-
help when it gets stuck.
|
|
65
|
-
|
|
66
|
-
Or it can run in **someone else's sandbox VM**, where "works for the
|
|
67
|
-
agent" rarely means "works on your laptop." You merge, pull, run the
|
|
68
|
-
test suite, and find out at 4pm.
|
|
69
|
-
|
|
70
|
-
Linzumi gives it a third home: **your real laptop, in a thread your
|
|
71
|
-
team can watch live**. Real processes, real env vars, real dotfiles,
|
|
72
|
-
real teamwork. Diffs land in chat as the agent makes them. Your
|
|
73
|
-
reviewer opens a browser VS Code pointed at *your folder* and has an
|
|
74
|
-
opinion before the agent's even finished. You approve from your phone
|
|
75
|
-
on the way to lunch.
|
|
76
|
-
|
|
77
|
-
In three minutes from now you'll have it working end to end.
|
|
78
|
-
|
|
79
|
-
## What you'll have in three minutes
|
|
80
|
-
|
|
81
|
-
- **An AI coding agent running on your real laptop**, editing the
|
|
82
|
-
generated Hello Linzumi app in a thread your team can read along with.
|
|
83
|
-
- **A browser VS Code editor** pointed at `/tmp/hello_linzumi`,
|
|
84
|
-
share-able by link with no clone and no deploy.
|
|
85
|
-
- **A tunneled local preview** of the app running on your computer with
|
|
86
|
-
hot reload.
|
|
87
|
-
- **A private support channel with the Linzumi team**, in case
|
|
88
|
-
anything goes sideways.
|
|
89
|
-
|
|
90
|
-
One pasted command. No cloud VM. The editor, agent, and dev server stay
|
|
91
|
-
on your laptop the whole time.
|
|
92
|
-
|
|
93
|
-
## Manual Runner Setup
|
|
94
|
-
|
|
95
|
-
The agent-first command above is the launch path. Use this manual path
|
|
96
|
-
when you want to connect your laptop yourself before starting work from
|
|
97
|
-
the browser.
|
|
98
|
-
|
|
99
|
-
You'll need **Node.js 20+**, the **Codex CLI**, and a Chromium-based browser
|
|
100
|
-
(Chrome, Edge, Arc, or Brave). Safari mostly works; live collaboration is
|
|
101
|
-
smoother in Chromium.
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
npm install -g @linzumi/cli@latest
|
|
105
|
-
linzumi start ~/code/my-app
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Here's what the next 30 seconds look like:
|
|
109
|
-
|
|
110
|
-
1. Your browser opens to Linzumi.
|
|
111
|
-
2. Sign in (or sign up — one click).
|
|
112
|
-
3. Linzumi asks if it can connect to this computer. Click allow.
|
|
113
|
-
4. Your laptop appears as a Commander in your workspace, and
|
|
114
|
-
`~/code/my-app` is added to your trusted-paths list automatically.
|
|
115
|
-
5. Type something in chat — *"Explain this project and tell me how
|
|
116
|
-
to run it"* — and Linzumi Codex picks it up on your machine.
|
|
117
|
-
|
|
118
|
-
That's it for manual setup. The rest of this README is detail.
|
|
119
|
-
|
|
120
|
-
## Agent-first launch path
|
|
121
|
-
|
|
122
|
-
That one prompt is the launch path. The canonical agent instructions are
|
|
123
|
-
hosted at `https://linzumi.com/agents.md`; `https://linzumi.com/skills.md`
|
|
124
|
-
stays available for compatibility. The bootstrap agent will confirm your
|
|
125
|
-
email and workspace choice up front, ask for the emailed code after signup
|
|
126
|
-
sends it, say hello to `@sean` in the shared support channel,
|
|
127
|
-
generate `/tmp/hello_linzumi`, trust that folder in `~/.linzumi/config.json`,
|
|
128
|
-
start the global Commander daemon, ask the Commander to launch a Linzumi Codex
|
|
129
|
-
session in a new work thread, and open the browser editor. The
|
|
130
|
-
Commander-launched Linzumi Codex session starts the
|
|
131
|
-
hot-reload app and adds confetti to the demo page while you watch. Workspace
|
|
132
|
-
names are plain display names from 2 to 100 characters; Linzumi generates the
|
|
133
|
-
URL-safe workspace slug.
|
|
134
|
-
|
|
135
|
-
Under the hood, the npm package exposes these commands for the bootstrap
|
|
136
|
-
agent to run. They are not extra human setup steps after the one pasted
|
|
137
|
-
Codex command.
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
npx -y @linzumi/cli@latest signup --email alice@example.com --workspace-name "Alice's Linzumi" --agent-name BuildBot
|
|
141
|
-
npx -y @linzumi/cli@latest claim --pending <pending_id> --code <XXXX-XXXX>
|
|
142
|
-
npx -y @linzumi/cli@latest channel post <support_channel_id> "Hello @sean, starting this launch run."
|
|
143
|
-
npx -y @linzumi/cli@latest init-hello-linzumi-demo-app --parent-dir /tmp --name hello_linzumi --host 0.0.0.0 --port 8787 --reset --json
|
|
144
|
-
project_dir="$(cd /tmp/hello_linzumi && pwd -P)"
|
|
145
|
-
commander_id="hello-linzumi-commander-$(uuidgen | tr '[:upper:]' '[:lower:]' | cut -c1-8)"
|
|
146
|
-
npx -y @linzumi/cli@latest paths add "$project_dir"
|
|
147
|
-
npx -y @linzumi/cli@latest commander daemon \
|
|
148
|
-
--runner-id "$commander_id" \
|
|
149
|
-
--forward-port 8787 \
|
|
150
|
-
--sandbox danger-full-access \
|
|
151
|
-
--approval-policy never
|
|
152
|
-
npx -y @linzumi/cli@latest commander wait --runner-id "$commander_id" --timeout-ms 30000
|
|
37
|
+
-- 'Curl https://linzumi.com/agents.md and then get me to "wow"'
|
|
153
38
|
```
|
|
154
39
|
|
|
155
|
-
The
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
listens only to the approving human unless `--listen-user` is explicitly passed. Use a unique
|
|
161
|
-
Commander id per launch. `linzumi commander daemon` writes a status record and
|
|
162
|
-
log under `~/.linzumi/commanders`, and `linzumi commander wait` returns only
|
|
163
|
-
after the Commander is connected.
|
|
40
|
+
The agent will ask for your email, send you a sign-in code, and drive
|
|
41
|
+
the rest. You'll end up with a workspace open in your browser, a tiny
|
|
42
|
+
demo app running on your laptop, a browser VS Code editor pointed at
|
|
43
|
+
it, and a shareable preview URL. Watch the agent edit live, jump in
|
|
44
|
+
alongside, or open the preview on your phone.
|
|
164
45
|
|
|
165
|
-
|
|
166
|
-
runtime for your platform and verifies its checksum before enabling the
|
|
167
|
-
browser editor. Linux editor launches are wrapped with `bubblewrap`
|
|
168
|
-
(`bwrap`) for filesystem confinement.
|
|
46
|
+
## Why a CLI
|
|
169
47
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
side; the bootstrap agent posts a hello there with the printed
|
|
175
|
-
`support_channel_id`.
|
|
176
|
-
Keep demo work in task threads; use the support channel when signup, Commander,
|
|
177
|
-
preview, or browser-editor setup gets stuck.
|
|
178
|
-
|
|
179
|
-
Once the Commander is online, the bootstrap agent can ask Linzumi to create
|
|
180
|
-
the work thread, have the Commander start Codex, and open the browser editor
|
|
181
|
-
for the same thread and folder:
|
|
48
|
+
Your agent runs on the laptop you trust, with your real env vars, your
|
|
49
|
+
real dotfiles, and your real branches. No "works in the sandbox VM,
|
|
50
|
+
breaks in your repo" surprises. The chat side runs in your browser;
|
|
51
|
+
the work side runs locally. This npm package is the local half.
|
|
182
52
|
|
|
183
53
|
```bash
|
|
184
|
-
|
|
185
|
-
--title "Hello Linzumi confetti" \
|
|
186
|
-
--runner "$commander_id" \
|
|
187
|
-
--cwd "$project_dir" \
|
|
188
|
-
--work-description "Start the Hello Linzumi hot-reload app on 0.0.0.0:8787, add tasteful confetti when the page loads, keep the preview working, and post the exact files changed." \
|
|
189
|
-
--developer-prompt "The Bootstrapper Codex generated the project and then handed off. You are the Commander-launched Linzumi Codex session. Start any dev server yourself as your descendant process, bind user-visible servers to 0.0.0.0, work only in the approved Hello Linzumi folder, and do not create a branch or PR for this demo." \
|
|
190
|
-
--idempotency-key "hello-linzumi-${commander_id}"
|
|
191
|
-
|
|
192
|
-
thread_id="<thread_id printed by codex start-new>"
|
|
193
|
-
npx -y @linzumi/cli@latest editor open "$thread_id" \
|
|
194
|
-
--runner "$commander_id" \
|
|
195
|
-
--cwd "$project_dir"
|
|
54
|
+
linzumi --version
|
|
196
55
|
```
|
|
197
56
|
|
|
198
|
-
|
|
199
|
-
under 3 minutes, measured from `signup` through browser VS Code readiness,
|
|
200
|
-
forwarded preview readiness, and the first visible Codex edit.
|
|
201
|
-
|
|
202
|
-
## What just happened
|
|
203
|
-
|
|
204
|
-
You now have:
|
|
205
|
-
|
|
206
|
-
- **A Commander.** Your laptop, listed in the workspace, advertising
|
|
207
|
-
`/tmp/hello_linzumi` and the explicit preview port.
|
|
208
|
-
- **A workspace** you can invite teammates into. They open the same
|
|
209
|
-
browser app, see the same threads, and can start their own Commanders
|
|
210
|
-
on their own machines.
|
|
211
|
-
- **A private Linzumi support channel.** We can see this channel; we
|
|
212
|
-
**cannot** see your repo contents, your tokens, your Codex
|
|
213
|
-
transcripts, your editor session, or your other threads. Stuck?
|
|
214
|
-
Post there — we read it.
|
|
215
|
-
- **A browser VS Code editor**, opened against `/tmp/hello_linzumi` and
|
|
216
|
-
ready for shared editing.
|
|
217
|
-
|
|
218
|
-
## Three things to try first
|
|
219
|
-
|
|
220
|
-
1. **Watch the demo change live.** The Linzumi Codex session edits the
|
|
221
|
-
generated page, and hot reload shows the change in the tunneled preview.
|
|
222
|
-
2. **Make a real change without context-switching.** The Codex session
|
|
223
|
-
running in Linzumi edits files on your disk. Watch the diff land in
|
|
224
|
-
chat, or jump into the browser editor and shape it yourself.
|
|
225
|
-
3. **Show a teammate something on your screen.** Open the browser
|
|
226
|
-
editor or share your local dev server through a normal HTTPS
|
|
227
|
-
link. No exposing localhost, no copy-pasting IPs, no "screenshare
|
|
228
|
-
real quick."
|
|
229
|
-
|
|
230
|
-
## Working as a team
|
|
231
|
-
|
|
232
|
-
This is what makes Linzumi different from running an AI coding agent
|
|
233
|
-
alone in a terminal.
|
|
57
|
+
## Trusted folders
|
|
234
58
|
|
|
235
|
-
|
|
236
|
-
`linzumi start` on shows up as a Commander. From any channel, you can
|
|
237
|
-
see how many of your Commanders are reachable right now and which ones
|
|
238
|
-
are listening on that channel.
|
|
239
|
-
|
|
240
|
-
- **Put Codex on the job from the channel.** Pick an available Commander
|
|
241
|
-
and a trusted folder from the channel menu, type what Codex should
|
|
242
|
-
work on, hit start. Linzumi asks that Commander to attach a fresh Codex
|
|
243
|
-
with the folder and settings you picked.
|
|
244
|
-
|
|
245
|
-
- **One Codex per thread.** Once a Linzumi Codex session picks up a
|
|
246
|
-
thread, it owns the thread — no second Codex can step in and trample
|
|
247
|
-
the work. The lock holds for the life of the thread.
|
|
248
|
-
|
|
249
|
-
- **Browse what your team's been up to.** Open the Commanders dropdown
|
|
250
|
-
to see, across every device, the most recently active threads with
|
|
251
|
-
short AI-written summaries. Jump in and keep working.
|
|
252
|
-
|
|
253
|
-
- **Chat with humans without waking Codex.** Start a message with `&`
|
|
254
|
-
and Codex won't see it. Side conversations live in the same thread
|
|
255
|
-
without nudging the agent.
|
|
256
|
-
|
|
257
|
-
## Trusted folders — the security model
|
|
258
|
-
|
|
259
|
-
Linzumi only runs Codex or opens the editor inside folders you've
|
|
260
|
-
explicitly trusted. The trust list lives at `~/.linzumi/config.json`.
|
|
59
|
+
Linzumi only edits inside folders you've explicitly trusted.
|
|
261
60
|
|
|
262
61
|
```bash
|
|
263
|
-
linzumi paths list
|
|
264
62
|
linzumi paths add ~/code/my-app
|
|
265
|
-
linzumi paths remove ~/code/my-app
|
|
266
63
|
```
|
|
267
64
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
`--allowed-cwd <paths>` for a one-off comma-separated override.
|
|
271
|
-
|
|
272
|
-
There's no credential escalation: Linzumi only asks the Commander to start
|
|
273
|
-
Codex or the editor inside trusted folders. Those processes still run
|
|
274
|
-
with your shell's operating-system privileges, so choose trusted folders
|
|
275
|
-
intentionally. Every action is auditable from the thread.
|
|
276
|
-
|
|
277
|
-
## When something looks wrong
|
|
65
|
+
The trust list lives at `~/.linzumi/config.json`. The bootstrap agent
|
|
66
|
+
adds `/tmp/hello_linzumi` for you on first run.
|
|
278
67
|
|
|
279
|
-
|
|
280
|
-
on `PATH`. Run `npm prefix -g`; add the printed path's `bin` folder
|
|
281
|
-
to your shell.
|
|
282
|
-
- **`codex: command not found`** — install the Codex CLI, or pass
|
|
283
|
-
`--codex-bin <path>` to `linzumi start`.
|
|
284
|
-
- **Browser sign-in opens but never returns to the CLI.** Your browser
|
|
285
|
-
can't reach the address the CLI is listening on. Pass
|
|
286
|
-
`--oauth-callback-host <ip-or-host-your-browser-can-reach>`.
|
|
287
|
-
- **Browser editor never says it's ready.** Rerun `linzumi start` and
|
|
288
|
-
watch the console for the editor download step. The very first
|
|
289
|
-
launch on a slow network can take a minute or two.
|
|
290
|
-
- **Collaboration looks off in Safari.** Switch to Chromium for now.
|
|
291
|
-
- **Anything else.** Post in your Linzumi support channel — we read it.
|
|
68
|
+
---
|
|
292
69
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
```bash
|
|
296
|
-
npm install -g @linzumi/cli@0.0.32-beta
|
|
297
|
-
linzumi --version
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
## Advanced
|
|
301
|
-
|
|
302
|
-
Most people never need anything in this section.
|
|
303
|
-
|
|
304
|
-
### Lower-level connect
|
|
305
|
-
|
|
306
|
-
`linzumi start` is what you want almost every time. The lower-level
|
|
307
|
-
form is useful when you already know your workspace and channel:
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
linzumi connect \
|
|
311
|
-
--workspace <your-workspace> \
|
|
312
|
-
--channel <your-channel> \
|
|
313
|
-
--cwd ~/code/my-app
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
### All the flags
|
|
317
|
-
|
|
318
|
-
```text
|
|
319
|
-
--agent-token-file <path> Bootstrap token cache for `linzumi commander`
|
|
320
|
-
--oauth-callback-host <ip> Sign-in callback host your browser can reach
|
|
321
|
-
--codex-bin <path> Codex executable, default `codex`
|
|
322
|
-
--model <name> Model requested for Codex sessions and labelled in Linzumi
|
|
323
|
-
--reasoning-effort <value> Reasoning effort requested for Codex sessions and labelled in Linzumi
|
|
324
|
-
--fast Advertise this Commander as low-latency in the workspace
|
|
325
|
-
--forward-port <ports> Comma-separated local TCP ports Linzumi may share as authenticated previews
|
|
326
|
-
--allowed-cwd <paths> Override ~/.linzumi/config.json with comma-separated trusted roots
|
|
327
|
-
--log-file <path> JSONL Commander event log
|
|
328
|
-
```
|
|
70
|
+
*Slack-shaped on the surface. A multiplayer compiler underneath.*
|
|
329
71
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
`--stream-flush-ms`, and `--token` are also accepted; `linzumi
|
|
333
|
-
--help` shows them all with brief descriptions. They exist for
|
|
334
|
-
multi-Commander orchestration, custom Codex deployments, and CI
|
|
335
|
-
scenarios — not for everyday use.
|
|
72
|
+
[linzumi.com](https://linzumi.com) ·
|
|
73
|
+
[agents.md](https://linzumi.com/agents.md) ·
|