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.
- package/LICENSE +10 -16
- package/README.md +143 -274
- package/package.json +11 -4
- package/server/dist/index.js +34541 -384
package/LICENSE
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2026 goldyndevs
|
|
3
|
+
Copyright (c) 2026 goldyndevs
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
##
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
-
|
|
125
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
194
|
-
-
|
|
195
|
-
|
|
125
|
+
```bash
|
|
126
|
+
npx clauder-hub . # the current folder
|
|
127
|
+
npx clauder-hub ~/code/my-app # or any project folder
|
|
128
|
+
```
|
|
196
129
|
|
|
197
|
-
|
|
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
|
|
134
|
+
clauder-hub .
|
|
204
135
|
```
|
|
205
136
|
|
|
206
|
-
Open **http://localhost:4329**.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
281
|
-
|
|
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
|
|
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
|
|
288
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
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.
|
|
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": "
|
|
5
|
+
"license": "MIT",
|
|
6
6
|
"author": "goldyndevs <goldyndevs@gmail.com>",
|
|
7
|
-
"homepage": "https://
|
|
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 --
|
|
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",
|