clauder-hub 0.1.0 โ†’ 0.1.2

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.
Files changed (4) hide show
  1. package/LICENSE +10 -16
  2. package/README.md +143 -274
  3. package/package.json +11 -4
  4. package/server/dist/index.js +34541 -384
package/LICENSE CHANGED
@@ -1,20 +1,16 @@
1
- Clauder Hub License
1
+ MIT License
2
2
 
3
- Copyright (c) 2026 goldyndevs. All rights reserved.
3
+ Copyright (c) 2026 goldyndevs
4
4
 
5
- Clauder Hub is free to use. You may install it from the npm registry and run
6
- it on any number of your own machines, for personal or commercial work.
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
7
11
 
8
- You may not, in whole or in part:
9
-
10
- - copy, modify, merge, translate or create derivative works of it;
11
- - redistribute, sublicense, sell, rent or publish it, or offer it as a hosted
12
- service;
13
- - decompile, reverse engineer or extract its source code, except where the law
14
- explicitly permits it regardless of this restriction;
15
- - remove or alter this license or any copyright notice.
16
-
17
- All rights not expressly granted here are reserved by goldyndevs.
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
18
14
 
19
15
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
16
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -23,5 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
21
  SOFTWARE.
26
-
27
- Contact: goldyndevs@gmail.com
package/README.md CHANGED
@@ -1,311 +1,180 @@
1
- # Clauder Hub
2
-
3
- **A handy ADE (agentic development environment) for Claude Code: one local dashboard over every Claude Code session on your machine.**
4
-
5
- Clauder Hub is a wrapper around Claude Code. It starts real `claude` processes
6
- in real terminals, shows them in your browser, and adds what a single terminal
7
- window cannot give you: every project's sessions in one place, an inbox of
8
- everything Claude is waiting on, answers from your phone, scheduled and
9
- webhook-triggered runs, and stats read straight from the transcripts.
10
-
11
- Nothing is reimplemented and nothing is installed into Claude Code. The
12
- terminal you see *is* the `claude` CLI you already use, with your login, your
13
- settings and your plugins.
14
-
15
- ---
16
-
17
- ## Why
18
-
19
- Claude Code is great in one terminal. It gets messy with five:
20
-
21
- - ๐Ÿ˜ต **Too many windows.** Sessions in several repos, each in its own tab, and
22
- no way to see at a glance which ones are working, done, or stuck.
23
- - โณ **Silent waits.** A session asks for permission or asks a question, and
24
- sits there for an hour because you were in another window (or away from
25
- your desk).
26
- - ๐Ÿ” **Repeated chores.** Nightly test runs, dependency checks, triage on an
27
- incoming webhook: you either babysit them or script around the CLI yourself.
28
- - ๐Ÿงฐ **Context bloat.** Every agent, skill, MCP server and plugin you ever
29
- installed loads into every session, even when the task needs three of them.
30
- - ๐Ÿ“Š **No overview.** Where did the tokens go? Which tools, subagents and MCP
31
- servers did a session actually use?
32
-
33
- Clauder Hub keeps all of that in one browser tab, and lets you answer from
34
- Slack or Telegram when you are not at the machine.
1
+ <h1 align="center">
2
+ <a href="https://github.com/goldyndevs/clauder-hub"><img src="logo.svg" width="64" alt="Clauder Hub logo"></a>
3
+ <br>
4
+ Clauder Hub
5
+ </h1>
6
+
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/clauder-hub"><img src="https://img.shields.io/npm/v/clauder-hub?color=d97757" alt="npm version"></a>
9
+ <a href="https://www.npmjs.com/package/clauder-hub"><img src="https://img.shields.io/npm/dm/clauder-hub" alt="npm downloads"></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license"></a>
11
+ <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D22-339933" alt="Node 22 or newer"></a>
12
+ <a href="https://github.com/goldyndevs/clauder-hub/stargazers"><img src="https://img.shields.io/github/stars/goldyndevs/clauder-hub?style=flat" alt="GitHub stars"></a>
13
+ </p>
14
+
15
+ <p align="center">
16
+ <b>Every Claude Code session on your machine, in one browser tab.</b><br>
17
+ A handy ADE and wrapper around Claude Code.
18
+ </p>
19
+
20
+ <p align="center">
21
+ <img src="docs/assets/hero.jpg" width="960" alt="Clauder Hub: a Claude Code session in its terminal, waiting on a permission, with the project's sessions in the sidebar">
22
+ </p>
23
+
24
+ <p align="center">
25
+ <code>npx clauder-hub .</code>
26
+ </p>
35
27
 
