claude-code-hub
v1.9.0
Published
Unified hub for Claude Code tools — Marketplace + Kanban in one PWA
Maintainers
Readme
Claude Code Hub
One window for your Claude Code tools: Kanban, Marketplace, Cost, and Memory Diagnoser, in a single chromeless PWA that you drive from the keyboard.
Website: nikiforovall.blog/claude-code-hub
Watch the tour on YouTube: light, dark.
The tools
Kanban
See tasks, sessions, and live agent activity as a board. Open a Claude Code session in the embedded terminal.
Marketplace
Browse and manage Claude Code marketplace plugins.
Cost
See what your Claude Code usage costs, per session and per project.
Memory Diagnoser
Explore the memory files that Claude Code loads for a project.
Quick start
npm i -g claude-code-hub
claude-code-hub --openThe hub starts on http://localhost:3540 and opens the browser. To get a window with no browser UI, install the page as an app from the browser menu. To update, run npm i -g claude-code-hub@latest.
To try the hub without installing it, run npx claude-code-hub --open. Each npx version runs from a different cache folder, so use a global install to keep the hub.
From source
git clone --recurse-submodules https://github.com/NikiforovAll/claude-code-hub.git
cd claude-code-hub
npm install && npm install --prefix marketplace && npm install --prefix cck && npm install --prefix cost && npm install --prefix memory
npm start # http://localhost:3540Agent observability (one-time setup)
For the full Kanban view (agent log, live subagent tracking, waiting-for-user indicators, and context window use), install the hooks:
npx claude-code-kanban --installWithout the hooks you still get the task board and sessions, but no live agent activity. The hooks and status line are installed per Claude config dir, so run the command again for each dir you use. See the Kanban docs for details.
Hub token
The hub page and its API need a token. Any local account can reach a loopback port, and the API carries the terminal token.
- The token is in
~/.claude-hub/token. The hub creates it on the first run and keeps it across restarts. - The startup banner prints the URL with the token,
http://localhost:3540/?token=…, and--openuses that URL. The hub sets a cookie and then removes the token from the address bar, so later visits and the installed app need no token. - Without the token, the page shows a locked screen.
- To change the token, delete the file and restart the hub.
Config dirs
The hub can run the tools against more than one Claude config dir (CLAUDE_CONFIG_DIR), for example a work dir and a personal dir.
- Press Ctrl+Alt+W to open the config-dir palette. Pick a dir to switch to it, or type a path to add a new one. Ctrl+D removes the selected dir.
- Each dir gets its own set of the four tools. When you switch, the hub keeps the old set running, so switching back is instant.
--pool-sizesets how many sets stay alive (default 3). When the pool is full, the hub stops the least recently used set, but not a set whose Kanban has open terminals. - The list and the active dir are saved in
~/.claude-hub/config.json.
Choose the tools
By default the hub runs all four tools. To turn a tool off or change the tab order, add an apps list to ~/.claude-hub/config.json:
{
"apps": [
{ "id": "kanban" },
{ "id": "cost" },
{ "id": "marketplace", "enabled": false }
]
}- The ids are
kanban,marketplace,costandmemory. - The tools you list come first, in list order. The tools you do not list follow in the default order.
- A tool with
"enabled": falsedoes not start and gets no tab. Links from other tools to it do nothing. "port": 4543sets the tool's port. See Ports for the order and the busy-port fallback.- With Kanban off, the embedded terminal is off, and the project palette has no project list. You can still type a path.
- Restart the hub after you edit the file.
Run a second hub
Give the second hub its own folder for the config file and token with --hub-dir <path> or CLAUDE_HUB_DIR. See Run a second hub.
Embedded terminal
Under the hub, Kanban has an embedded terminal, on by default, so you can start or resume Claude Code sessions from the board. While a terminal is attached, the hub asks before it closes the window, because Ctrl+W meant for the terminal would close it.
To turn the terminal off, start the hub with --disable-terminal, or add this to ~/.claude-hub/config.json:
{
"terminal": { "enabled": false }
}Keyboard shortcuts
The hub has no visible UI of its own. Use these shortcuts:
| Shortcut | Action | | --- | --- | | Ctrl+Alt+→ | Next tool | | Ctrl+Alt+← | Previous tool | | Alt+1 | Kanban | | Alt+2 | Marketplace | | Alt+3 | Cost | | Alt+4 | Memory Diagnoser | | Ctrl+Alt+P | Project palette: set the project for all tools | | Ctrl+Alt+W | Config-dir palette: switch, add, or remove a config dir | | Ctrl+Alt+A | App launcher: switch to a tool, or restart it with Ctrl+R |
Alt+1 to Alt+4 follow the tab order, so they change when you choose the tools.
On macOS, every hub key is Control+Option with a key, the tool numbers too: ⌃⌥1 to ⌃⌥4. Option with a digit types a character there, so the hub leaves it to the tools.
In a palette, use ↑/↓ or Tab to move, Enter to select, and Esc to close.
The shortcuts also work when focus is inside a tool. Kanban keeps Ctrl+Alt+N (new session), Ctrl+Alt+R (resume session), and Ctrl+Alt+S (previous session) for itself. From Kanban you can also jump to another tool for the selected session:
| Shortcut | Action | | --- | --- | | M | Open Marketplace for the session's project | | $ | Open Cost for the session | | Ctrl+M | Open Memory Diagnoser for the session's project |
CLI flags
--port <n> Hub port (default: 3540)
--kanban-port <n> Kanban port (default: 3541)
--marketplace-port <n> Marketplace port (default: 3542)
--cost-port <n> Cost port (default: 3543)
--memory-port <n> Memory Diagnoser port (default: 3544)
--pool-size <n> Config-dir sets kept running after a switch (default: 3)
--disable-terminal Turn off the embedded terminal in Kanban
--host <addr> Bind address (default: 127.0.0.1)
--allowed-hosts <list> Extra host names to accept, comma-separated
--open Open the browser on start
--detached Keep running when stdin closes (the macOS tray uses it)
--tray Windows, macOS: run the hub from a tray icon
--autostart Windows, macOS: same as --tray, and start the tray at logon
--no-autostart Windows, macOS: stop starting the tray at logon
--tray-status Windows, macOS: show whether autostart is on and the tray and hub are running
--app-id <id> Windows, macOS, with --tray or --autostart: the installed app that Open Hub startsIf a port is busy, the hub uses a free port and reports it.
Tray icon (Windows, macOS)
claude-code-hub --autostartThe hub runs in the background with an icon in the notification area. Click the icon to open the hub. Right-click it to stop, start or restart the hub, open its log, turn Start with Windows on or off, or quit. The dot on the icon shows the state: green is running, amber is starting, red is stopped. If the hub stops unexpectedly, the tray shows a notice and turns red; start the hub again from the menu.
On macOS (experimental), the icon is in the menu bar.
To turn off autostart, untick Start with Windows or run claude-code-hub --no-autostart. To check the state, run claude-code-hub --tray-status. See Run the hub from the tray.
Included tools
| Tool | Docs | Repo | Submodule | Default port |
| --- | --- | --- | --- | --- |
| Kanban | Docs | claude-code-kanban | cck/ | 3541 |
| Marketplace | Docs | claude-code-marketplace | marketplace/ | 3542 |
| Cost | Docs | claude-code-cost | cost/ | 3543 |
| Memory Diagnoser | Docs | claude-code-memory | memory/ | 3544 |
License
MIT
