@legioncodeinc/hive 0.1.0 → 0.2.1

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 CHANGED
@@ -1,262 +1,262 @@
1
- <!-- ─────────────────────────────── HERO ─────────────────────────────── -->
2
-
3
- <p align="center">
4
- <picture>
5
- <source media="(prefers-color-scheme: dark)" srcset="assets/brand/hive-wordmark-on-dark.svg">
6
- <img src="assets/brand/hive-wordmark-black.svg" alt="Hive" height="84">
7
- </picture>
8
- </p>
9
-
10
- <h1 align="center">Hive</h1>
11
-
12
- <p align="center">
13
- <strong>The front door to your agents' shared brain.</strong><br>
14
- One URL, always on, and every daemon in the Apiary is standing behind it.
15
- </p>
16
-
17
- <p align="center">
18
- <a href="https://www.npmjs.com/package/@legioncodeinc/hive"><img src="https://img.shields.io/npm/v/@legioncodeinc/hive?style=flat-square&color=E8722A&label=version" alt="npm version"></a>
19
- <img src="https://img.shields.io/badge/harnesses-6-E8722A?style=flat-square" alt="6 harnesses">
20
- <img src="https://img.shields.io/badge/OS-windows%20%7C%20macos%20%7C%20linux-6E6A62?style=flat-square" alt="Windows, macOS, Linux">
21
- </p>
22
-
23
- <p align="center">
24
- <a href="https://linktr.ee/marioaldayuz"><img src="https://img.shields.io/badge/designed%20by-Mario%20Aldayuz-8B7CF0?style=flat-square" alt="Designed by Mario Aldayuz"></a>
25
- <a href="https://www.legioncodeinc.com"><img src="https://img.shields.io/badge/built%20by-Legion%20Code%20Inc.-111111?style=flat-square" alt="Built by Legion Code Inc."></a>
26
- <a href="https://deeplake.ai"><img src="https://img.shields.io/badge/powered%20by-Deeplake-ff5a1f?style=flat-square" alt="Powered by Deeplake"></a>
27
- </p>
28
-
29
- <p align="center">
30
- <a href="https://github.com/legioncodeinc/hive"><img src="https://img.shields.io/github/stars/legioncodeinc/hive?style=flat-square&color=E8722A" alt="GitHub stars"></a>
31
- <a href="https://discord.gg/GX95YTQypQ"><img src="https://img.shields.io/badge/discord-find%20us-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
32
- </p>
33
-
34
- <!-- ────────────────────────────── PARTNERS ────────────────────────────── -->
35
-
36
- <p align="center">
37
- <a href="https://github.com/legioncodeinc">
38
- <picture>
39
- <source media="(prefers-color-scheme: dark)" srcset="assets/brand/legion-logo-dark.svg">
40
- <img src="assets/brand/legion-logo-light.svg" alt="Legion Code" height="34">
41
- </picture>
42
- </a>
43
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
44
- <a href="https://github.com/activeloopai">
45
- <picture>
46
- <source media="(prefers-color-scheme: dark)" srcset="assets/brand/activeloop-full-mark-logo-on-dark.svg">
47
- <img src="assets/brand/activeloop-full-mark-logo.svg" alt="Activeloop" height="26">
48
- </picture>
49
- </a>
50
- </p>
51
-
52
- <p align="center"><em>A <a href="https://github.com/legioncodeinc">Legion Code Inc.</a> × <a href="https://github.com/activeloopai">Activeloop</a> collaboration.</em></p>
53
-
54
- <img src="assets/brand/divider-major.svg" width="100%" height="6">
55
-
56
- The Apiary runs four daemons on your machine: Honeycomb doing the memory work, Nectar mapping your sources, Doctor watching all of them, and each one holding its own port. Great architecture. Miserable to look at. Which port was the dashboard again? Is my memory daemon even up, or did it die overnight? Why is my browser juggling origins and tokens for three separate loopback services just to render one status page?
57
-
58
- **Hive is the answer to all of it.** One always-on portal daemon at `127.0.0.1:3853`. It boots with your device, renders the moment its socket binds, and serves the entire Apiary dashboard from a single origin. When a workload daemon has not answered yet, its panel says "starting," never a broken page. That failure mode is the whole reason Hive exists: the old dashboard lived inside Honeycomb, so exactly when you needed a status surface most was exactly when it went dark.
59
-
60
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
61
-
62
- > **New here?** One command and you're on a dashboard. [Jump to Install](#-install-one-command). · **Want the docs?** Everything lives at **[theapiary.sh](https://theapiary.sh)**.
63
-
64
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
65
-
66
- <table>
67
- <tr>
68
- <td width="50%" valign="top">
69
-
70
- #### 🛹 For AI Augmented Devs
71
- One URL for the whole stack. You bookmark `127.0.0.1:3853` and you're done: memories, graph, sync, hive graph, fleet health, all of it behind one front door. Zero port hunting, zero "which daemon serves that page," zero mental map of the loopback range required.
72
-
73
- </td>
74
- <td width="50%" valign="top">
75
-
76
- #### 🏢 For Enterprise Teams
77
- One origin, one boundary. The browser never sees a workload daemon's port or holds a credential for it; Hive's server proxies every request over loopback and passes auth headers straight through without storing a thing. Nothing sensitive lives in the browser, and no daemon owes the world a CORS allowance.
78
-
79
- </td>
80
- </tr>
81
- </table>
82
-
83
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
84
-
85
- ## ✨ What makes Hive different
86
-
87
- Plenty of tools bolt a status page onto a daemon. Hive is built the other way around: the portal is the product, and four deliberate decisions make it hold up.
88
-
89
- - **A single portal.** Every dashboard route in the Apiary lives here. Honeycomb's in-daemon dashboard is retired; Hive is the one source of always-on UI truth.
90
- - **Server-side BFF proxy.** Per [ADR-0002](library/knowledge/private/architecture/ADR-0002-server-side-bff-proxy-for-dashboard-federation.md), the browser talks to Hive's origin only. The server resolves which daemon owns each `/api/*` and `/setup/*` request, fetches it over loopback, and streams it back. No CORS on any workload daemon, no daemon ports handed to a browser, loopback trust enforced on the server with redirect pinning.
91
- - **Copy-and-own dashboard.** Per [ADR-0001](library/knowledge/private/architecture/ADR-0001-retire-honeycomb-dashboard-and-copy-and-own-into-hive.md), the dashboard code was copied out of Honeycomb once and is owned here outright. No live shared module to drift, no fork to babysit, no second copy left to diverge from.
92
- - **Always on.** Hive is its own supervised OS process, boot-ordered, not gated on any workload daemon's health. It ships on its own release train, so a dashboard change never forces a supervisor or workload release.
93
-
94
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
95
-
96
- ## 🐝 Features
97
-
98
- - 🖥️ **The unified Apiary dashboard**, served from one process the moment the socket binds.
99
- - 🔀 **Server-side BFF proxy** routing `/api/*` and `/setup/*` to the owning daemon: Honeycomb (`:3850`), Nectar (`:3854`), each resolved from Doctor's registry.
100
- - 🌐 **Single browser origin.** Same-origin fetches only; your browser never learns another daemon's port.
101
- - 🔒 **Credential-free by design.** Transparent auth pass-through; Hive stores no token and holds no Deeplake client.
102
- - 🩹 **Fail-soft aggregation.** One daemon down means one panel shows unreachable while the rest of the dashboard keeps working.
103
- - 🚦 **Fleet readiness via Doctor.** `/api/fleet-status` reads the supervisor's status page server-side, so the portal shows honest per-fleet health instead of guessing from failed fetches.
104
- - ♻️ **Always-on daemon on `:3853`** with `/health`, a PID/lock single-instance guard, and OS service units (launchd, systemd, schtasks) that restart it on crash and start it on boot.
105
- - 🩺 **Supervised by Doctor** through an idempotent registry entry, installed at setup time.
106
-
107
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
108
-
109
- ## 🚀 Install (one command)
110
-
111
- Hive doesn't install alone; it comes up as part of the Apiary stack. One line, and the installer handles Node, npm, the daemons, and the watchdog.
112
-
113
- ```bash
114
- # macOS / Linux
115
- curl -fsSL https://get.theapiary.sh | sh
116
- ```
117
-
118
- ```powershell
119
- # Windows (PowerShell)
120
- irm https://get.theapiary.sh/install.ps1 | iex
121
- ```
122
-
123
- That single line installs the whole Apiary: Honeycomb, Nectar, Doctor, and Hive, which comes up at **`127.0.0.1:3853`** and becomes the one address you ever need to remember. The terminal is just a progress log; the portal is the product.
124
-
125
- <details>
126
- <summary><strong>Prefer to build from source?</strong></summary>
127
-
128
- ```bash
129
- git clone https://github.com/legioncodeinc/hive.git
130
- cd hive
131
- npm install
132
- npm run build # tsc + esbuild → dist/cli.js
133
-
134
- npm start # runs `node dist/cli.js start`, binds :3853
135
- npm run typecheck # tsc --noEmit
136
- npm test # vitest run
137
- ```
138
-
139
- The portal aggregates its data from the other Apiary daemons over loopback, so a source build of Hive alone gets you the shell and fleet status; the full dashboard lights up when Honeycomb and friends are running.
140
-
141
- </details>
142
-
143
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
144
-
145
- ## 🖥️ Using the dashboard
146
-
147
- <!-- screenshot pending: drop hive dashboard capture into assets/screenshots/dashboard.png -->
148
- <img src="assets/screenshots/dashboard.png" alt="Hive dashboard" width="100%">
149
-
150
- Open `http://127.0.0.1:3853` and the shell renders immediately, even on a cold boot. While the fleet is still waking up you get a readiness splash with per-daemon health rows instead of a false "first time setup" screen. Once the fleet is ready, the full portal takes over: the memory pages, the graph, sync, and ROI views migrated from Honeycomb, plus fleet status pulled from Doctor. Every page hydrates through the same-origin wire, proxied server-side to whichever daemon owns the data.
151
-
152
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
153
-
154
- ## ⌨️ Using the CLI
155
-
156
- The `hive` binary keeps a deliberately small surface. It's a portal daemon, not a Swiss Army knife:
157
-
158
- ```bash
159
- hive start # run the portal daemon on :3853 (the default verb)
160
- hive install-service # install the OS service unit (launchd / systemd / schtasks)
161
- hive uninstall-service # remove the service unit
162
- hive register # append Hive to Doctor's daemon registry
163
- ```
164
-
165
- That's the whole list, on purpose. Day to day you never touch it; the installer wires the service unit and registration, Doctor keeps the process alive, and you live in the browser.
166
-
167
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
168
-
169
- ## ✨ Open one URL, see the whole hive
170
-
171
- ```bash
172
- # One address. No port hunting, no tab juggling.
173
- open http://127.0.0.1:3853
174
-
175
- # Honeycomb up, Nectar up, Doctor watching, memories flowing.
176
- # You just checked four daemons without remembering a single port number.
177
- ```
178
-
179
- Kill a workload daemon mid-session and the dashboard doesn't blink: that daemon's panels go "unreachable," everything else keeps rendering, and the page recovers on its own when Doctor brings the daemon back. That's the moment this thing earns its keep.
180
-
181
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
182
-
183
- ## 🏗️ How it works
184
-
185
- The browser talks to exactly one origin. Hive's server does the reaching around, over loopback, with the trust checks on its side of the line.
186
-
187
- ```mermaid
188
- flowchart TD
189
- browser["Browser"] -->|"same-origin /api/*, /setup/*"| hive["Hive :3853<br/>portal + BFF proxy"]
190
- hive -->|"loopback proxy"| comb["Honeycomb :3850<br/>memory workload"]
191
- hive -->|"loopback proxy"| nectar["Nectar :3854<br/>hive graph workload"]
192
- hive -->|"fleet status"| doctor["Doctor :3852<br/>supervisor status page"]
193
- ```
194
-
195
- The browser never talks to the back daemons directly. Hive resolves each request's owner from Doctor's registry, guards every resolved base as loopback-only, pins redirects so a daemon can't bounce a proxied fetch off the machine, and forwards your session headers verbatim without keeping any credential of its own.
196
-
197
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
198
-
199
- ## 🧭 Why one front door matters
200
-
201
- Here's the thing about a stack of loopback daemons: individually they're clean, collectively they're a chore. Four processes means four ports, and four ports means the knowledge of your own tooling lives in your head instead of in the product. Every "wait, which one was 3854" is a small tax, and small taxes compound.
202
-
203
- One front door collapses that. Your credentials cross exactly one boundary, enforced by a server you control, instead of being sprayed across browser tabs that each talk to a different origin. Your bookmark bar holds one entry. When something breaks at 2 a.m., you don't run a mental port scan; you open the one page and the sick daemon is the red row.
204
-
205
- And there's a quieter payoff: the stack starts feeling like one product. Honeycomb, Nectar, and Doctor stay sharply separated where it counts, in process boundaries and data ownership, while you experience them as a single coherent surface. Separation of concerns for the machine, one front door for the human. That's the trade Hive makes, and it's the right one.
206
-
207
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
208
-
209
- ## 🎛️ Other interfaces
210
-
211
- Straight talk: Hive ships two surfaces, and that's it for now.
212
-
213
- - **Dashboard.** The web portal at `http://127.0.0.1:3853`. This is the product.
214
- - **HTTP portal API.** Hive's own loopback endpoints: `GET /health` for cheap liveness (status, uptime, version) and `GET /api/fleet-status` for fleet health, plus the proxied `/api/*` and `/setup/*` surfaces of the daemons behind it.
215
-
216
- No MCP server, no SDK, and none pretending. The workload daemons own those surfaces; Hive owns the door.
217
-
218
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
219
-
220
- <h2 align="center"><a href="https://ideas.theapiary.sh">📍 Status & Roadmap</a></h2>
221
-
222
- Hive is **pre-release (v0.1.0)**. The portal daemon, the migrated dashboard, the server-side BFF proxy, and the service-unit plus registry work are in active development under PRD-001 and PRD-002, with the readiness splash, landing gate, and health rail lined up behind them. We document what's real and flag what's in flight; the roadmap and idea board live at [ideas.theapiary.sh](https://ideas.theapiary.sh).
223
-
224
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
225
-
226
- ## 🛠️ Development
227
-
228
- ```bash
229
- npm install
230
- npm run build # tsc + esbuild → dist/cli.js
231
- npm run typecheck # tsc --noEmit
232
- npm test # vitest run
233
- ```
234
-
235
- Node `>= 22`, TypeScript, Hono on the server, React on the dashboard. The proxy surface (header hygiene, redirect pinning, streaming) carries its own test coverage; keep it that way.
236
-
237
- <img src="assets/brand/divider-major.svg" width="100%" height="6">
238
-
239
- ## 🙏 Credits
240
-
241
- - **[Activeloop](https://activeloop.ai/)** brings **[Deeplake](https://deeplake.ai/)** (the versioned, multi-modal database for AI with native vector + columnar indexing and hybrid search) and **[Hivemind](https://github.com/activeloopai/hivemind)**, the open-source agent-memory project Honeycomb is built upon.
242
- - **[Legion Code Inc](https://github.com/legioncodeinc)** brings the **multi-tier memory system** (Tier 1 / 2 / 3 keys, summaries, raw), **code base atlas memory architecture**, **auto healing service**, **session priming**, **automatic skill development & propagation**, the **pollinating loop**, the **knowledge graph**, **cross device cross repository cross team skill sharing**, and the daemon architecture that turns Deeplake into a shared brain your coding agents read and write on every turn.
243
-
244
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
245
-
246
- ## License
247
-
248
- Hive is licensed under the **GNU Affero General Public License v3.0 or later** ([AGPL-3.0-or-later](LICENSE)).
249
-
250
- Use it commercially or privately, free of charge. In return: keep the copyright and license notices intact, and if you modify it, your changes ship under the same AGPL license with source available. The "Affero" part is the point: run a modified version as a network service and you owe its source to the users who interact with it. No locking a fork behind a SaaS wall.
251
-
252
- © 2026 Legion Code Inc.
253
-
254
- <img src="assets/brand/divider-minor.svg" width="100%" height="3">
255
-
256
- <p align="center">
257
- <sub><strong>Built by <a href="https://github.com/legioncodeinc">Legion Code Inc</a></strong> · <strong>Powered by <a href="https://deeplake.ai/">Activeloop Deeplake</a></strong> · <a href="https://theapiary.sh/">theapiary.sh</a></sub>
258
- </p>
259
-
260
- <p align="center"><strong>I am Legion. We are Legion.</strong></p>
261
-
262
- <p align="center">#vibewithlegion</p>
1
+ <!-- ─────────────────────────────── HERO ─────────────────────────────── -->
2
+
3
+ <p align="center">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: dark)" srcset="assets/brand/hive-wordmark-on-dark.svg">
6
+ <img src="assets/brand/hive-wordmark-black.svg" alt="Hive" height="84">
7
+ </picture>
8
+ </p>
9
+
10
+ <h1 align="center">Hive</h1>
11
+
12
+ <p align="center">
13
+ <strong>The front door to your agents' shared brain.</strong><br>
14
+ One URL, always on, and every daemon in the Apiary is standing behind it.
15
+ </p>
16
+
17
+ <p align="center">
18
+ <a href="https://www.npmjs.com/package/@legioncodeinc/hive"><img src="https://img.shields.io/npm/v/@legioncodeinc/hive?style=flat-square&color=E8722A&label=version" alt="npm version"></a>
19
+ <img src="https://img.shields.io/badge/harnesses-6-E8722A?style=flat-square" alt="6 harnesses">
20
+ <img src="https://img.shields.io/badge/OS-windows%20%7C%20macos%20%7C%20linux-6E6A62?style=flat-square" alt="Windows, macOS, Linux">
21
+ </p>
22
+
23
+ <p align="center">
24
+ <a href="https://linktr.ee/marioaldayuz"><img src="https://img.shields.io/badge/designed%20by-Mario%20Aldayuz-8B7CF0?style=flat-square" alt="Designed by Mario Aldayuz"></a>
25
+ <a href="https://www.legioncodeinc.com"><img src="https://img.shields.io/badge/built%20by-Legion%20Code%20Inc.-111111?style=flat-square" alt="Built by Legion Code Inc."></a>
26
+ <a href="https://deeplake.ai"><img src="https://img.shields.io/badge/powered%20by-Deeplake-ff5a1f?style=flat-square" alt="Powered by Deeplake"></a>
27
+ </p>
28
+
29
+ <p align="center">
30
+ <a href="https://github.com/legioncodeinc/hive"><img src="https://img.shields.io/github/stars/legioncodeinc/hive?style=flat-square&color=E8722A" alt="GitHub stars"></a>
31
+ <a href="https://discord.gg/GX95YTQypQ"><img src="https://img.shields.io/badge/discord-find%20us-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
32
+ </p>
33
+
34
+ <!-- ────────────────────────────── PARTNERS ────────────────────────────── -->
35
+
36
+ <p align="center">
37
+ <a href="https://github.com/legioncodeinc">
38
+ <picture>
39
+ <source media="(prefers-color-scheme: dark)" srcset="assets/brand/legion-logo-dark.svg">
40
+ <img src="assets/brand/legion-logo-light.svg" alt="Legion Code" height="34">
41
+ </picture>
42
+ </a>
43
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
44
+ <a href="https://github.com/activeloopai">
45
+ <picture>
46
+ <source media="(prefers-color-scheme: dark)" srcset="assets/brand/activeloop-full-mark-logo-on-dark.svg">
47
+ <img src="assets/brand/activeloop-full-mark-logo.svg" alt="Activeloop" height="26">
48
+ </picture>
49
+ </a>
50
+ </p>
51
+
52
+ <p align="center"><em>A <a href="https://github.com/legioncodeinc">Legion Code Inc.</a> × <a href="https://github.com/activeloopai">Activeloop</a> collaboration.</em></p>
53
+
54
+ <img src="assets/brand/divider-major.svg" width="100%" height="6">
55
+
56
+ The Apiary runs four daemons on your machine: Honeycomb doing the memory work, Nectar mapping your sources, Doctor watching all of them, and each one holding its own port. Great architecture. Miserable to look at. Which port was the dashboard again? Is my memory daemon even up, or did it die overnight? Why is my browser juggling origins and tokens for three separate loopback services just to render one status page?
57
+
58
+ **Hive is the answer to all of it.** One always-on portal daemon at `127.0.0.1:3853`. It boots with your device, renders the moment its socket binds, and serves the entire Apiary dashboard from a single origin. When a workload daemon has not answered yet, its panel says "starting," never a broken page. That failure mode is the whole reason Hive exists: the old dashboard lived inside Honeycomb, so exactly when you needed a status surface most was exactly when it went dark.
59
+
60
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
61
+
62
+ > **New here?** One command and you're on a dashboard. [Jump to Install](#-install-one-command). · **Want the docs?** Everything lives at **[theapiary.sh](https://theapiary.sh)**.
63
+
64
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
65
+
66
+ <table>
67
+ <tr>
68
+ <td width="50%" valign="top">
69
+
70
+ #### 🛹 For AI Augmented Devs
71
+ One URL for the whole stack. You bookmark `127.0.0.1:3853` and you're done: memories, graph, sync, hive graph, fleet health, all of it behind one front door. Zero port hunting, zero "which daemon serves that page," zero mental map of the loopback range required.
72
+
73
+ </td>
74
+ <td width="50%" valign="top">
75
+
76
+ #### 🏢 For Enterprise Teams
77
+ One origin, one boundary. The browser never sees a workload daemon's port or holds a credential for it; Hive's server proxies every request over loopback and passes auth headers straight through without storing a thing. Nothing sensitive lives in the browser, and no daemon owes the world a CORS allowance.
78
+
79
+ </td>
80
+ </tr>
81
+ </table>
82
+
83
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
84
+
85
+ ## ✨ What makes Hive different
86
+
87
+ Plenty of tools bolt a status page onto a daemon. Hive is built the other way around: the portal is the product, and four deliberate decisions make it hold up.
88
+
89
+ - **A single portal.** Every dashboard route in the Apiary lives here. Honeycomb's in-daemon dashboard is retired; Hive is the one source of always-on UI truth.
90
+ - **Server-side BFF proxy.** Per [ADR-0002](library/knowledge/private/architecture/ADR-0002-server-side-bff-proxy-for-dashboard-federation.md), the browser talks to Hive's origin only. The server resolves which daemon owns each `/api/*` and `/setup/*` request, fetches it over loopback, and streams it back. No CORS on any workload daemon, no daemon ports handed to a browser, loopback trust enforced on the server with redirect pinning.
91
+ - **Copy-and-own dashboard.** Per [ADR-0001](library/knowledge/private/architecture/ADR-0001-retire-honeycomb-dashboard-and-copy-and-own-into-hive.md), the dashboard code was copied out of Honeycomb once and is owned here outright. No live shared module to drift, no fork to babysit, no second copy left to diverge from.
92
+ - **Always on.** Hive is its own supervised OS process, boot-ordered, not gated on any workload daemon's health. It ships on its own release train, so a dashboard change never forces a supervisor or workload release.
93
+
94
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
95
+
96
+ ## 🐝 Features
97
+
98
+ - 🖥️ **The unified Apiary dashboard**, served from one process the moment the socket binds.
99
+ - 🔀 **Server-side BFF proxy** routing `/api/*` and `/setup/*` to the owning daemon: Honeycomb (`:3850`), Nectar (`:3854`), each resolved from Doctor's registry.
100
+ - 🌐 **Single browser origin.** Same-origin fetches only; your browser never learns another daemon's port.
101
+ - 🔒 **Credential-free by design.** Transparent auth pass-through; Hive stores no token and holds no Deeplake client.
102
+ - 🩹 **Fail-soft aggregation.** One daemon down means one panel shows unreachable while the rest of the dashboard keeps working.
103
+ - 🚦 **Fleet readiness via Doctor.** `/api/fleet-status` reads the supervisor's status page server-side, so the portal shows honest per-fleet health instead of guessing from failed fetches.
104
+ - ♻️ **Always-on daemon on `:3853`** with `/health`, a PID/lock single-instance guard, and OS service units (launchd, systemd, schtasks) that restart it on crash and start it on boot.
105
+ - 🩺 **Supervised by Doctor** through an idempotent registry entry, installed at setup time.
106
+
107
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
108
+
109
+ ## 🚀 Install (one command)
110
+
111
+ Hive doesn't install alone; it comes up as part of the Apiary stack. One line, and the installer handles Node, npm, the daemons, and the watchdog.
112
+
113
+ ```bash
114
+ # macOS / Linux
115
+ curl -fsSL https://get.theapiary.sh | sh
116
+ ```
117
+
118
+ ```powershell
119
+ # Windows (PowerShell)
120
+ irm https://get.theapiary.sh/install.ps1 | iex
121
+ ```
122
+
123
+ That single line installs the whole Apiary: Honeycomb, Nectar, Doctor, and Hive, which comes up at **`127.0.0.1:3853`** and becomes the one address you ever need to remember. The terminal is just a progress log; the portal is the product.
124
+
125
+ <details>
126
+ <summary><strong>Prefer to build from source?</strong></summary>
127
+
128
+ ```bash
129
+ git clone https://github.com/legioncodeinc/hive.git
130
+ cd hive
131
+ npm install
132
+ npm run build # tsc + esbuild → dist/cli.js
133
+
134
+ npm start # runs `node dist/cli.js start`, binds :3853
135
+ npm run typecheck # tsc --noEmit
136
+ npm test # vitest run
137
+ ```
138
+
139
+ The portal aggregates its data from the other Apiary daemons over loopback, so a source build of Hive alone gets you the shell and fleet status; the full dashboard lights up when Honeycomb and friends are running.
140
+
141
+ </details>
142
+
143
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
144
+
145
+ ## 🖥️ Using the dashboard
146
+
147
+ <!-- screenshot pending: drop hive dashboard capture into assets/screenshots/dashboard.png -->
148
+ <img src="assets/screenshots/dashboard.png" alt="Hive dashboard" width="100%">
149
+
150
+ Open `http://127.0.0.1:3853` and the shell renders immediately, even on a cold boot. While the fleet is still waking up you get a readiness splash with per-daemon health rows instead of a false "first time setup" screen. Once the fleet is ready, the full portal takes over: the memory pages, the graph, sync, and ROI views migrated from Honeycomb, plus fleet status pulled from Doctor. Every page hydrates through the same-origin wire, proxied server-side to whichever daemon owns the data.
151
+
152
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
153
+
154
+ ## ⌨️ Using the CLI
155
+
156
+ The `hive` binary keeps a deliberately small surface. It's a portal daemon, not a Swiss Army knife:
157
+
158
+ ```bash
159
+ hive start # run the portal daemon on :3853 (the default verb)
160
+ hive install-service # install the OS service unit (launchd / systemd / schtasks)
161
+ hive uninstall-service # remove the service unit
162
+ hive register # append Hive to Doctor's daemon registry
163
+ ```
164
+
165
+ That's the whole list, on purpose. Day to day you never touch it; the installer wires the service unit and registration, Doctor keeps the process alive, and you live in the browser.
166
+
167
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
168
+
169
+ ## ✨ Open one URL, see the whole hive
170
+
171
+ ```bash
172
+ # One address. No port hunting, no tab juggling.
173
+ open http://127.0.0.1:3853
174
+
175
+ # Honeycomb up, Nectar up, Doctor watching, memories flowing.
176
+ # You just checked four daemons without remembering a single port number.
177
+ ```
178
+
179
+ Kill a workload daemon mid-session and the dashboard doesn't blink: that daemon's panels go "unreachable," everything else keeps rendering, and the page recovers on its own when Doctor brings the daemon back. That's the moment this thing earns its keep.
180
+
181
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
182
+
183
+ ## 🏗️ How it works
184
+
185
+ The browser talks to exactly one origin. Hive's server does the reaching around, over loopback, with the trust checks on its side of the line.
186
+
187
+ ```mermaid
188
+ flowchart TD
189
+ browser["Browser"] -->|"same-origin /api/*, /setup/*"| hive["Hive :3853<br/>portal + BFF proxy"]
190
+ hive -->|"loopback proxy"| comb["Honeycomb :3850<br/>memory workload"]
191
+ hive -->|"loopback proxy"| nectar["Nectar :3854<br/>hive graph workload"]
192
+ hive -->|"fleet status"| doctor["Doctor :3852<br/>supervisor status page"]
193
+ ```
194
+
195
+ The browser never talks to the back daemons directly. Hive resolves each request's owner from Doctor's registry, guards every resolved base as loopback-only, pins redirects so a daemon can't bounce a proxied fetch off the machine, and forwards your session headers verbatim without keeping any credential of its own.
196
+
197
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
198
+
199
+ ## 🧭 Why one front door matters
200
+
201
+ Here's the thing about a stack of loopback daemons: individually they're clean, collectively they're a chore. Four processes means four ports, and four ports means the knowledge of your own tooling lives in your head instead of in the product. Every "wait, which one was 3854" is a small tax, and small taxes compound.
202
+
203
+ One front door collapses that. Your credentials cross exactly one boundary, enforced by a server you control, instead of being sprayed across browser tabs that each talk to a different origin. Your bookmark bar holds one entry. When something breaks at 2 a.m., you don't run a mental port scan; you open the one page and the sick daemon is the red row.
204
+
205
+ And there's a quieter payoff: the stack starts feeling like one product. Honeycomb, Nectar, and Doctor stay sharply separated where it counts, in process boundaries and data ownership, while you experience them as a single coherent surface. Separation of concerns for the machine, one front door for the human. That's the trade Hive makes, and it's the right one.
206
+
207
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
208
+
209
+ ## 🎛️ Other interfaces
210
+
211
+ Straight talk: Hive ships two surfaces, and that's it for now.
212
+
213
+ - **Dashboard.** The web portal at `http://127.0.0.1:3853`. This is the product.
214
+ - **HTTP portal API.** Hive's own loopback endpoints: `GET /health` for cheap liveness (status, uptime, version) and `GET /api/fleet-status` for fleet health, plus the proxied `/api/*` and `/setup/*` surfaces of the daemons behind it.
215
+
216
+ No MCP server, no SDK, and none pretending. The workload daemons own those surfaces; Hive owns the door.
217
+
218
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
219
+
220
+ <h2 align="center"><a href="https://ideas.theapiary.sh">📍 Status & Roadmap</a></h2>
221
+
222
+ Hive is **pre-release (v0.2.x)**. The portal daemon, the migrated dashboard, the server-side BFF proxy, the OS service units and registry wiring, the portal gate, the fleet readiness surface, and the Hive Graph page (PRD-015) have all landed. We document what's real and flag what's in flight; the roadmap and idea board live at [ideas.theapiary.sh](https://ideas.theapiary.sh).
223
+
224
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
225
+
226
+ ## 🛠️ Development
227
+
228
+ ```bash
229
+ npm install
230
+ npm run build # tsc + esbuild → dist/cli.js
231
+ npm run typecheck # tsc --noEmit
232
+ npm test # vitest run
233
+ ```
234
+
235
+ Node `>= 22`, TypeScript, Hono on the server, React on the dashboard. The proxy surface (header hygiene, redirect pinning, streaming) carries its own test coverage; keep it that way.
236
+
237
+ <img src="assets/brand/divider-major.svg" width="100%" height="6">
238
+
239
+ ## 🙏 Credits
240
+
241
+ - **[Activeloop](https://activeloop.ai/)** brings **[Deeplake](https://deeplake.ai/)** (the versioned, multi-modal database for AI with native vector + columnar indexing and hybrid search) and **[Hivemind](https://github.com/activeloopai/hivemind)**, the open-source agent-memory project Honeycomb is built upon.
242
+ - **[Legion Code Inc](https://github.com/legioncodeinc)** brings the **multi-tier memory system** (Tier 1 / 2 / 3 keys, summaries, raw), **code base atlas memory architecture**, **auto healing service**, **session priming**, **automatic skill development & propagation**, the **pollinating loop**, the **knowledge graph**, **cross device cross repository cross team skill sharing**, and the daemon architecture that turns Deeplake into a shared brain your coding agents read and write on every turn.
243
+
244
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
245
+
246
+ ## License
247
+
248
+ Hive is licensed under the **GNU Affero General Public License v3.0 or later** ([AGPL-3.0-or-later](LICENSE)).
249
+
250
+ Use it commercially or privately, free of charge. In return: keep the copyright and license notices intact, and if you modify it, your changes ship under the same AGPL license with source available. The "Affero" part is the point: run a modified version as a network service and you owe its source to the users who interact with it. No locking a fork behind a SaaS wall.
251
+
252
+ © 2026 Legion Code Inc.
253
+
254
+ <img src="assets/brand/divider-minor.svg" width="100%" height="3">
255
+
256
+ <p align="center">
257
+ <sub><strong>Built by <a href="https://github.com/legioncodeinc">Legion Code Inc</a></strong> · <strong>Powered by <a href="https://deeplake.ai/">Activeloop Deeplake</a></strong> · <a href="https://theapiary.sh/">theapiary.sh</a></sub>
258
+ </p>
259
+
260
+ <p align="center"><strong>I am Legion. We are Legion.</strong></p>
261
+
262
+ <p align="center">#vibewithlegion</p>