36
28
  ---
37
29
 
38
- ## Feature tour
39
-
40
- ### ๐Ÿ–ฅ๏ธ Sessions and terminals
41
-
42
- - Every session of a project, read from `~/.claude/projects/...`, including the
43
- ones you started in a plain terminal.
44
- - **New session** opens a plain `claude` straight in an embedded terminal
45
- (xterm.js over a pty on the hub). Resume any past session the same way.
46
- - Closing the browser only detaches: the process keeps running in the hub.
47
- Pop a session out into a window of its own (`#/w/...`) if you like.
48
- - Sessions started outside the hub are visible but have no hooks; resume one
49
- in the hub to bring it in.
50
-
51
- ### ๐ŸŒ The global page: many projects, one view
52
-
53
- - One hub runs per machine and remembers every project you gave it.
54
- - The global page (`#/global`) shows a card per project, **one inbox across all
55
- of them**, and the global channels.
56
- - Each project keeps its own database, queue, cron jobs, channels, presets and
57
- categories, and they all keep running while you look at another project.
58
-
59
- ### ๐Ÿ“ฅ Inbox: everything Claude is waiting on
60
-
61
- - Permission requests, `AskUserQuestion` questions, ends of turns, MCP
62
- suggestions and finished tasks land in the inbox as cards with buttons.
63
- - Answer from the dashboard or from any channel. **The first answer from
64
- anywhere wins**, and the others are told who answered.
65
- - An answer is delivered by *typing into the pty*, exactly as you would.
66
- Hooks never approve, deny or delay anything on their own.
67
-
68
- ### ๐Ÿ’ฌ Channels: Telegram, Slack and webhooks
69
-
70
- | Channel | How it connects | Two-way |
71
- | --- | --- | --- |
72
- | Telegram | Bot API, long polling (no public URL needed) | Yes, inline buttons and replies |
73
- | Slack | Socket Mode (no public URL needed) | Yes, blocks, buttons and threads |
74
- | Webhook | JSON, plain text, Discord or Teams (Adaptive Card) | JSON carries a `replyUrl`; chat formats are one-way |
75
-
76
- **BotFather-style commands** (on Slack use `!` instead of `/`, since Slack keeps `/` for itself):
77
-
78
- | Command | What it does |
79
- | --- | --- |
80
- | `/new <prompt>` | Start a session (alone, it asks for the prompt) |
81
- | `/run <prompt>` | Queue an unattended run |
82
- | `/sessions` | Pick a session; your plain messages then go to it |
83
- | `/summary` | What a session did, read from its transcript (no tokens spent) |
84
- | `/stop` | Stop a running session (asks first) |
85
- | `/queue` | The run queue, with cancel buttons |
86
- | `/cancel`, `/help` | Drop a pending question, or show the menu |
87
-
88
- A **global bot** also has `/projects`, `/use <name>` and `/addproject`, and
89
- relays every project's questions labelled with the project name.
90
-
91
- **Natural-language fallbacks.** Misspell a command, describe a session instead
92
- of naming it ("the one fixing the login bug"), or describe a folder for
93
- `/addproject` ("my calendar app"), and the hub asks a small Claude model
94
- (Haiku, no tools) for its best guesses. They come back as buttons; **nothing
95
- runs until you press one**. Plain chat on Slack is never guessed at, since
96
- people talk there.
97
-
98
- ### โฐ Automation: cron, webhooks and a queue per project
99
-
100
- - **Cron jobs** and **webhook triggers** start unattended sessions.
101
- - A webhook is `POST /api/trigger/<job id>` with the job's token in the
102
- `x-clauder-token` header. `{{payload.field}}` in the job's prompt pulls a
103
- value from the request body (`{{payload}}` is the whole body, `{{now}}` the time).
104
- - Every run goes through **one queue per project**: runs in a project go one at
105
- a time, different projects run side by side.
106
- - **Task categories** define what "done" means for a kind of task (a PR, an RCA,
107
- test evidence...). A session with a category is closed only when Claude
108
- reports every required deliverable; if something is missing, the hub types
109
- back what is missing.
110
-
111
- ### ๐Ÿงฐ Toolsets and presets
112
-
113
- - Turn agents, skills, MCP servers and plugins **off** for one session (its
114
- Toolset tab), or save the choice as a **preset** for jobs and as the default
115
- for new sessions.
116
- - Applied only through that session's own `--settings` file. Changing a live
117
- session restarts it on the same conversation.
118
-
119
- ### ๐Ÿ“Š Stats from the transcripts
120
-
121
- - Tokens (input, output, cache) by model and by day.
122
- - Tool calls grouped as built-in, MCP (by server), skills and subagents, plus
123
- each subagent's own tokens and calls.
124
- - All parsed from the JSONL transcripts Claude Code already writes. Nothing
125
- extra is collected.
126
-
127
- ### ๐Ÿ“ Files and editor
128
-
129
- - A file tree in the sidebar (create, rename, move, delete) and a **Monaco**
130
- editor with tabs.
131
- - GitLens-style **blame** annotations from `git blame` (read-only, git is only
132
- asked, never told).
133
-
134
- ### ๐Ÿ“ Prompts, memory and inventory
135
-
136
- - Every word the hub adds to a session or sends to a channel is a prompt you
137
- can edit and restore (Hub prompts).
138
- - `CLAUDE.md` files, rules, auto memory, agents, skills and commands can be
139
- edited in place after reviewing a diff.
140
- - Inventory of agents, skills, commands, MCP servers, hooks and plugins by
141
- scope (user, project, local, plugin).
142
- - **MCP suggestions:** when a session is blocked on a missing integration it
143
- says so and stops. The `claude mcp add --scope project ...` command runs only
144
- when you approve it, then the session resumes so the server loads.
145
-
146
- ### ๐Ÿค– No forms: configuration is a conversation
147
-
148
- Creating a cron job, a run, a category, a preset or a channel opens a Claude
149
- session with that purpose. Claude asks what it needs, shows the final JSON,
150
- and saves it through the hub API after you say yes.
151
-
152
- ---
153
-
154
- ## Use cases
155
-
156
- **Approve a permission from your phone.** You step away while Claude refactors
157
- a module. It hits a `Bash` permission prompt; the request arrives in Telegram
158
- with buttons. Tap *Allow*, and the hub types the answer into the terminal.
159
-
160
- **Reply late, safely.** You reply to a question an hour later by replying to
161
- its Telegram message. If it was already answered, or the session has moved
162
- on, the hub tells you so (and points at the newer question) instead of
163
- applying your old "yes" to whatever dialog is showing now.
164
-
165
- **Nightly jobs with a summary.** A cron job runs `npm test` and triages
166
- failures every night at 2:00. Each run waits its turn in the project's queue,
167
- and its end of turn (or its done report, if the job has a category) lands in
168
- the inbox and your channels. In the morning, `/summary` shows what it did.
169
-
170
- **Juggle five projects from one page.** Add each repo once. The global page
171
- shows every project, a single inbox, and one global bot that tags each
172
- message with its project. `/use api-server` then `/new fix the flaky test`
173
- starts work there from chat.
174
-
175
- **Add a project by describing it.** Tell the global bot `/addproject my
176
- calendar app`. It looks through your usual code folders and offers matching
177
- folders as buttons; press one and the project is in the hub.
178
-
179
- **Trigger Claude from another system.** Point a GitHub, n8n or monitoring
180
- webhook at `POST /api/trigger/<job id>`; the job's prompt picks fields out of
181
- the payload with `{{payload.issue.title}}` and queues a run.
182
-
183
- **Lean sessions for focused work.** Make a "frontend" preset that turns off the
184
- database MCP servers and backend agents, and use it for UI jobs and new
185
- sessions.
30
+ ## Features
31
+
32
+ Clauder Hub runs the real `claude` you already use, in real terminals, and adds what one terminal window cannot: every project at once, an inbox of everything Claude is waiting on, answers from your phone, scheduled runs and stats. Nothing is reimplemented and nothing is installed into Claude Code.
33
+
34
+ <table>
35
+ <tr>
36
+ <td width="40%">
37
+ <h3>Real terminals, live activity</h3>
38
+ <b>New session</b> opens a plain <code>claude</code> in an embedded xterm. Close the tab and it keeps running; every tool call, token and subagent is read from the transcripts as it goes.
39
+ </td>
40
+ <td width="60%">
41
+ <picture>
42
+ <source srcset="docs/assets/terminal.webp" type="image/webp">
43
+ <img src="docs/assets/terminal.jpg" width="100%" alt="Starting a session and typing a prompt; Claude reads, edits and asks to run npm test">
44
+ </picture>
45
+ </td>
46
+ </tr>
47
+ <tr>
48
+ <td>
49
+ <h3>One inbox for every project</h3>
50
+ Permissions, questions and finished turns from all your projects land in one place, with buttons. The answer is typed into the terminal, and the first answer from anywhere wins.
51
+ </td>
52
+ <td>
53
+ <picture>
54
+ <source srcset="docs/assets/inbox.webp" type="image/webp">
55
+ <img src="docs/assets/inbox.jpg" width="100%" alt="The global inbox: allowing npm test and picking Redis, then each session comes back with its next question">
56
+ </picture>
57
+ </td>
58
+ </tr>
59
+ <tr>
60
+ <td>
61
+ <h3>Answer from your phone</h3>
62
+ Telegram and Slack bots relay every question with inline buttons, and BotFather-style commands (<code>/new</code>, <code>/sessions</code>, <code>/summary</code>, <code>/stop</code>) drive sessions from chat. No public URL needed.
63
+ </td>
64
+ <td>
65
+ <picture>
66
+ <source srcset="docs/assets/telegram.webp" type="image/webp">
67
+ <img src="docs/assets/telegram.jpg" width="100%" alt="A Telegram chat with the hub's bot: a permission card with Allow and Deny buttons, then the /sessions picker">
68
+ </picture>
69
+ </td>
70
+ </tr>
71
+ <tr>
72
+ <td>
73
+ <h3>Cron, webhooks and a queue</h3>
74
+ Nightly test triage, weekly dependency audits, a run per new GitHub issue. Each project has one queue, and a task category defines what "done" means before a run may close.
75
+ </td>
76
+ <td>
77
+ <img src="docs/assets/automation.jpg" width="100%" alt="The Automation page: cron and webhook jobs and the queue of finished runs">
78
+ </td>
79
+ </tr>
80
+ <tr>
81
+ <td>
82
+ <h3>Toolsets and presets</h3>
83
+ Turn agents, skills, MCP servers and plugins off for one session, or save the choice as a preset for jobs and new sessions. Applied through that session's own <code>--settings</code>, nothing else.
84
+ </td>
85
+ <td>
86
+ <img src="docs/assets/toolsets.jpg" width="100%" alt="Toolset presets: switches for plugins and agents in a Frontend preset">
87
+ </td>
88
+ </tr>
89
+ <tr>
90
+ <td>
91
+ <h3>Stats from the transcripts</h3>
92
+ Tokens by day and by model, built-in tools, MCP servers, skills and subagents, per project and per session. Parsed from the JSONL Claude Code already writes, so it costs nothing.
93
+ </td>
94
+ <td>
95
+ <img src="docs/assets/stats.jpg" width="100%" alt="The project overview: token totals, output tokens per day, tokens by model, tool and MCP usage">
96
+ </td>
97
+ </tr>
98
+ <tr>
99
+ <td>
100
+ <h3>Files and editor</h3>
101
+ A file tree and a Monaco editor with tabs sit beside your sessions, with GitLens-style blame from <code>git blame</code>, so you can check what Claude changed without leaving the page.
102
+ </td>
103
+ <td>
104
+ <img src="docs/assets/files.jpg" width="100%" alt="The Files tab and the editor showing src/lib/cart.ts with its last change">
105
+ </td>
106
+ </tr>
107
+ </table>
108
+
109
+ **Also in the box:**
110
+
111
+ - **The global page.** A card per project with what is running, waiting and queued, plus one global bot that tags each message with its project (`/projects`, `/use`, `/addproject`).
112
+ - **No forms.** Creating a job, a run, a category, a preset or a channel opens a Claude session for it: Claude asks, shows the JSON and saves it after your yes.
113
+ - **Natural-language fallbacks.** Misspell a command or describe a session ("the one fixing the login bug") and a small Haiku call offers its guesses as buttons. Nothing runs until you press one.
114
+ - **Prompts, memory and inventory.** Edit every word the hub adds to a session, edit `CLAUDE.md`, rules, agents and skills after a diff, and see every agent, skill, command, MCP server, hook and plugin by scope.
115
+ - **MCP suggestions.** A session blocked on a missing integration says so; `claude mcp add --scope project` runs only when you approve it.
116
+ - **Desktop notifications** on Windows, macOS and Linux, and webhooks to Discord, Teams or your own endpoint.
117
+ - **Local only.** The server listens on `127.0.0.1`. Hooks are answered `{}` at once, so the hub can never approve or block a tool call by itself.
186
118
 
