myrlin-workbook 0.8.3 → 0.8.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 +519 -482
- package/package.json +1 -1
- package/src/core/td-adapter.js +191 -0
- package/src/state/store.js +1005 -1001
- package/src/web/pty-manager.js +42 -6
- package/src/web/public/app.js +696 -1
- package/src/web/public/index.html +54 -3
- package/src/web/public/styles.css +8924 -8667
- package/src/web/server.js +286 -9
package/README.md
CHANGED
|
@@ -1,482 +1,519 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="docs/images/logo-animated.svg" alt="Myrlin's Workbook" width="250">
|
|
3
|
-
</p>
|
|
4
|
-
<h1 align="center">Myrlin's Workbook</h1>
|
|
5
|
-
<p align="center">
|
|
6
|
-
<a href="https://www.npmjs.com/package/myrlin-workbook"><img src="https://img.shields.io/npm/v/myrlin-workbook.svg?style=flat-square" alt="npm version"></a>
|
|
7
|
-
<a href="https://www.npmjs.com/package/myrlin-workbook"><img src="https://img.shields.io/npm/dm/myrlin-workbook.svg?style=flat-square" alt="npm downloads"></a>
|
|
8
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg?style=flat-square" alt="License: AGPL-3.0"></a>
|
|
9
|
-
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node.js-18%2B-green.svg?style=flat-square" alt="Node.js 18+"></a>
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<p align="center">
|
|
13
|
-
Open-source workspace manager for Claude Code - multi-pane embedded terminals, kanban task board with PR automation, cost tracking, conflict detection, per-project docs, session templates, model orchestration, 13 themes, <a href="#full-feature-list">and more</a>. Discovers every session you've ever run, organizes them into projects with focused work contexts. Runs in your browser, everything stays local.
|
|
14
|
-
</p>
|
|
15
|
-
|
|
16
|
-
<p align="center">
|
|
17
|
-
<img src="docs/images/hero-demo.gif" alt="4-pane terminal grid with live sessions" width="800">
|
|
18
|
-
</p>
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Quick Start
|
|
23
|
-
|
|
24
|
-
### Try it now
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
npx myrlin-workbook # Opens browser, discovers your real Claude sessions
|
|
28
|
-
npx myrlin-workbook --demo # Opens browser with sample data (no real sessions needed)
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Install from source
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
git clone https://github.com/therealarthur/myrlin-workbook.git
|
|
35
|
-
cd myrlin-workbook
|
|
36
|
-
npm install
|
|
37
|
-
npm run gui # Real sessions
|
|
38
|
-
npm run gui:demo # Sample data
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Password
|
|
42
|
-
|
|
43
|
-
On first launch, a random password is generated and saved to `~/.myrlin/config.json`. This password **persists across updates, reinstalls, and npx cache clears** — you'll always use the same password.
|
|
44
|
-
|
|
45
|
-
To set your own:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# Option 1: Edit the config file (recommended — persists forever)
|
|
49
|
-
# ~/.myrlin/config.json → { "password": "your-password-here" }
|
|
50
|
-
|
|
51
|
-
# Option 2: Environment variable (overrides config, per-session)
|
|
52
|
-
CWM_PASSWORD=mypassword npx myrlin-workbook
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Password lookup order: `CWM_PASSWORD` env var > `~/.myrlin/config.json` > `./state/config.json` > auto-generate.
|
|
56
|
-
|
|
57
|
-
### Prerequisites
|
|
58
|
-
|
|
59
|
-
- **Node.js 18+** ([download](https://nodejs.org))
|
|
60
|
-
- **C++ Build Tools** (required by `node-pty` for real terminal emulation):
|
|
61
|
-
- **Windows**: [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) with "Desktop development with C++" workload
|
|
62
|
-
- **macOS**: `xcode-select --install`
|
|
63
|
-
- **Linux**: `sudo apt install build-essential python3`
|
|
64
|
-
|
|
65
|
-
> **`npm install` fails?** You're missing the C++ build tools above. See [Troubleshooting](#troubleshooting).
|
|
66
|
-
|
|
67
|
-
### Run Modes
|
|
68
|
-
|
|
69
|
-
| Command | Description |
|
|
70
|
-
|---------|-------------|
|
|
71
|
-
| `npx myrlin-workbook` | Web GUI via npx |
|
|
72
|
-
| `npm run gui` | Web GUI (localhost:3456) |
|
|
73
|
-
| `npm run gui:demo` | Web GUI with sample data |
|
|
74
|
-
| `npm start` | TUI mode (terminal-only, blessed) |
|
|
75
|
-
| `npm run demo` | TUI with sample data |
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Why
|
|
80
|
-
|
|
81
|
-
I use Claude Code daily and had a growing list of pet peeves. Can't name sessions, so `/resume` is just picking from a list of IDs. No shift+enter for multiline. If you have a few sessions going at once, the terminal window juggling gets old fast. PC restarts and you have to reopen everything from scratch. No idea what you're spending.
|
|
82
|
-
|
|
83
|
-
Got fed up and built something for it. Myrlin scans `~/.claude/projects/`, finds every session you've ever run, and you organize them into projects with embedded terminals, docs, and cost tracking. Everything runs locally, no cloud, no telemetry.
|
|
84
|
-
|
|
85
|
-
### Compared to other tools
|
|
86
|
-
|
|
87
|
-
There are good tools in this space. I tried them. Here's where Myrlin fits:
|
|
88
|
-
|
|
89
|
-
| Feature | Myrlin | [ClaudeCodeUI](https://github.com/siteboon/claudecodeui) | [Opcode](https://github.com/winfunc/opcode) | [Claude Squad](https://github.com/smtg-ai/claude-squad) |
|
|
90
|
-
|---------|--------|-------------|--------|-------------|
|
|
91
|
-
| Cost tracking | Yes | No | Yes | No |
|
|
92
|
-
| Costs dashboard | Yes | No | Yes | No |
|
|
93
|
-
| Session discovery | Yes | Yes | No | No |
|
|
94
|
-
| Session manager overlay | Yes | No | No | No |
|
|
95
|
-
| Project docs/kanban | Yes | No | No | No |
|
|
96
|
-
| Themes | 13 (Catppuccin, Nord, Dracula, etc.) | No | No | No |
|
|
97
|
-
| Session templates | Yes | No | No | No |
|
|
98
|
-
| Conflict detection | Yes | No | No | No |
|
|
99
|
-
| Kanban task board | Yes (5 columns + DnD) | No | No | Yes (basic) |
|
|
100
|
-
| PR automation | Yes (AI descriptions + gh) | No | No | No |
|
|
101
|
-
| Model orchestration | Yes (per stage) | No | No | No |
|
|
102
|
-
| Embedded terminals | 4-pane grid | Single | No | No |
|
|
103
|
-
| Tab grouping | Yes | No | No | No |
|
|
104
|
-
| Windows native | Yes | Buggy | Yes (desktop) | No (tmux) |
|
|
105
|
-
| TUI mode | Yes | No | No | No |
|
|
106
|
-
| Multi-agent | Claude only | Claude+Cursor+Codex | Claude only | 5+ tools |
|
|
107
|
-
| File explorer | No | Yes | No | No |
|
|
108
|
-
| npx install | Yes | Yes | No | No |
|
|
109
|
-
| Build step required | None | Vite | Tauri | None |
|
|
110
|
-
|
|
111
|
-
**What those tools do better:** ClaudeCodeUI has a file explorer and multi-agent support. Opcode is a polished desktop app with 20k stars. Claude Squad supports 5+ AI tools. Myrlin is project-first with cost tracking and per-project docs. Different approach to the same problem.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Features
|
|
116
|
-
|
|
117
|
-
### Cost Tracking
|
|
118
|
-
|
|
119
|
-
Per-session and per-workspace cost breakdown. Parses Claude's JSONL usage data, applies model-aware pricing (Opus, Sonnet, Haiku), shows input/output/cache tokens. Know exactly what you're spending.
|
|
120
|
-
|
|
121
|
-
### Session Discovery
|
|
122
|
-
|
|
123
|
-
- Scans `~/.claude/projects/` and finds all existing Claude sessions
|
|
124
|
-
- Shows project directory, session count, size, last active
|
|
125
|
-
- Auto-titles sessions from conversation content
|
|
126
|
-
- Import sessions into workspaces with one click
|
|
127
|
-
|
|
128
|
-
### Projects, Focuses & Sessions
|
|
129
|
-
|
|
130
|
-

|
|
131
|
-
|
|
132
|
-
Myrlin uses a 3-level organizational hierarchy:
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
Category ("Side Projects", "Work") -- optional top-level grouping
|
|
136
|
-
Project ("Myrlin Workbook") -- the codebase / main container
|
|
137
|
-
Focus ("UI Polish", "Backend") -- sub-groups within a project
|
|
138
|
-
Sessions -- Claude Code conversations
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
- **Categories** group related projects (e.g., "Work" vs "Side Projects")
|
|
142
|
-
- **Projects** are the main containers -- one per codebase, with color coding and docs
|
|
143
|
-
- **Focuses** are sub-groups within a project for different areas of work
|
|
144
|
-
- Drag-and-drop sessions between projects and into terminal panes
|
|
145
|
-
- Tab groups are free-form -- mix sessions from any project in any tab
|
|
146
|
-
- State persists to disk. Survives crashes and restarts
|
|
147
|
-
- Auto-recovery on startup (detects orphaned sessions, restores state)
|
|
148
|
-
|
|
149
|
-
### Embedded Terminals
|
|
150
|
-
|
|
151
|
-

|
|
152
|
-
|
|
153
|
-
- 4-pane terminal grid (xterm.js + node-pty + WebSocket). Real PTY, not fake.
|
|
154
|
-
- Tab groups: named sets of terminal panes ("Research", "Debug"), switchable and persistent
|
|
155
|
-
- PTY sessions survive page refresh with scrollback replay on reconnect
|
|
156
|
-
- Model selection (Opus, Sonnet, Haiku) and session resume
|
|
157
|
-
- Right-click context menu with Copy, Stop, Restart, Model picker
|
|
158
|
-
|
|
159
|
-
### Per-Project Docs & Feature Board
|
|
160
|
-
|
|
161
|
-

|
|
162
|
-
|
|
163
|
-

|
|
164
|
-
|
|
165
|
-
- Notes, Goals, Tasks, Rules, and Roadmap sections per project
|
|
166
|
-
- Kanban-style feature board (Planned -> Active -> Review -> Done)
|
|
167
|
-
- Markdown editor with formatting toolbar
|
|
168
|
-
- AI Insights tab: auto-generated summaries of project sessions
|
|
169
|
-
|
|
170
|
-

|
|
171
|
-
|
|
172
|
-
###
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
###
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
###
|
|
200
|
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
|
|
206
|
-
###
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
- **
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
- **
|
|
250
|
-
- **
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
- **
|
|
255
|
-
- **
|
|
256
|
-
- **
|
|
257
|
-
- **
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
- **
|
|
264
|
-
- **
|
|
265
|
-
- **
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
- **
|
|
271
|
-
- **
|
|
272
|
-
- **
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
- **
|
|
279
|
-
- **Kanban
|
|
280
|
-
- **
|
|
281
|
-
- **
|
|
282
|
-
- **
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
- **
|
|
287
|
-
- **
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
- **
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
- **
|
|
297
|
-
- **
|
|
298
|
-
- **
|
|
299
|
-
- **
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
- **
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|--
|
|
349
|
-
|
|
|
350
|
-
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
|
366
|
-
|
|
367
|
-
|--
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
**
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
- **
|
|
449
|
-
- **
|
|
450
|
-
- **
|
|
451
|
-
- **
|
|
452
|
-
- **
|
|
453
|
-
- **
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
-
|
|
461
|
-
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/images/logo-animated.svg" alt="Myrlin's Workbook" width="250">
|
|
3
|
+
</p>
|
|
4
|
+
<h1 align="center">Myrlin's Workbook</h1>
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/myrlin-workbook"><img src="https://img.shields.io/npm/v/myrlin-workbook.svg?style=flat-square" alt="npm version"></a>
|
|
7
|
+
<a href="https://www.npmjs.com/package/myrlin-workbook"><img src="https://img.shields.io/npm/dm/myrlin-workbook.svg?style=flat-square" alt="npm downloads"></a>
|
|
8
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg?style=flat-square" alt="License: AGPL-3.0"></a>
|
|
9
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node.js-18%2B-green.svg?style=flat-square" alt="Node.js 18+"></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
Open-source workspace manager for Claude Code - multi-pane embedded terminals, kanban task board with PR automation, cost tracking, conflict detection, per-project docs, session templates, model orchestration, 13 themes, <a href="#full-feature-list">and more</a>. Discovers every session you've ever run, organizes them into projects with focused work contexts. Runs in your browser, everything stays local.
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<img src="docs/images/hero-demo.gif" alt="4-pane terminal grid with live sessions" width="800">
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### Try it now
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx myrlin-workbook # Opens browser, discovers your real Claude sessions
|
|
28
|
+
npx myrlin-workbook --demo # Opens browser with sample data (no real sessions needed)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Install from source
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git clone https://github.com/therealarthur/myrlin-workbook.git
|
|
35
|
+
cd myrlin-workbook
|
|
36
|
+
npm install
|
|
37
|
+
npm run gui # Real sessions
|
|
38
|
+
npm run gui:demo # Sample data
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Password
|
|
42
|
+
|
|
43
|
+
On first launch, a random password is generated and saved to `~/.myrlin/config.json`. This password **persists across updates, reinstalls, and npx cache clears** — you'll always use the same password.
|
|
44
|
+
|
|
45
|
+
To set your own:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Option 1: Edit the config file (recommended — persists forever)
|
|
49
|
+
# ~/.myrlin/config.json → { "password": "your-password-here" }
|
|
50
|
+
|
|
51
|
+
# Option 2: Environment variable (overrides config, per-session)
|
|
52
|
+
CWM_PASSWORD=mypassword npx myrlin-workbook
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Password lookup order: `CWM_PASSWORD` env var > `~/.myrlin/config.json` > `./state/config.json` > auto-generate.
|
|
56
|
+
|
|
57
|
+
### Prerequisites
|
|
58
|
+
|
|
59
|
+
- **Node.js 18+** ([download](https://nodejs.org))
|
|
60
|
+
- **C++ Build Tools** (required by `node-pty` for real terminal emulation):
|
|
61
|
+
- **Windows**: [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) with "Desktop development with C++" workload
|
|
62
|
+
- **macOS**: `xcode-select --install`
|
|
63
|
+
- **Linux**: `sudo apt install build-essential python3`
|
|
64
|
+
|
|
65
|
+
> **`npm install` fails?** You're missing the C++ build tools above. See [Troubleshooting](#troubleshooting).
|
|
66
|
+
|
|
67
|
+
### Run Modes
|
|
68
|
+
|
|
69
|
+
| Command | Description |
|
|
70
|
+
|---------|-------------|
|
|
71
|
+
| `npx myrlin-workbook` | Web GUI via npx |
|
|
72
|
+
| `npm run gui` | Web GUI (localhost:3456) |
|
|
73
|
+
| `npm run gui:demo` | Web GUI with sample data |
|
|
74
|
+
| `npm start` | TUI mode (terminal-only, blessed) |
|
|
75
|
+
| `npm run demo` | TUI with sample data |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Why
|
|
80
|
+
|
|
81
|
+
I use Claude Code daily and had a growing list of pet peeves. Can't name sessions, so `/resume` is just picking from a list of IDs. No shift+enter for multiline. If you have a few sessions going at once, the terminal window juggling gets old fast. PC restarts and you have to reopen everything from scratch. No idea what you're spending.
|
|
82
|
+
|
|
83
|
+
Got fed up and built something for it. Myrlin scans `~/.claude/projects/`, finds every session you've ever run, and you organize them into projects with embedded terminals, docs, and cost tracking. Everything runs locally, no cloud, no telemetry.
|
|
84
|
+
|
|
85
|
+
### Compared to other tools
|
|
86
|
+
|
|
87
|
+
There are good tools in this space. I tried them. Here's where Myrlin fits:
|
|
88
|
+
|
|
89
|
+
| Feature | Myrlin | [ClaudeCodeUI](https://github.com/siteboon/claudecodeui) | [Opcode](https://github.com/winfunc/opcode) | [Claude Squad](https://github.com/smtg-ai/claude-squad) |
|
|
90
|
+
|---------|--------|-------------|--------|-------------|
|
|
91
|
+
| Cost tracking | Yes | No | Yes | No |
|
|
92
|
+
| Costs dashboard | Yes | No | Yes | No |
|
|
93
|
+
| Session discovery | Yes | Yes | No | No |
|
|
94
|
+
| Session manager overlay | Yes | No | No | No |
|
|
95
|
+
| Project docs/kanban | Yes | No | No | No |
|
|
96
|
+
| Themes | 13 (Catppuccin, Nord, Dracula, etc.) | No | No | No |
|
|
97
|
+
| Session templates | Yes | No | No | No |
|
|
98
|
+
| Conflict detection | Yes | No | No | No |
|
|
99
|
+
| Kanban task board | Yes (5 columns + DnD) | No | No | Yes (basic) |
|
|
100
|
+
| PR automation | Yes (AI descriptions + gh) | No | No | No |
|
|
101
|
+
| Model orchestration | Yes (per stage) | No | No | No |
|
|
102
|
+
| Embedded terminals | 4-pane grid | Single | No | No |
|
|
103
|
+
| Tab grouping | Yes | No | No | No |
|
|
104
|
+
| Windows native | Yes | Buggy | Yes (desktop) | No (tmux) |
|
|
105
|
+
| TUI mode | Yes | No | No | No |
|
|
106
|
+
| Multi-agent | Claude only | Claude+Cursor+Codex | Claude only | 5+ tools |
|
|
107
|
+
| File explorer | No | Yes | No | No |
|
|
108
|
+
| npx install | Yes | Yes | No | No |
|
|
109
|
+
| Build step required | None | Vite | Tauri | None |
|
|
110
|
+
|
|
111
|
+
**What those tools do better:** ClaudeCodeUI has a file explorer and multi-agent support. Opcode is a polished desktop app with 20k stars. Claude Squad supports 5+ AI tools. Myrlin is project-first with cost tracking and per-project docs. Different approach to the same problem.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Features
|
|
116
|
+
|
|
117
|
+
### Cost Tracking
|
|
118
|
+
|
|
119
|
+
Per-session and per-workspace cost breakdown. Parses Claude's JSONL usage data, applies model-aware pricing (Opus, Sonnet, Haiku), shows input/output/cache tokens. Know exactly what you're spending.
|
|
120
|
+
|
|
121
|
+
### Session Discovery
|
|
122
|
+
|
|
123
|
+
- Scans `~/.claude/projects/` and finds all existing Claude sessions
|
|
124
|
+
- Shows project directory, session count, size, last active
|
|
125
|
+
- Auto-titles sessions from conversation content
|
|
126
|
+
- Import sessions into workspaces with one click
|
|
127
|
+
|
|
128
|
+
### Projects, Focuses & Sessions
|
|
129
|
+
|
|
130
|
+

|
|
131
|
+
|
|
132
|
+
Myrlin uses a 3-level organizational hierarchy:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Category ("Side Projects", "Work") -- optional top-level grouping
|
|
136
|
+
Project ("Myrlin Workbook") -- the codebase / main container
|
|
137
|
+
Focus ("UI Polish", "Backend") -- sub-groups within a project
|
|
138
|
+
Sessions -- Claude Code conversations
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- **Categories** group related projects (e.g., "Work" vs "Side Projects")
|
|
142
|
+
- **Projects** are the main containers -- one per codebase, with color coding and docs
|
|
143
|
+
- **Focuses** are sub-groups within a project for different areas of work
|
|
144
|
+
- Drag-and-drop sessions between projects and into terminal panes
|
|
145
|
+
- Tab groups are free-form -- mix sessions from any project in any tab
|
|
146
|
+
- State persists to disk. Survives crashes and restarts
|
|
147
|
+
- Auto-recovery on startup (detects orphaned sessions, restores state)
|
|
148
|
+
|
|
149
|
+
### Embedded Terminals
|
|
150
|
+
|
|
151
|
+

|
|
152
|
+
|
|
153
|
+
- 4-pane terminal grid (xterm.js + node-pty + WebSocket). Real PTY, not fake.
|
|
154
|
+
- Tab groups: named sets of terminal panes ("Research", "Debug"), switchable and persistent
|
|
155
|
+
- PTY sessions survive page refresh with scrollback replay on reconnect
|
|
156
|
+
- Model selection (Opus, Sonnet, Haiku) and session resume
|
|
157
|
+
- Right-click context menu with Copy, Stop, Restart, Model picker
|
|
158
|
+
|
|
159
|
+
### Per-Project Docs & Feature Board
|
|
160
|
+
|
|
161
|
+

|
|
162
|
+
|
|
163
|
+

|
|
164
|
+
|
|
165
|
+
- Notes, Goals, Tasks, Rules, and Roadmap sections per project
|
|
166
|
+
- Kanban-style feature board (Planned -> Active -> Review -> Done)
|
|
167
|
+
- Markdown editor with formatting toolbar
|
|
168
|
+
- AI Insights tab: auto-generated summaries of project sessions
|
|
169
|
+
|
|
170
|
+

|
|
171
|
+
|
|
172
|
+
### td Integration (Optional)
|
|
173
|
+
|
|
174
|
+
Myrlin optionally integrates with [td](https://github.com/marcus/td), a minimalist CLI task manager built for AI agent workflows. When `td` is installed and initialized in a repo, Myrlin surfaces its issues directly in the docs panel and sidebar — no context-switching to the terminal.
|
|
175
|
+
|
|
176
|
+
**Install td:**
|
|
177
|
+
```bash
|
|
178
|
+
go install github.com/marcus/td@latest
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Enable:** Settings → td Task Management → toggle on. Set the binary path if `td` isn't on your PATH (e.g. `~/.local/bin/td` or `~/go/bin/td`).
|
|
182
|
+
|
|
183
|
+
**Worktree promotion:** Click "→ Worktree" on any td issue to create a git worktree + Claude session in one click, with the issue description passed as the opening prompt to Claude.
|
|
184
|
+
|
|
185
|
+
See [Why td alongside the built-in kanban?](#td-vs-built-in-kanban) for when this makes sense.
|
|
186
|
+
|
|
187
|
+
### Session Templates
|
|
188
|
+
|
|
189
|
+
Save your common launch configurations. Pre-set working directory, model, flags, and spawn options. One click to launch a new session from a template.
|
|
190
|
+
|
|
191
|
+
### Conflict Detection
|
|
192
|
+
|
|
193
|
+
Real-time warnings when two or more running sessions are editing the same files. Runs `git status` across active sessions and cross-references modified files. Prevents you from stepping on your own work.
|
|
194
|
+
|
|
195
|
+
### Quick Switcher
|
|
196
|
+
|
|
197
|
+
`Ctrl+K` / `Cmd+K` opens a fuzzy search across all sessions and projects. Jump to anything instantly.
|
|
198
|
+
|
|
199
|
+
### Git & Worktree Management
|
|
200
|
+
|
|
201
|
+
- Full git status per project: current branch, dirty/clean, ahead/behind remote
|
|
202
|
+
- Branch listing and worktree CRUD
|
|
203
|
+
- **"New Feature Session"**: right-click a project -> creates a branch + worktree + Claude session in one click
|
|
204
|
+
- Branch badges on session rows
|
|
205
|
+
|
|
206
|
+
### Themes
|
|
207
|
+
|
|
208
|
+

|
|
209
|
+
|
|
210
|
+

|
|
211
|
+
|
|
212
|
+
13 themes organized into Dark and Light sections. 4 official [Catppuccin](https://github.com/catppuccin/catppuccin) (Mocha, Macchiato, Frappe, Latte), 3 community favorites (Nord, Dracula, Tokyo Night), 4 custom flavors (Cherry, Ocean, Amber, Mint), and 2 light alternatives (Rose Pine Dawn, Gruvbox Light). Toggle from the header dropdown. Choice persists in localStorage.
|
|
213
|
+
|
|
214
|
+
### Port Detection & Resource Monitoring
|
|
215
|
+
|
|
216
|
+
- Automatic port detection for running sessions (PowerShell on Windows, lsof on Unix)
|
|
217
|
+
- Per-session CPU and memory tracking
|
|
218
|
+
- System overview (CPU, RAM, uptime)
|
|
219
|
+
- Stop, restart, or kill sessions from the Resources tab
|
|
220
|
+
|
|
221
|
+
### Mobile
|
|
222
|
+
|
|
223
|
+
<p align="center">
|
|
224
|
+
<img src="docs/images/mobile-dashboard.png" alt="Mobile workspace view" height="400">
|
|
225
|
+
|
|
226
|
+
<img src="docs/images/mobile-terminal.png" alt="Mobile terminal with toolbar" height="400">
|
|
227
|
+
</p>
|
|
228
|
+
|
|
229
|
+
- Responsive layout with bottom tab bar
|
|
230
|
+
- Touch gestures: swipe between terminal panes, edge swipe for sidebar, long-press for context menus
|
|
231
|
+
- Mobile terminal toolbar: keyboard toggle, Enter, Tab, Ctrl+C, Ctrl+D, Esc, arrows, Copy, Upload
|
|
232
|
+
- Keyboard-aware viewport resizing (terminal stays visible above soft keyboard)
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Full Feature List
|
|
237
|
+
|
|
238
|
+
A comprehensive list of everything Myrlin Workbook offers today.
|
|
239
|
+
|
|
240
|
+
### Core
|
|
241
|
+
|
|
242
|
+
- **Session discovery** - scans `~/.claude/projects/`, finds every session you've ever run
|
|
243
|
+
- **Project management** - 3-level hierarchy (Category > Project > Focus), color coding, drag-and-drop
|
|
244
|
+
- **Auto-recovery** - restores state after crash or restart, detects orphaned sessions
|
|
245
|
+
- **State persistence** - JSON on disk, survives everything
|
|
246
|
+
|
|
247
|
+
### Terminals
|
|
248
|
+
|
|
249
|
+
- **4-pane terminal grid** - xterm.js + node-pty + WebSocket, real PTY (not fake)
|
|
250
|
+
- **Tab groups** - named sets of panes ("Research", "Debug"), switchable and persistent
|
|
251
|
+
- **Tab close buttons** - with live session kill confirmation dialog
|
|
252
|
+
- **Drag-and-hold tab grouping** - hold 1.2s over another tab to create a folder
|
|
253
|
+
- **Cross-tab terminal pane dragging** - drag sessions between panes freely
|
|
254
|
+
- **PTY sessions survive page refresh** - scrollback replay on reconnect
|
|
255
|
+
- **Model selection** - Opus, Sonnet, Haiku per terminal
|
|
256
|
+
- **Right-click context menu** - Copy, Stop, Restart, Model picker
|
|
257
|
+
- **Bracketed paste mode** - proper paste handling in terminal sessions
|
|
258
|
+
|
|
259
|
+
### Cost Tracking
|
|
260
|
+
|
|
261
|
+
- **Per-session and per-project cost breakdown** - input/output/cache tokens
|
|
262
|
+
- **Costs dashboard tab** - period selector (Day / Week / Month / All)
|
|
263
|
+
- **SVG timeline chart** - visual spend over time, model breakdown
|
|
264
|
+
- **Sortable session table** - rank sessions by cost, tokens, or duration
|
|
265
|
+
- **Parses JSONL usage data** - model-aware pricing (Opus, Sonnet, Haiku)
|
|
266
|
+
|
|
267
|
+
### Session Management
|
|
268
|
+
|
|
269
|
+
- **Session manager overlay** - click header stats to open, full session control
|
|
270
|
+
- **Mass selection and batch stop** - select multiple sessions, stop them all at once
|
|
271
|
+
- **Filter** - All / Running / Stopped quick filters
|
|
272
|
+
- **One-click terminal open** - from session manager rows
|
|
273
|
+
- **Session templates** - save launch configs (directory, model, flags), one-click launch
|
|
274
|
+
- **Quick switcher** - `Ctrl+K` / `Cmd+K` fuzzy search across sessions and projects
|
|
275
|
+
|
|
276
|
+
### Docs & Planning
|
|
277
|
+
|
|
278
|
+
- **Per-project docs** - Notes, Goals, Tasks, Rules, Roadmap sections
|
|
279
|
+
- **Kanban-style feature board** - Planned, Active, Review, Done columns
|
|
280
|
+
- **Markdown editor** - with formatting toolbar
|
|
281
|
+
- **AI Insights tab** - auto-generated summaries of project sessions
|
|
282
|
+
- **td integration** (optional) - surface [td](https://github.com/marcus/td) issues in the docs panel and sidebar; promote any issue to a git worktree + Claude session in one click
|
|
283
|
+
|
|
284
|
+
### Conflict Detection
|
|
285
|
+
|
|
286
|
+
- **Real-time file conflict warnings** - detects when two+ sessions edit the same files
|
|
287
|
+
- **Conflict center UI** - per-file breakdown with session attribution
|
|
288
|
+
- **Click session chips** - jump directly to the terminal pane for that session
|
|
289
|
+
|
|
290
|
+
### Git, Worktree Tasks & PR Automation
|
|
291
|
+
|
|
292
|
+
- **Git status per project** - current branch, dirty/clean, ahead/behind remote
|
|
293
|
+
- **Branch listing and worktree CRUD** - create, switch, delete from the UI
|
|
294
|
+
- **"New Feature Session"** - creates branch + worktree + Claude session in one click
|
|
295
|
+
- **Kanban task board** - 5-column (Backlog, Planning, Running, Review, Done) drag-and-drop workflow
|
|
296
|
+
- **PR automation** - create GitHub PRs via `gh` CLI, AI-generated descriptions from diffs
|
|
297
|
+
- **PR state tracking** - badges on cards (open/draft/merged/closed), auto-advance on merge
|
|
298
|
+
- **Multi-model orchestration** - assign models per task, default model per workflow stage
|
|
299
|
+
- **Task dependencies** - blocking relationships with visual indicators on cards
|
|
300
|
+
- **Cross-cutting tags** - color-coded tag badges, searchable, editable via context menu
|
|
301
|
+
- **Concurrent task limits** - configurable max (1-8), enforced on create and column drag
|
|
302
|
+
- **Worktree init hooks** - auto-copy files and run scripts after worktree creation
|
|
303
|
+
- **Branch badges** - shown on session rows
|
|
304
|
+
|
|
305
|
+
### Themes
|
|
306
|
+
|
|
307
|
+
- **13 themes** - 4 Catppuccin (Mocha, Macchiato, Frappe, Latte) + Nord, Dracula, Tokyo Night + Cherry, Ocean, Amber, Mint + Rose Pine Dawn, Gruvbox Light
|
|
308
|
+
- **Header dropdown toggle** - choice persists in localStorage
|
|
309
|
+
|
|
310
|
+
### Resources & Monitoring
|
|
311
|
+
|
|
312
|
+
- **Port detection** - automatic discovery for running sessions (PowerShell on Windows, lsof on Unix)
|
|
313
|
+
- **Per-session CPU and memory** - live tracking
|
|
314
|
+
- **System overview** - CPU, RAM, uptime
|
|
315
|
+
- **Stop / restart / kill** - from the Resources tab
|
|
316
|
+
|
|
317
|
+
### Mobile
|
|
318
|
+
|
|
319
|
+
- **Responsive layout** - bottom tab bar on small screens
|
|
320
|
+
- **Touch gestures** - swipe between panes, edge swipe for sidebar, long-press for context menus
|
|
321
|
+
- **Mobile terminal toolbar** - keyboard toggle, Enter, Tab, Ctrl+C, Ctrl+D, Esc, arrows, Copy, Upload
|
|
322
|
+
- **Keyboard-aware viewport** - terminal stays visible above soft keyboard
|
|
323
|
+
|
|
324
|
+
... more to come.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Remote Access
|
|
329
|
+
|
|
330
|
+
Expose your local instance with a Cloudflare tunnel:
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
npm run gui # Start the server
|
|
334
|
+
cloudflared tunnel --url http://localhost:3456 # In another terminal
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Open the URL from any device. All WebSocket terminal connections, SSE streams, and REST API calls route through the tunnel. For a stable URL, see [Cloudflare tunnel docs](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/).
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Architecture
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
Browser (vanilla JS SPA)
|
|
345
|
+
|
|
|
346
|
+
|-- REST API ---------- Express server
|
|
347
|
+
| |-- State store (JSON + EventEmitter)
|
|
348
|
+
| |-- Session manager (launch/stop/restart)
|
|
349
|
+
| |-- Resource monitoring (CPU, RAM, per-PID)
|
|
350
|
+
| +-- Project hierarchy, discovery, docs
|
|
351
|
+
|
|
|
352
|
+
|-- SSE --------------- Real-time updates (store events -> clients)
|
|
353
|
+
|
|
|
354
|
+
+-- WebSocket --------- Terminal I/O (binary frames)
|
|
355
|
+
+-- node-pty -> ConPTY / PTY
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
No React, no build step. Vanilla JS SPA, Express backend. ~24 source files, 42 tests.
|
|
359
|
+
|
|
360
|
+
### Project Structure
|
|
361
|
+
|
|
362
|
+
```
|
|
363
|
+
src/
|
|
364
|
+
|-- state/
|
|
365
|
+
| |-- store.js # Core state (JSON persistence + EventEmitter)
|
|
366
|
+
| +-- docs-manager.js # Per-project markdown docs
|
|
367
|
+
|-- core/
|
|
368
|
+
| |-- session-manager.js # Launch/stop/restart processes
|
|
369
|
+
| |-- workspace-manager.js # Project/Focus CRUD
|
|
370
|
+
| |-- process-tracker.js # PID monitoring
|
|
371
|
+
| |-- recovery.js # Auto-recovery on startup
|
|
372
|
+
| +-- notifications.js # Event-based notifications
|
|
373
|
+
|-- web/
|
|
374
|
+
| |-- server.js # Express API + SSE + resources
|
|
375
|
+
| |-- auth.js # Token auth + rate limiting
|
|
376
|
+
| |-- pty-manager.js # PTY session lifecycle
|
|
377
|
+
| +-- public/
|
|
378
|
+
| |-- index.html # SPA shell
|
|
379
|
+
| |-- app.js # Frontend application
|
|
380
|
+
| |-- styles.css # Catppuccin themes
|
|
381
|
+
| +-- terminal.js # TerminalPane (xterm.js + WebSocket)
|
|
382
|
+
|-- ui/ # TUI mode (blessed)
|
|
383
|
+
|-- index.js # TUI entry point
|
|
384
|
+
+-- gui.js # GUI entry point
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## Configuration
|
|
390
|
+
|
|
391
|
+
### Password
|
|
392
|
+
|
|
393
|
+
Loaded in order:
|
|
394
|
+
1. `CWM_PASSWORD` environment variable
|
|
395
|
+
2. `state/config.json` -> `{ "password": "..." }`
|
|
396
|
+
3. Auto-generated (printed to console, saved to config)
|
|
397
|
+
|
|
398
|
+
### Port
|
|
399
|
+
|
|
400
|
+
Default `3456`. Override with `PORT`:
|
|
401
|
+
|
|
402
|
+
```bash
|
|
403
|
+
PORT=8080 npm run gui
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## Keyboard Shortcuts
|
|
409
|
+
|
|
410
|
+
| Key | Action |
|
|
411
|
+
|-----|--------|
|
|
412
|
+
| `Ctrl+K` / `Cmd+K` | Quick switcher |
|
|
413
|
+
| `Escape` | Close modals / menus |
|
|
414
|
+
| `Ctrl+Enter` | Save in notes editor |
|
|
415
|
+
| Double-click session | Inline rename |
|
|
416
|
+
| Right-click session | Context menu (launch, model, rename, hide) |
|
|
417
|
+
| Right-click project | Context menu (docs, add session, edit, delete) |
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## Troubleshooting
|
|
422
|
+
|
|
423
|
+
### `npm install` fails with node-gyp errors
|
|
424
|
+
`node-pty` needs C++ build tools to compile native bindings. Install the tools listed in [Prerequisites](#prerequisites).
|
|
425
|
+
|
|
426
|
+
**Windows quick fix:**
|
|
427
|
+
```powershell
|
|
428
|
+
npm install -g windows-build-tools
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### `npx myrlin-workbook` hangs on install
|
|
432
|
+
Same issue. node-pty is compiling. If it fails, install the C++ build tools first, then try again.
|
|
433
|
+
|
|
434
|
+
**Still stuck?** Open an [issue](https://github.com/therealarthur/myrlin-workbook/issues) with your full error output and OS version.
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## Roadmap
|
|
439
|
+
|
|
440
|
+
### Next Up: Task Spinoff from Sessions
|
|
441
|
+
|
|
442
|
+
**The killer feature.** Right-click any running Claude session, select "Spinoff Tasks..." and AI extracts actionable tasks from the conversation. Each task gets a pre-filled creation form with context, relevant files, and acceptance criteria. Confirm, and each task spins off to its own worktree branch with a structured context handoff document -- not a raw conversation dump, but a spec (current state, desired state, file inventory, constraints). Tasks appear on the kanban board, run in parallel on isolated branches, and report back with PRs when done.
|
|
443
|
+
|
|
444
|
+
No other tool extracts tasks from a running session's conversation. Cursor spawns agents from issues. Copilot Workspace goes issue-to-PR. Devin works sequentially. Myrlin is the first to let you take an in-progress conversation, break it into parallel autonomous tasks, and orchestrate them from a kanban board -- all with proper context engineering so each agent knows exactly what to build without the parent's full history polluting its context window.
|
|
445
|
+
|
|
446
|
+
### Coming Soon
|
|
447
|
+
|
|
448
|
+
- **Task spinoff from sessions** - right-click -> extract tasks -> parallel worktree agents with structured context handoff
|
|
449
|
+
- **Collapsible sidebar** - toggle for more terminal space
|
|
450
|
+
- **6-pane grid** - smart layouts for 1-6 panes with no dead space
|
|
451
|
+
- **Pane drag-and-drop** - reorder terminal panes by dragging headers
|
|
452
|
+
- **Saveable layouts** - named pane configurations you can switch between
|
|
453
|
+
- **Frosted glass permission prompts** - blur overlay with clickable buttons when Claude asks for input
|
|
454
|
+
- **Per-action cost breakdown** - token usage per tool call, not just session totals
|
|
455
|
+
- **Conflict detection v2** - file-level collision warnings across parallel agents
|
|
456
|
+
- **Multi-provider support** - Claude + Codex + Aider in the same workspace
|
|
457
|
+
|
|
458
|
+
### Recently Shipped (alpha.6 - alpha.12)
|
|
459
|
+
|
|
460
|
+
- **Kanban workflow board** - 5 columns (Backlog, Planning, Running, Review, Done) with drag-and-drop
|
|
461
|
+
- **PR automation** - AI-generated descriptions via `claude --print`, create/track PRs via `gh`, auto-advance on merge
|
|
462
|
+
- **Multi-model orchestration** - default model per stage, auto-assignment on column transitions
|
|
463
|
+
- **Cross-cutting tags** - color-coded tag badges on tasks and sessions, searchable
|
|
464
|
+
- **Agent teams UX** - workflow explanation, stage progress dots, model hints
|
|
465
|
+
- **Task dependencies** - blocking relationships with visual indicators
|
|
466
|
+
- **Concurrent task limits** - configurable max (1-8), enforced on create and drag
|
|
467
|
+
- **Task search** - filter kanban by branch, description, model, status, tags
|
|
468
|
+
- **Live terminal preview** - running task cards show last terminal line
|
|
469
|
+
- **Worktree init hooks** - copy files and run scripts after worktree creation
|
|
470
|
+
|
|
471
|
+
### Previously Shipped
|
|
472
|
+
|
|
473
|
+
- Project hierarchy (Category > Project > Focus > Sessions)
|
|
474
|
+
- 3-pane grid layout, worktree tasks, conflict center, session manager overlay
|
|
475
|
+
- Costs dashboard, tab grouping, session templates, session search
|
|
476
|
+
- 13 themes, cost tracking, feature board, git worktree management
|
|
477
|
+
- Port detection, mobile support, auto-trust dialogs
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## td vs Built-in Kanban
|
|
482
|
+
|
|
483
|
+
Myrlin's kanban board and `td` solve different problems and work well together.
|
|
484
|
+
|
|
485
|
+
| | Myrlin Kanban | td |
|
|
486
|
+
|---|---|---|
|
|
487
|
+
| **Lives in** | Myrlin's state store | `.todos/` directory in the repo |
|
|
488
|
+
| **Follows git?** | No | Yes — committed alongside code |
|
|
489
|
+
| **AI agent access** | Via Myrlin GUI | Via `td` CLI in any terminal |
|
|
490
|
+
| **Session isolation** | No | Yes — implementer can't approve own work |
|
|
491
|
+
| **Handoff structured state** | No | Yes — `td handoff --done / --remaining / --decision` |
|
|
492
|
+
| **Worktree per task** | Yes (Myrlin creates it) | Via Myrlin's "→ Worktree" button |
|
|
493
|
+
| **PR tracking** | Yes (via gh) | No |
|
|
494
|
+
| **Cross-context memory** | No | Yes — designed for AI agent workflows |
|
|
495
|
+
|
|
496
|
+
**Use Myrlin's kanban** to orchestrate worktrees, track PR state, manage dependencies, and coordinate parallel agents at the project level.
|
|
497
|
+
|
|
498
|
+
**Use td** inside those worktrees to track granular sub-tasks, log decisions, and hand off structured context to the next agent session — especially useful when a task spans multiple context windows or requires a review step by a separate session.
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## License
|
|
503
|
+
|
|
504
|
+
**AGPL-3.0.** Use, modify, self-host freely. If you run a modified version as a public service, you must publish source. See [LICENSE](LICENSE).
|
|
505
|
+
|
|
506
|
+
---
|
|
507
|
+
|
|
508
|
+
## Contributing
|
|
509
|
+
|
|
510
|
+
Issues and PRs welcome. No build step. Clone, `npm install`, hack.
|
|
511
|
+
|
|
512
|
+
```bash
|
|
513
|
+
npm test # 42 tests
|
|
514
|
+
npm run gui # Start dev server
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
Built by [Arthur](https://github.com/therealarthur).
|