Myrlin Workbook: one browser workspace for Claude Code and Codex sessions
Open-source workspace manager for AI coding CLIs: Claude Code and ChatGPT Codex in one browser app. Discovers every session on disk, embedded terminals, phone-ready, cost tracking, kanban, docs. Windows, macOS, Linux.
At a glance
- What is it?
- Myrlin Workbook is a local Node server that reads Claude Code and ChatGPT Codex session stores, groups them by project folder, and opens each one in a real terminal in a browser tab. It is for people who already run both CLIs and are tired of juggling terminal windows.
- Who is it for?
- Adopt Myrlin Workbook if you already run Claude Code and Codex on one machine and want their sessions, costs and terminals in a single browser tab; skip it if you need a stable release or a hosted service, since the Codex-capable line is still alpha. Before trusting it with your history, run npx myrlin-workbook --demo and confirm the terminal panes actually start, because node-pty needs C++ build tools and the app boots without them.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem: two CLIs, hundreds of UUID-named conversations
Claude Code and ChatGPT Codex do not know about each other. Each keeps its own history in its own format in its own directory, and the README's motivation section describes the result plainly: a few hundred conversations spread across two CLIs and a dozen project folders, where the only way back to one is to pick a UUID out of a list. Open three at once and you are juggling terminal windows; restart the machine and you reopen everything by hand.
The second half of that problem is scrollback. A coding agent repaints its screen, so the terminal keeps no history. Scroll up in a pane to find what an agent did an hour ago and you hit the top of the buffer. Myrlin Workbook treats that as the core defect, not a missing convenience.
This is a tool for a specific person: someone who runs both CLIs on one machine, wants to keep working in real terminals rather than a chat wrapper, and does not want a hosted service in the middle. The README is explicit that it is not an agent and not a hosted service. There is no sign-up, no cloud and no telemetry, and no model gets called unless you ask for one.
How discovery works: read-only reads of ~/.claude/projects and ~/.codex
Myrlin does not wrap or intercept the CLIs. It reads where they already store data. Claude Code sessions come from `~/.claude/projects`. Codex sessions come from `~/.codex`, including `state_5.sqlite`, which the README says is the same thread store the ChatGPT desktop app lists from, so the folders and sessions shown in Myrlin are the ones that app shows.
The SQLite read goes through an in-memory byte image, so no write handle is ever opened against your session history. A filesystem walk over the rollout JSONL stays as a fallback for machines the desktop app has never run on. Both reads are read-only.
Sessions group by the directory they ran in, with a Recent list at the top and a Discovered section at the bottom for anything on disk you have not filed yet. The All / Claude Code / ChatGPT Codex switcher sits inside that section and filters that list only, which is a narrower behaviour than the label suggests. `Ctrl+K` searches by name.
The terminal is xterm.js over node-pty, so it is a real PTY: ConPTY directly on Windows with no WSL, and the platform's own PTY on macOS and Linux. Wheeling past the top of what a pane has drawn carries on into the recorded conversation, and a drag from the current line up into last hour's output is one continuous selection that `Ctrl+C` copies. `Ctrl+Shift+A` takes the whole document, `Shift+PageUp` pages, `Escape` leaves, and typing anything leaves and types.
Installing Myrlin Workbook and opening a first session
Node 20 or newer is required. The README gives three npx entry points, and the alpha line is the one that covers both providers.
npx myrlin-workbook@alphaThat starts the v1.3 alpha with Claude Code and ChatGPT Codex, the redesigned layout and the phone layout. `npx myrlin-workbook` starts v0.9 stable, which is Claude only and unchanged. If you want to look at the interface before pointing it at real history, the demo flag loads sample data:
npx myrlin-workbook --demoOn first launch a random password is generated and saved to `~/.myrlin/config.json`, where it survives updates, reinstalls and npx cache clears. The server binds to `127.0.0.1` by default. To reach it from a phone or another machine, set `CWM_HOST` to your LAN IP, and set a real password first. `CWM_PASSWORD` overrides the generated one.
One install-time caveat from the README: `node-pty` needs C++ build tools. If they are missing the app still boots, just without terminal panes. So after launching, open a session and confirm a terminal actually appears. If it does not, the missing build tools are the first thing to check, not the session data.
After that, the workflow is: pick a project folder in the sidebar, choose a session, and work in the pane. Costs come out of the transcripts, and docs, a kanban board and git worktrees sit next to the sessions they belong to.
Cost tracking stops where Codex stops publishing prices
Cost reporting is asymmetric between the two providers, and the README explains why rather than papering over it. Codex reports token counts and no dollar figure, because there is no published price to apply and, in the author's words, inventing one would be worse than showing nothing.
That is the right call, but it means a mixed workspace gives you dollars for Claude Code sessions and tokens for Codex ones. If your reason for adopting a session manager is a single blended spend number across both providers, Myrlin does not give you one today. You get a per-session picture, not a unified budget view.
The same restraint shows up in the Codex detail strip, which shows the model, reasoning effort, approval policy and sandbox the session is actually running, read from the conversation itself. Anything genuinely unknown says unknown rather than being filled in with a guess. That design choice is worth noting because it cuts both ways: you can trust what the panel shows, but the panel will sometimes show less than you want.
When Myrlin Workbook is the wrong tool
It is not an agent and it does not call a model on your behalf. If you want a hosted service that runs tasks for you, or a single chat interface that abstracts both providers behind one prompt box, this is the wrong shape of tool. Myrlin assumes you keep using the CLIs themselves and want a better place to run and find them.
The second limitation is maturity. The stable line, v0.9, is Claude only. Everything that makes the project interesting for a two-provider setup lives on the v1.3 alpha line, and the recent releases are all alpha tags: v1.3.0-alpha.30 on 2026-08-18, v1.3.0-alpha.5 on 2026-07-27, v1.3.0-alpha.4 on 2026-07-26. The package.json in the repository carries version 1.3.0-alpha.31, ahead of the newest published release. If you need a version you can pin and forget, the stable line is the honest choice, and it will not show you Codex.
The third is the terminal dependency. Because panes depend on `node-pty` and C++ build tools, a machine without a toolchain gets a working session browser with no terminals, which is most of the point. That failure is quiet: the app boots.
Finally, the licence is AGPL-3.0. If you plan to run a modified Myrlin as a network service for other people, that is the clause to read before you build on it. This is not legal advice; read the LICENSE file in the repository.
How it differs from the ChatGPT desktop app and from plain terminal multiplexers
The closest comparison the README itself draws is the ChatGPT desktop app. Myrlin reads Codex threads from `state_5.sqlite`, the same store that app lists from, so the folders and sessions match. The difference is what happens next: the desktop app shows you threads, while Myrlin opens each session in a real PTY in a browser tab and lets you wheel back through the recorded conversation as one continuous scrollback. It also covers Claude Code sessions from `~/.claude/projects`, which the desktop app does not.
Against a terminal multiplexer such as tmux, the difference in approach is where state lives. A multiplexer keeps panes alive in a server process on the machine you are sitting at, and its scrollback is whatever the pane has drawn. Myrlin reads each CLI's own session store from disk, so a session exists whether or not Myrlin is running, and the history you scroll through is the recorded conversation rather than a buffer. The trade-off is the reverse of tmux's: Myrlin needs a Node server and a browser, and it only knows about sessions the two CLIs have written.
The phone story follows from the same design. Because it is a local Node server with a browser front end, setting `CWM_HOST` to your LAN IP makes it reachable from a phone over your own network. There is no account and no relay.
Maintenance, upgrades and what the licence means for forks
The repository is not archived, and the last push was on 2026-09-08. Releases are frequent and tagged, with the alpha line moving quickly: alpha.4 and alpha.5 landed a day apart in late July, and alpha.30 followed in mid August. A CHANGELOG.md sits at the top level, and the README points to SETUP.md for tunnels, environment variables, keyboard shortcuts and troubleshooting.
The upgrade cost is mostly in the alpha line. Because the package is installed through npx, each run can pull a new alpha, and the config file at `~/.myrlin/config.json` is deliberately outside the npx cache so it survives reinstalls and cache clears. That is a good default, but it also means a config written by one alpha is read by the next, and there is no documented rollback path in the README if a new alpha changes behaviour you relied on. Pin a version if that matters to you.
On licensing: AGPL-3.0 is a strong copyleft licence with a network clause. Running Myrlin locally for yourself is the ordinary case the README describes. Distributing a modified version, or offering it to others over a network, is where the obligations attach. Read the LICENSE file rather than relying on a summary.
Editorial conclusion
Adopt Myrlin Workbook if you already run Claude Code and Codex on one machine and want their sessions, costs and terminals in a single browser tab; skip it if you need a stable release or a hosted service, since the Codex-capable line is still alpha. Before trusting it with your history, run npx myrlin-workbook --demo and confirm the terminal panes actually start, because node-pty needs C++ build tools and the app boots without them.
Frequently asked questions
Does Myrlin Workbook modify or upload my Claude Code and Codex session history?
No. The README states that both reads are read-only, and the Codex SQLite read goes through an in-memory byte image so no write handle is opened against your session history. There is no cloud, no sign-up and no telemetry.
Why does Myrlin Workbook show token counts instead of dollar costs for Codex sessions?
Because there is no published price to apply to Codex usage. The README says inventing a dollar figure would be worse than showing nothing, so Codex reports tokens while costs are taken from Claude Code transcripts.
How do I reach Myrlin Workbook from my phone?
The server binds to 127.0.0.1 by default. Set CWM_HOST to your LAN IP to reach it from a phone or another machine, and set a real password first, since the README says to do that before exposing it.
What happens if node-pty fails to build when I install Myrlin Workbook?
The app still boots, but without terminal panes. node-pty needs C++ build tools, so a machine without a toolchain gets the session browser and no live terminals.
Where is the Myrlin Workbook password stored?
A random password is generated on first launch and saved to ~/.myrlin/config.json, where it survives updates, reinstalls and npx cache clears. Set CWM_PASSWORD to override it.
Does the stable Myrlin Workbook release support ChatGPT Codex?
No. The README lists npx myrlin-workbook as v0.9 stable, Claude only and unchanged. Codex support is on the v1.3 alpha line, installed with npx myrlin-workbook@alpha.
Community notes