187
119
  ---
188
120
 
189
- ## Quick start
121
+ ## Install
190
122
 
191
- **Requirements**
123
+ **Requirements:** Node.js 22 or newer, and [Claude Code](https://docs.claude.com/en/docs/claude-code) installed and signed in (`claude` on your PATH).
192
124
 
193
- - Node.js 22 or newer
194
- - [Claude Code](https://docs.claude.com/en/docs/claude-code) installed and
195
- logged in (`claude` on your PATH)
125
+ ```bash
126
+ npx clauder-hub . # the current folder
127
+ npx clauder-hub ~/code/my-app # or any project folder
128
+ ```
196
129
 
197
- **Install and run**
130
+ Or keep it installed:
198
131
 
199
132
  ```bash
200
- npx clauder-hub "/path/to/your/project"
201
- # or keep it installed:
202
133
  npm i -g clauder-hub
203
- clauder-hub "/path/to/your/project" # 'clauder-hub .' for the current folder
134
+ clauder-hub .
204
135
  ```
205
136
 
206
- Open **http://localhost:4329**. The port moves up if it is taken (`--port <n>`
207
- to pick one); the hub prints the one it chose. It remembers its projects, so
208
- later runs can be just `clauder-hub`, and running it again with another path
209
- while the hub is up adds that folder to the running hub. `clauder-hub --help`
210
- lists the options.
137
+ Open **http://localhost:4329**. If the port is taken the next free one is used (`--port <n>` picks one). The hub remembers its projects, so later runs can be just `clauder-hub`; running it again with another folder adds that folder to the hub already running. `clauder-hub --help` lists the options.
211
138
 
212
- ---
213
-
214
- ## How it works
215
-
216
- ```
217
- Browser (React + xterm.js) Telegram / Slack / webhooks
218
- | ^ | ^
219
- REST + WebSocket | answers | | questions
220
- v | v |
221
- +-----------------------------------------------------------------------+
222
- | Clauder Hub server (Express + ws, 127.0.0.1, one per machine) |
223
- | |
224
- | inbox / channels / queue + cron / stats / files / prompts |
225
- +-----------------------------------------------------------------------+
226
- | spawns in a pty, types answers ^ HTTP hooks (answered {} at once)
227
- v |
228
- +--------------------------+ writes +--------------------------+
229
- | real `claude` process | -------------> | ~/.claude/projects/... |
230
- | --settings (hooks) | | JSONL transcripts |
231
- | --append-system-prompt | +--------------------------+
232
- +--------------------------+ | read for stats
233
- ```
139
+ Data lives in `~/.clauder-hub` (`CLAUDER_HUB_HOME` moves it): the project list, one database per project, and per-terminal settings files.
234
140
 
235
- | Need | How |
236
- | --- | --- |
237
- | Show the terminal | `claude` runs in a pty on the hub; the page attaches over a WebSocket |
238
- | Know a session is waiting | HTTP hooks passed per process with `--settings` (SessionStart, UserPromptSubmit, PermissionRequest, PreToolUse for AskUserQuestion, Notification, Stop, SessionEnd). The hub answers each with `{}` immediately, so hooks never decide or delay anything |
239
- | Answer from anywhere | The answer is typed into the pty, as a person would |
240
- | Done reports, MCP suggestions | `--append-system-prompt-file`, read back from the last message by the Stop hook |
241
- | Toolsets | Settings keys merged into the session's own `--settings` file |
242
- | Stats | The JSONL transcripts Claude Code writes anyway |
141
+ ---
243
142
 
244
- **Data layout** (`CLAUDER_HUB_HOME` moves it):
143
+ ## Developing
245
144
 
145
+ ```bash
146
+ git clone https://github.com/goldyndevs/clauder-hub.git
147
+ cd clauder-hub
148
+ npm install
149
+ npm run dev -- /path/to/a/project # server and web with reload
246
150
  ```
247
- ~/.clauder-hub/
248
- hub.db project list and hub prompts
249
- hub.lock one hub per machine; a second start hands its folder over
250
- global/ the global context (global channels, hub tasks)
251
- projects/<id>/ hub.db per project: sessions, inbox, jobs, channels, presets
252
- run/ per-terminal --settings files and appended system prompts
253
- ```
254
-
255
- ---
256
151
 
257
- ## Safety and privacy
258
-
259
- - ๐Ÿ”’ **Local only.** The server listens on `127.0.0.1`, never on your network.
260
- It runs a shell-capable agent, so keep it that way.
261
- - ๐Ÿงผ **Nothing installed into Claude Code.** No MCP server, skill, plugin or
262
- settings file is written. Hooks and the extra prompt are passed per process
263
- on the command line. The only exceptions are ones you ask for by name:
264
- running a suggested `claude mcp add --scope project`, or saving an
265
- instruction file after reviewing its diff.
266
- - ๐Ÿ™… **Hooks never decide.** Every hook is answered `{}` before the hub does
267
- anything with it, so the hub cannot approve or block a tool call by itself.
268
- - โœ‹ **Confirm before acting.** Stopping, deleting, running commands and
269
- starting unattended runs ask first in the dashboard. Channel guesses are
270
- buttons that do nothing until pressed.
271
- - ๐Ÿ“ก **What leaves the machine:** only what you configure. Channel messages go
272
- to the Slack, Telegram or webhook you set up, and natural-language guesses
273
- use your own Claude Code login (a small Haiku call).
152
+ `npm run typecheck` and `npm run build` before a pull request. See [CONTRIBUTING.md](CONTRIBUTING.md) and [CLAUDE.md](CLAUDE.md) for how the code is laid out and the rules it keeps.
274
153
 
275
154
  ---
276
155
 
277
156
  ## FAQ
278
157
 
279
158
  **Does it replace Claude Code?**
280
- No. It runs the `claude` you already have, in a real terminal. Everything you
281
- can do in Claude Code you still do in that terminal.
159
+ No. It runs the `claude` you already have, with your login, settings and plugins, in a real terminal.
160
+
161
+ **Does it write anything into my Claude Code setup?**
162
+ No. Hooks and the extra system prompt are passed per process with `--settings` and `--append-system-prompt-file`. The only exceptions are ones you ask for by name: a suggested `claude mcp add --scope project`, or saving an instruction file after its diff.
282
163
 
283
- **Do I need a server or a public URL for Telegram or Slack?**
284
- No. Telegram uses long polling and Slack uses Socket Mode, both outgoing
285
- connections from your machine.
164
+ **Do I need a public URL for Telegram or Slack?**
165
+ No. Telegram uses long polling and Slack uses Socket Mode, both outgoing connections.
286
166
 
287
- **What happens to sessions when I close the browser?**
288
- They keep running in the hub. Reopen the page and attach again.
167
+ **What happens when I close the browser?**
168
+ Sessions keep running in the hub. Reopen the page and attach again.
289
169
 
290
170
  **Can it see sessions I started in a normal terminal?**
291
- Yes, they are listed with their stats. To answer them from the inbox or a
292
- channel, resume them in the hub so they get its hooks.
171
+ Yes, with their stats. Resume one in the hub to answer it from the inbox or a channel.
293
172
 
294
173
  **Does it cost extra tokens?**
295
- Stats and `/summary` are read from transcripts and cost nothing. Only the
296
- natural-language fallbacks in channels make a small Haiku call.
297
-
298
- **Can two hubs run at once?**
299
- One hub runs per machine. Starting another hands its project folder to the
300
- running one.
301
-
302
- **Where is my data?**
303
- In `~/.clauder-hub` (or `CLAUDER_HUB_HOME`), plus the transcripts Claude Code
304
- keeps in `~/.claude`.
174
+ Stats and `/summary` are read from transcripts. Only the natural-language fallbacks in channels make a small Haiku call.
305
175
 
306
176
  ---
307
177
 
308
178
  ## License
309
179
 
310
- Free to use, not open source: see [LICENSE](LICENSE). ยฉ 2026 goldyndevs.
311
- Questions and ideas: goldyndevs@gmail.com
180
+ [MIT](LICENSE) ยฉ goldyndevs
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "clauder-hub",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "A local dashboard that runs, watches and automates the Claude Code sessions of every project on the machine",
5
- "license": "SEE LICENSE IN LICENSE",
5
+ "license": "MIT",
6
6
  "author": "goldyndevs <goldyndevs@gmail.com>",
7
- "homepage": "https://www.npmjs.com/package/clauder-hub",
7
+ "homepage": "https://clauder-hub.sitenow.cloud/",
8
+ "bugs": {
9
+ "url": "https://github.com/goldyndevs/clauder-hub/issues"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/goldyndevs/clauder-hub.git"
14
+ },
8
15
  "type": "module",
9
16
  "engines": {
10
17
  "node": ">=22"
@@ -35,7 +42,7 @@
35
42
  "build": "npm run build:server && npm -w web run build",
36
43
  "typecheck": "npm -w server run typecheck && npm -w web run typecheck",
37
44
  "prepare": "npm run build",
38
- "build:server": "esbuild server/src/index.ts --bundle --platform=node --format=esm --target=node22 --minify --outfile=server/dist/index.js --external:better-sqlite3 --external:@lydell/node-pty --banner:js=\"import{createRequire}from'node:module';const require=createRequire(import.meta.url);\""
45
+ "build:server": "esbuild server/src/index.ts --bundle --platform=node --format=esm --target=node22 --outfile=server/dist/index.js --external:better-sqlite3 --external:@lydell/node-pty --banner:js=\"import{createRequire}from'node:module';const require=createRequire(import.meta.url);\""
39
46
  },
40
47
  "dependencies": {
41
48
  "@lydell/node-pty": "1.2.0-beta.18",