@legioncodeinc/honeycomb 0.1.0

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 (61) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/.claude-plugin/plugin.json +15 -0
  3. package/LICENSE +661 -0
  4. package/README.md +268 -0
  5. package/assets/logos/fonts/Inter-Italic-VariableFont_opsz_wght.ttf +0 -0
  6. package/assets/logos/fonts/Inter-VariableFont_opsz_wght.ttf +0 -0
  7. package/assets/logos/fonts/JetBrainsMono-Bold.woff2 +0 -0
  8. package/assets/logos/fonts/JetBrainsMono-Medium.woff2 +0 -0
  9. package/assets/logos/fonts/JetBrainsMono-Regular.woff2 +0 -0
  10. package/assets/logos/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  11. package/assets/logos/honeycomb-memory-cluster.svg +17 -0
  12. package/assets/readme.md +117 -0
  13. package/assets/styles.css +11 -0
  14. package/assets/tokens/base.css +76 -0
  15. package/assets/tokens/colors.css +111 -0
  16. package/assets/tokens/fonts.css +32 -0
  17. package/assets/tokens/spacing.css +48 -0
  18. package/assets/tokens/typography.css +38 -0
  19. package/bundle/cli.js +20049 -0
  20. package/daemon/dashboard-app.js +118 -0
  21. package/daemon/index.js +49533 -0
  22. package/daemon/package.json +1 -0
  23. package/embeddings/embed-daemon.js +218 -0
  24. package/harnesses/claude-code/.claude-plugin/plugin.json +14 -0
  25. package/harnesses/claude-code/bundle/capture.js +16459 -0
  26. package/harnesses/claude-code/bundle/index.js +16459 -0
  27. package/harnesses/claude-code/bundle/package.json +1 -0
  28. package/harnesses/claude-code/bundle/pre-tool-use.js +16459 -0
  29. package/harnesses/claude-code/bundle/session-end.js +16459 -0
  30. package/harnesses/claude-code/bundle/session-start.js +16459 -0
  31. package/harnesses/claude-code/hooks/hooks.json +86 -0
  32. package/harnesses/codex/bundle/capture.js +16451 -0
  33. package/harnesses/codex/bundle/index.js +16451 -0
  34. package/harnesses/codex/bundle/package.json +1 -0
  35. package/harnesses/codex/bundle/pre-tool-use.js +16451 -0
  36. package/harnesses/codex/bundle/session-start.js +16451 -0
  37. package/harnesses/codex/package.json +7 -0
  38. package/harnesses/cursor/bundle/capture.js +16459 -0
  39. package/harnesses/cursor/bundle/index.js +16459 -0
  40. package/harnesses/cursor/bundle/package.json +1 -0
  41. package/harnesses/cursor/bundle/pre-tool-use.js +16459 -0
  42. package/harnesses/cursor/bundle/session-end.js +16459 -0
  43. package/harnesses/cursor/bundle/session-start.js +16459 -0
  44. package/harnesses/hermes/bundle/index.js +30 -0
  45. package/harnesses/hermes/bundle/package.json +1 -0
  46. package/harnesses/openclaw/dist/index.js +55 -0
  47. package/harnesses/openclaw/dist/package.json +1 -0
  48. package/harnesses/openclaw/openclaw.plugin.json +47 -0
  49. package/harnesses/openclaw/package.json +22 -0
  50. package/harnesses/pi/bundle/index.js +30 -0
  51. package/harnesses/pi/bundle/package.json +1 -0
  52. package/mcp/bundle/package.json +1 -0
  53. package/mcp/bundle/server.js +24014 -0
  54. package/package.json +137 -0
  55. package/scripts/ensure-embed-deps.mjs +67 -0
  56. package/scripts/ensure-tree-sitter.mjs +89 -0
  57. package/sdk/index.js +312 -0
  58. package/sdk/openai.js +63 -0
  59. package/sdk/package.json +1 -0
  60. package/sdk/react.js +40 -0
  61. package/sdk/vercel.js +43 -0
package/README.md ADDED
@@ -0,0 +1,268 @@
1
+ <!-- ─────────────────────────────── HERO ─────────────────────────────── -->
2
+
3
+ <p align="center">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logos/honeycomb-memory-cluster-wordmark-on-dark.svg">
6
+ <img src="assets/logos/honeycomb-memory-cluster-wordmark.svg" alt="Honeycomb" height="84">
7
+ </picture>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <strong>Shared, persistent memory for your AI coding agents.</strong><br>
12
+ What one harness learns, every other one recalls, across sessions, tools, devices, and teammates.
13
+ </p>
14
+
15
+ <p align="center">
16
+ <a href="https://github.com/legioncodeinc/honeycomb/actions"><img src="https://img.shields.io/github/actions/workflow/status/legioncodeinc/honeycomb/ci.yaml?branch=main&label=CI&style=flat-square" alt="CI"></a>
17
+ <img src="https://img.shields.io/badge/version-0.1.0-F7A823?style=flat-square" alt="Version 0.1.0">
18
+ <img src="https://img.shields.io/badge/node-%E2%89%A522-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node ≥ 22">
19
+ <a href="https://deeplake.ai"><img src="https://img.shields.io/badge/powered%20by-Deep%20Lake-ff5a1f?style=flat-square" alt="Powered by Deep Lake"></a>
20
+ <a href="#license"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue?style=flat-square" alt="AGPL-3.0"></a>
21
+ <img src="https://img.shields.io/badge/harnesses-6-F7A823?style=flat-square" alt="6 harnesses">
22
+ </p>
23
+
24
+ <!-- ────────────────────────────── PARTNERS ────────────────────────────── -->
25
+
26
+ <p align="center">
27
+ <a href="https://github.com/legioncodeinc">
28
+ <picture>
29
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logos/legion-logo-dark.svg">
30
+ <img src="assets/logos/legion-logo-light.svg" alt="Legion Code" height="34">
31
+ </picture>
32
+ </a>
33
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
34
+ <a href="https://activeloop.ai"><img src="assets/logos/activeloop-full-mark-logo.svg" alt="Activeloop" height="26"></a>
35
+ </p>
36
+
37
+ <p align="center"><sub>A <a href="https://github.com/legioncodeinc"><strong>Legion Code</strong></a> &times; <a href="https://activeloop.ai"><strong>Activeloop</strong></a> collaboration · built on <a href="https://github.com/activeloopai/hivemind">Hivemind</a> &amp; <a href="https://deeplake.ai">Deep Lake</a></sub></p>
38
+
39
+ ---
40
+
41
+ AI coding agents forget. They forget across sessions, and they forget across tools. A decision you reached in Claude Code at midnight is invisible to Cursor the next morning. **Honeycomb fixes that.** A local daemon captures what happens on every turn, distills it, and serves it back to any harness that asks. Learn something once; recall it everywhere, on any machine, in any tool, for anyone on your team.
42
+
43
+ > **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)**.
44
+
45
+ <table>
46
+ <tr>
47
+ <td width="50%" valign="top">
48
+
49
+ #### 🛹 For vibe coders
50
+ Stop re-explaining your project to a fresh agent every morning. Honeycomb remembers your decisions, your conventions, and the fixes that worked, then primes your next session with them automatically. One install command, a friendly dashboard, no SQL, no config gauntlet.
51
+
52
+ </td>
53
+ <td width="50%" valign="top">
54
+
55
+ #### 🏢 For enterprise teams
56
+ One shared brain across every developer, device, and coding tool. A skill discovered by one engineer propagates to the whole team on their next session. Tenancy is enforced at the storage layer; credentials live behind a single loopback boundary; everything is versioned and auditable.
57
+
58
+ </td>
59
+ </tr>
60
+ </table>
61
+
62
+ ---
63
+
64
+ ## ✨ What makes Honeycomb different
65
+
66
+ A vector database can store text and hand it back by similarity. Honeycomb does that, and then keeps going. On top of [Activeloop Deep Lake](https://deeplake.ai), **[Legion Code](https://github.com/legioncodeinc)** builds the memory system that turns raw recall into a brain your agents actually trust:
67
+
68
+ - **🧠 Three-tier memory.** Every memory exists at three resolutions at once (one-line **key** → **summary** → full **raw** session). Agents skim the keys, then zoom into detail only when they need it. *(Legion Code)*
69
+ - **🎯 Session priming.** At session start a tiny, bounded index (~300-800 tokens) of your most relevant keys is pushed once; the agent pulls deeper on demand. No per-turn injection, no "lost in the middle." *(Legion Code)*
70
+ - **🍯 Skillify & propagation.** The daemon mines reusable skills out of real sessions, gates them for quality, and auto-pulls the team's latest skills into every agent at session start. Author a skill once; everyone gets it. *(Legion Code)*
71
+ - **🌼 The pollinating loop.** A periodic maintenance pass reasons over accumulated memory and the entity graph to merge duplicates, prune junk, and supersede stale facts, so memory gets *sharper* over time, not noisier. *(Legion Code)*
72
+ - **🕸️ Knowledge graph.** An entity-centric, versioned, provenance-tracked index over your memories. Newer facts supersede stale ones; every claim traces back to the session that produced it. *(Legion Code)*
73
+ - **🔀 Hybrid recall.** Lexical (BM25) and semantic (768-dim vectors) search fused by Reciprocal Rank Fusion, with a measured **recall@5 ≈ 0.72-0.78**. *(built on Deep Lake)*
74
+ - **🗺️ Codebase graph.** A multi-language AST graph (TypeScript, JS, Python, Go, Rust, Java, Ruby, C/C++) of files, functions, and their call/import/extends edges, queryable for impact and neighborhood. *(Legion Code)*
75
+
76
+ ---
77
+
78
+ ## 🚀 Install (one command)
79
+
80
+ No Node? No npm? No problem. The installer detects and sets up everything, then **opens a dashboard in your browser**. The terminal is just a progress log; the product is the first thing you touch.
81
+
82
+ ```bash
83
+ # macOS / Linux
84
+ curl -fsSL https://get.theapiary.sh | sh
85
+ ```
86
+
87
+ ```powershell
88
+ # Windows (PowerShell)
89
+ irm https://get.theapiary.sh/install.ps1 | iex
90
+ ```
91
+
92
+ That single line installs a current Node/npm if missing, installs **`@legioncodeinc/honeycomb`** globally, brings up the daemon on `127.0.0.1:3850`, and opens the dashboard. Then:
93
+
94
+ 1. The dashboard loads in a **pre-auth setup state**. No token ever touches your shell.
95
+ 2. Click **"First time setup."** Honeycomb runs the Deep Lake device-flow login *for* you, shows the code right on the page, and opens the verification tab.
96
+ 3. Done. The same running daemon lights up its Deep Lake-backed surfaces, and capture and recall go live.
97
+
98
+ > Already running **Hivemind**? The dashboard detects it, explains that running both is unsupported, and **"Proceed with Honeycomb"** migrates you cleanly. Prefer to inspect before you pipe? The script and a published `SHA256SUMS` are served from [get.theapiary.sh](https://get.theapiary.sh).
99
+
100
+ <details>
101
+ <summary><strong>Prefer to build from source?</strong></summary>
102
+
103
+ ```bash
104
+ git clone https://github.com/legioncodeinc/honeycomb.git
105
+ cd honeycomb
106
+ npm install
107
+ npm run build # tsc + esbuild → bundle/cli.js, daemon, harness, MCP, embed bundles
108
+
109
+ node bundle/cli.js setup # detect your assistants, wire hooks, start the daemon
110
+ node bundle/cli.js status # check the daemon and your environment
111
+ ```
112
+
113
+ `setup` wires every coding assistant it detects and starts the loopback daemon; any storage command auto-starts the daemon if it is down. You'll need Activeloop Deep Lake credentials; the device flow above writes them to the shared `~/.deeplake/credentials.json`.
114
+
115
+ </details>
116
+
117
+ ---
118
+
119
+ ## 🐝 First memory, shared across tools
120
+
121
+ ```bash
122
+ # Capture a decision once…
123
+ honeycomb remember "we deploy from the prd-022 branch, never from main"
124
+
125
+ # …recall it anywhere: same daemon, same Deep Lake, any harness
126
+ honeycomb recall "how do we deploy"
127
+ ```
128
+
129
+ Write it from Claude Code; recall it from Cursor tomorrow on a different laptop. That's the whole point.
130
+
131
+ ---
132
+
133
+ ## 🏗️ How it works
134
+
135
+ Honeycomb is a long-lived local **daemon** plus thin clients. The daemon is the *only* process that talks to storage. Every harness, the CLI, the MCP server, and the SDK reach it over loopback HTTP. One shared memory behind one boundary; your Deep Lake credentials in exactly one place.
136
+
137
+ ```
138
+ Claude Code Cursor Codex Hermes pi OpenClaw
139
+ │ │ │ │ │ │
140
+ └───────────┴────┬────┴────────┴───────┴────────┘
141
+ hooks · CLI · MCP · SDK (thin clients)
142
+
143
+ loopback HTTP · 127.0.0.1:3850
144
+
145
+ ┌──────────────────────────────┐
146
+ │ honeycomb daemon │ sole storage client
147
+ │ capture · recall · skillify │ owns your credentials
148
+ │ pollinate · session priming │
149
+ └───────────────┬──────────────┘
150
+
151
+ ┌──────────────────────────────┐
152
+ │ Activeloop Deep Lake │ versioned · columnar + vector
153
+ │ Tier 1 · Tier 2 · Tier 3 │ BM25 + semantic hybrid
154
+ └──────────────────────────────┘
155
+ ```
156
+
157
+ - **Capture on every turn.** Per-harness hooks stream each turn to the daemon, which distills and persists it: always-on, cheap, and soft-failing so a capture error never breaks your agent's turn.
158
+ - **Recall through the daemon.** Any harness asks for relevant memories; the daemon runs the query and returns results already scoped to your org and workspace. The client never sees a storage handle or a line of SQL.
159
+ - **Shared by construction.** Every client reaches the same daemon and the same dataset, so a memory written from one harness is recallable from all of them.
160
+
161
+ ---
162
+
163
+ ## 🧠 The three-tier memory system
164
+
165
+ This is the heart of what **Legion Code** adds on top of Deep Lake. The same memory lives at three levels of detail at once, and the agent chooses how far to zoom:
166
+
167
+ | Tier | What it is | When it's used |
168
+ |---|---|---|
169
+ | **Tier 1 · Key** | One keyword-dense sentence per session or fact. The index. | Skimmed at session start during priming. |
170
+ | **Tier 2 · Summary** | A distilled recap: goals, decisions, blockers, outcomes. Carries the semantic embedding. | Pulled when a key looks relevant. |
171
+ | **Tier 3 · Raw** | The full session dialogue: exact turns and tool calls, never rewritten. | Resolved when the agent needs ground truth. |
172
+
173
+ Resolution is a **deterministic SQL join, not a fuzzy search**. `key → summary → raw` is a pointer walk down three Deep Lake tables. Mining ("find the thing I didn't know to name") is where the hybrid vector + lexical search kicks in. Cheap when you're skimming, precise when you're zooming.
174
+
175
+ ---
176
+
177
+ ## 💎 Why Deep Lake makes the difference
178
+
179
+ Most agent-memory tools bolt onto a vector-only store, which forces *every* access pattern through a similarity engine. Honeycomb's zoom model needs both exact joins **and** semantic search, and [**Deep Lake**](https://deeplake.ai), the database for AI, gives it both natively:
180
+
181
+ - **SQL + vector in one engine.** The cheap skim and the deterministic zoom run as SQL; semantic mining runs as vector search; a single store serves both. No second database, no sync problem.
182
+ - **Versioned & append-only.** Writes bump a version instead of mutating in place, so memory's full history stays on disk. Supersession marks old facts stale without losing them, which is what makes the pollinating loop safe and auditable.
183
+ - **Hybrid lexical + semantic search.** BM25 and 768-dim `nomic-embed-text-v1.5` cosine arms, fused by Reciprocal Rank Fusion. Turn embeddings off and recall silently falls back to lexical, never an error, no quality cliff.
184
+ - **Built to scale & BYOC.** The same substrate that serves one developer's laptop serves an organization's entire history, in your own cloud bucket if you want it.
185
+
186
+ > Honeycomb stands on two shoulders: **[Deep Lake](https://deeplake.ai)** gives the memories somewhere durable and queryable to live, and **[Hivemind](https://github.com/activeloopai/hivemind)**, Activeloop's open-source agent-memory project, is the foundation Legion Code extended into Honeycomb's multi-tier system.
187
+
188
+ ---
189
+
190
+ ## 🔌 Supported harnesses
191
+
192
+ Honeycomb ships thin clients for six coding harnesses, all wired simultaneously, all reading and writing the same shared memory:
193
+
194
+ | | | |
195
+ |---|---|---|
196
+ | **Claude Code** | **Cursor** | **Codex** |
197
+ | **Hermes** | **pi** | **OpenClaw** |
198
+
199
+ `honeycomb setup` detects the ones you have installed and wires each idempotently; `honeycomb uninstall` reverses only Honeycomb's changes. A skill mined while you were in Cursor is auto-pulled and ready in Claude Code on your next session.
200
+
201
+ ---
202
+
203
+ ## 🎛️ Interfaces
204
+
205
+ Four ways to reach the same daemon and the same shared memory:
206
+
207
+ - **CLI.** The unified `honeycomb` binary. Core verbs: `install`, `setup`, `status`, `daemon start|stop|status`, `remember`, `recall`, `sessions`, `skill`, `goal`, `sources`, `graph`, `dashboard`. Run `honeycomb --help` for the full list.
208
+ - **Dashboard.** A local web UI the daemon serves at **`http://127.0.0.1:3850/dashboard`**: KPIs (memories, turns, est. savings, team skills), memory recall, the codebase graph, captured turns, skill-sync, and settings, with a live request log. It's also the guided-setup surface for first-time login.
209
+ - **MCP server.** A [Model Context Protocol](https://modelcontextprotocol.io) server (bundled to `mcp/bundle`) exposing Honeycomb's read/resolve and search/mine tools to any MCP-capable host.
210
+ - **TypeScript SDK.** The `@legioncodeinc/honeycomb` client with framework subpath entries (`/react`, `/vercel`, `/openai`). The core entry is fetch-only and browser-safe; `react` and `ai` are optional peers.
211
+
212
+ ---
213
+
214
+ ## 📍 Status & roadmap
215
+
216
+ Honeycomb is **v0.1.0, pre-release**. We document what's real and flag what's opt-in.
217
+
218
+ **Working today**
219
+ - Capture-to-recall, proven end-to-end against live Deep Lake (`npm run smoke:golden-path` with credentials).
220
+ - One-command install → guided dashboard setup, the loopback daemon, the unified CLI, per-harness hooks, the MCP server, and the SDK.
221
+ - Three-tier memory, session priming, skillify + propagation, the pollinating loop, the knowledge graph, and the codebase graph.
222
+
223
+ **Opt-in / by design**
224
+ - **Embeddings are opt-in.** Recall runs the lexical BM25 path by default; turning on the local embedding runtime (≈600 MB, model fetched on first warmup) adds 768-dim semantic recall. The fallback is silent and intentional; recall never errors when embeddings are unavailable.
225
+ - **The distillation pipeline is off by default** to avoid surprise model spend; enable it when you want background summarization and graph extraction.
226
+ - The daemon binds **loopback only** (single machine). Cross-device and cross-user sharing happen through Deep Lake's org/workspace scope, not a remote daemon bind.
227
+
228
+ Full documentation, guides, and the roadmap live at **[theapiary.sh](https://theapiary.sh)**.
229
+
230
+ ---
231
+
232
+ ## 🛠️ Development
233
+
234
+ ```bash
235
+ npm install
236
+ npm run build # tsc + esbuild → bundle/cli.js, the daemon, harness, MCP, and embed bundles
237
+ npm run ci # the gate: typecheck + duplication (jscpd) + tests (vitest) + SQL-safety audit
238
+ ```
239
+
240
+ `npm run ci` is the quality gate every change must pass.
241
+
242
+ ---
243
+
244
+ ## 🙏 Credits
245
+
246
+ Honeycomb exists because two halves fit together:
247
+
248
+ - **[Activeloop](https://activeloop.ai)** brings **[Deep Lake](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.
249
+ - **[Legion Code Inc](https://github.com/legioncodeinc)** brings the **multi-tier memory system** (Tier 1 / 2 / 3 keys, summaries, raw), **session priming**, **skillify & propagation**, the **pollinating loop**, the **knowledge graph**, and the daemon architecture that turns Deep Lake into a shared brain your coding agents read and write on every turn.
250
+
251
+ Neither half stands alone. Deep Lake and Hivemind give the memories somewhere durable to live; Legion Code gives every harness one consistent way to write to and recall from it, so what one agent learns survives a closed session, a switched tool, a new machine, and a new teammate.
252
+
253
+ ---
254
+
255
+ ## License
256
+
257
+ Honeycomb is licensed under the **GNU Affero General Public License v3.0 or later** ([AGPL-3.0-or-later](LICENSE)).
258
+
259
+ 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.
260
+
261
+ © 2026 Legion Code Inc.
262
+
263
+ ---
264
+
265
+ <p align="center">
266
+ <sub><strong>Built by <a href="https://github.com/legioncodeinc">Legion Code Inc</a></strong> · <strong>Powered by <a href="https://deeplake.ai">Activeloop Deep Lake</a></strong> · <strong>Built on <a href="https://github.com/activeloopai/hivemind">Hivemind</a></strong></sub><br>
267
+ <sub><a href="https://theapiary.sh">theapiary.sh</a></sub>
268
+ </p>
@@ -0,0 +1,17 @@
1
+ <svg width="160" height="160" viewBox="0 0 160 160" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Honeycomb">
2
+ <defs>
3
+ <linearGradient id="bCell" x1="80" y1="59" x2="80" y2="101" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#FFC04D"/>
5
+ <stop offset="1" stop-color="#E0860C"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <g stroke="#F7A823" stroke-width="5.5" stroke-linejoin="round" fill="none" stroke-opacity="0.85">
9
+ <path d="M 147.1 80 L 135.1 100.8 L 111.1 100.8 L 99.1 80 L 111.1 59.2 L 135.1 59.2 Z"/>
10
+ <path d="M 125.5 117.3 L 113.5 138.1 L 89.5 138.1 L 77.5 117.3 L 89.5 96.5 L 113.5 96.5 Z"/>
11
+ <path d="M 82.5 117.3 L 70.5 138.1 L 46.5 138.1 L 34.5 117.3 L 46.5 96.5 L 70.5 96.5 Z"/>
12
+ <path d="M 60.9 80 L 48.9 100.8 L 24.9 100.8 L 12.9 80 L 24.9 59.2 L 48.9 59.2 Z"/>
13
+ <path d="M 82.5 42.7 L 70.5 63.5 L 46.5 63.5 L 34.5 42.7 L 46.5 21.9 L 70.5 21.9 Z"/>
14
+ <path d="M 125.5 42.7 L 113.5 63.5 L 89.5 63.5 L 77.5 42.7 L 89.5 21.9 L 113.5 21.9 Z"/>
15
+ </g>
16
+ <path d="M 104 80 L 92 100.8 L 68 100.8 L 56 80 L 68 59.2 L 92 59.2 Z" fill="url(#bCell)" stroke="#FFD27A" stroke-width="1.5" stroke-linejoin="round"/>
17
+ </svg>
@@ -0,0 +1,117 @@
1
+ # Honeycomb — Design System
2
+
3
+ The brand, tokens, components, and UI kit for **Honeycomb** — shared, self-improving memory for AI coding agents. A **Legion Code × Activeloop** collaboration: Honeycomb is the agent-memory product; [Activeloop Deep Lake](https://activeloop.ai) is the vector + columnar substrate its memory lives in.
4
+
5
+ > One agent solves a problem on Monday; every agent on the team recalls and reuses it after — context inspectable, scoped, and repairable, not trapped behind a black-box API.
6
+
7
+ This design system inherits the structural foundations of the parent **Legion Code** brand (dark-native, Inter + JetBrains Mono, 4px spacing, "mono is the texture of trust") and gives Honeycomb its own identity: a **warm honey-amber** hue and the **comb-cell** motif, with a reserved **violet "Pollinate"** accent for the Pollinating consolidation loop.
8
+
9
+ ---
10
+
11
+ ## Sources
12
+
13
+ Everything here was derived from material the team provided. You may not have access; links are recorded so you can go deeper if you do.
14
+
15
+ - **GitHub — [`legioncodeinc/honeycomb`](https://github.com/legioncodeinc/honeycomb)** — the product. Daemon + thin clients (six harnesses), the memory pipeline, and the dashboard. Key reads: `README.md`, `library/knowledge/private/overview.md`, `library/knowledge/private/ai/pollinating-loop.md`, and the dashboard contract under `src/dashboard/` (`contracts.ts`, `views.ts`, `html.ts`) — the UI kit recreates that dashboard. Explore the repo to build higher-fidelity Honeycomb surfaces.
16
+ - **GitHub — [`legioncodeinc/brands`](https://github.com/legioncodeinc) → `legion-code-inc/`** — the parent Legion Code brand: token stylesheet (`colors_and_type.css`), the Inter + JetBrains Mono font families (imported here), and the brand guide. Honeycomb's structure is inherited from it.
17
+ - **Activeloop Deep Lake — [activeloop.ai](https://activeloop.ai)** — the storage partner; logo in `logos/`.
18
+
19
+ > ⚠️ **Honeycomb has no logo of its own yet.** The comb-cell mark in `logos/honeycomb-mark.svg` is a clean geometric placeholder built for this system. Replace it with the official mark when one exists.
20
+
21
+ ---
22
+
23
+ ## What it is — product context
24
+
25
+ Honeycomb is a long-lived local **daemon** (binds `127.0.0.1:3850`, loopback only) plus thin clients. The daemon is the *sole* Deep Lake client; every harness, the CLI, the MCP server, and the SDK reach it over loopback HTTP.
26
+
27
+ - **Capture** every turn from any of six harnesses (Claude Code, Cursor, Codex, Hermes, pi, OpenClaw).
28
+ - **Distill** raw events into source-backed facts, entities, and skills with provenance.
29
+ - **Recall** the right context before the next turn — hybrid lexical (BM25) + 768-dim semantic.
30
+ - **Compound** — the **Pollinating loop** periodically merges duplicates, prunes junk, and supersedes stale claims, so memory gets sharper instead of noisier. The **skillify** miner turns recurring traces into reusable team skills.
31
+
32
+ The most user-visible surface is the **dashboard** (recreated in `ui_kits/dashboard/`): KPIs, sessions, settings, the codebase graph, org rules, skill-sync, and a live log.
33
+
34
+ ---
35
+
36
+ ## Content fundamentals
37
+
38
+ How Honeycomb writes. Inherited from Legion Code's voice — *the direct expert next door* — sharpened for a memory product.
39
+
40
+ - **Voice:** calm, plain, technically literate. Never hedging, never hype. Short declaratives. "Memory that sticks." "Learn something once, recall it everywhere."
41
+ - **Person:** address the user as **you** ("your agents", "what one agent learns"); the product is **Honeycomb** or **the daemon**, never "we" inside the product UI. Marketing prose may use "we" sparingly.
42
+ - **Casing:** sentence case everywhere — headings, buttons, labels. The wordmark **honeycomb** is lowercase. Mono labels/eyebrows are the only UPPERCASE, and only for small section labels.
43
+ - **Claims carry evidence.** Every recalled memory shows its **source** (a file path or session id) and a **score**. "Receipts, or it doesn't count." The `verified` (green) state means source-backed.
44
+ - **Mono for anything you could click, copy, or search:** memory keys, session ids, hashes, file paths, recall queries, token counts, timestamps. When the user sees mono, they trust it's real.
45
+ - **Signature vocabulary:** *memory, recall, capture, distill, the comb, cells, Pollinating, consolidate, skillify, harness, daemon, provenance, source-backed, scope (personal/team/org).*
46
+ - **No emoji.** Status is carried by color + a small dot/glyph, never an emoji. The only "icon" glyphs are the comb hexagon, the `✓` verified check, and rule dots `● / ○`.
47
+ - **Numbers are concrete and mono:** `1,284 memories`, `0.94`, `128k tok`, `:3850`. No vague "lots" — show the count.
48
+
49
+ **Examples (from the product):**
50
+ - `recall "how do we deploy"` → `4 hits · 0.94 top`
51
+ - "Not logged in to Honeycomb. Run: `honeycomb login`"
52
+ - "No graph built for this workspace. Run `honeycomb graph build`."
53
+ - "While you sleep, the AI goes back through everything it learned, tosses the junk, ties the pieces together, and wakes up smarter."
54
+
55
+ ---
56
+
57
+ ## Visual foundations
58
+
59
+ **Palette.** Dark-native, warm-tinted. Canvas is a warm near-black (`#0C0A07`) — five surfaces, four text levels, three border weights. One brand hue — **honey amber `#F7A823`** — governed by a **scarcity rule**: one saturated honey region per visible view (the primary action, the active recall, the live comb). A reserved second accent — **pollinate violet `#8B7CF0`** — appears only for the Pollinating loop and night/maintenance states. **Verified-green `#3DDC97`** (inherited from Legion) marks source-backed/proven memory. Severity colors (critical/warning/info/success) are semantic only, never decorative. A light theme exists for docs and exported reports.
60
+
61
+ **Typography.** **Inter** for all UI and prose; **JetBrains Mono** for every coordinate of trust. Modular 1.25 scale on a 16px base. Headings are Inter 700 with tight tracking (`-0.02 to -0.04em`). Eyebrows are uppercase mono with `0.08em` tracking. Display is reserved for marketing hero.
62
+
63
+ **Spacing & layout.** 4px base unit; every value a multiple of 4. Generous whitespace. Dashboard content is a centered max-width column (~1180px); panels sit in a responsive 2-column grid that collapses to one. Layout is calm and gridded — no diagonal or overlapping chrome.
64
+
65
+ **Backgrounds.** Flat warm-dark surfaces. **No gradient washes**, no photographic hero imagery, no noise/grain. The one recurring texture is the **comb** — interlocking hexagonal cells (see `guidelines/cards/brand-comb.html`), each cell a memory; lit cells are recalled/verified/pollinating. Use it as a quiet motif (corner fields, empty-state art, loaders), never a loud full-bleed pattern.
66
+
67
+ **Corners & cards.** Five-step radius ladder: 4 (chips), 8 (buttons/inputs), 12 (cards), 16 (panels/hero), full (dots/avatars). **Cards use a 1px border on `bg.elevated`, 12px radius, and no drop shadow** — border, not elevation, defines a card. The single expressive light is the **honey/pollinate glow** (`--glow-honey`, `--glow-pollinate`), used on exactly one focused element (an active recall hit, a pollinating cell).
68
+
69
+ **Borders & dividers.** Three weights (`subtle / default / strong`). Panel headers separate from body with a `border-subtle` rule. Hairline (1px) everywhere — no heavy rules.
70
+
71
+ **Elevation & shadow.** Three subtle ambient shadows (`sm/md/lg`) for genuinely floating UI (menus, toasts). Cards and panels do not use them. No colored decorative shadows except the two glows.
72
+
73
+ **Motion.** Disciplined and brief. Default easing `cubic-bezier(0.2, 0.8, 0.2, 1)`; durations 120ms (fast), 200ms (base), 400ms (slow). Recall results fade-and-rise in with a ~55ms stagger. The **one exception** is the **Pollinating pulse** (`--dur-pollinate` 900ms, ease-in-out, alternating opacity) — slow and breathing, used only for consolidation states. `prefers-reduced-motion` disables all motion.
74
+
75
+ **Hover / press.** Hover lightens fills one step (honey → honey-hover) or brightens a card border to `strong`. Press nudges `translateY(1px)` — no scale bounce. Focus shows a 2px honey outline at 2px offset, or a 3px honey-subtle ring on inputs.
76
+
77
+ **Transparency & blur.** Used sparingly: the `*-subtle` token tints (12–14% honey/pollinate/severity) for soft fills behind badges and banners. No glassmorphism / backdrop-blur chrome.
78
+
79
+ **Imagery vibe.** Warm, dark, restrained. If photography is ever introduced, it should be warm-toned and low-key to sit on the canvas — but the brand leans on the comb motif and mono typography over imagery.
80
+
81
+ ---
82
+
83
+ ## Iconography
84
+
85
+ Honeycomb inherits Legion Code's icon discipline.
86
+
87
+ - **System:** **[Lucide](https://lucide.dev)** — 24×24 grid, **1.5px stroke, stroked (not filled), geometric**, no mascots or metaphors. Load from CDN: `https://unpkg.com/lucide-static/icons/<name>.svg` (or the `lucide-react` package in a build). Match `currentColor` so icons inherit text color.
88
+ - **The verified check** (`✓`) gets a slight weight bump (~2px) — the one icon that signals trust may be a touch heavier. Rendered in `--verified` green.
89
+ - **The brand glyph** is the **comb hexagon** (`logos/honeycomb-mark.svg`) — the only bespoke mark. Use single hex cells as bullets/status chips (see `MemoryCard`), and the interlocking comb as motif/empty-state art.
90
+ - **Status is color + dot, not emoji.** Session/agent/rule states use a small filled circle in the semantic color. Rules use `●` (active) / `○` (inactive). **No emoji anywhere.**
91
+ - **No bespoke SVG illustration.** Beyond the hex mark and the comb grid (both pure geometry), don't hand-draw icons — pull the closest Lucide glyph.
92
+
93
+ > No Honeycomb icon set ships in the repo; Lucide is the documented substitute and matches the parent brand's stated icon rules. Flagged as a substitution.
94
+
95
+ ---
96
+
97
+ ## Index — what's in this system
98
+
99
+ **Foundations** (`styles.css` → `tokens/`)
100
+ - `tokens/colors.css` — surfaces, text, borders, honey, honey scale, pollinate, severity, verified (+ light theme)
101
+ - `tokens/typography.css` — families, 1.25 scale, weights, tracking
102
+ - `tokens/spacing.css` — 4px spacing, radii, elevation + glows, motion
103
+ - `tokens/fonts.css` — Inter + JetBrains Mono `@font-face` (binaries in `logos/fonts/`)
104
+ - `tokens/base.css` — element + semantic base styles
105
+
106
+ **Components** (`components/`) — React primitives, `window.HoneycombDesignSystem_d60529`
107
+ - `core/` — `Button`, `Badge`, `Card`, `Input`
108
+ - `honeycomb/` — `MemoryCard` (the signature recalled-memory cell), `Kpi` (dashboard metric tile)
109
+
110
+ **UI kit** (`ui_kits/`)
111
+ - `dashboard/` — interactive recreation of the daemon-served dashboard (KPIs, sessions, rules, codebase graph, skill-sync, live log, recall, Pollinating, connectivity-down banner)
112
+
113
+ **Specimen cards** (`guidelines/cards/`) — the Design System tab: Colors (5), Type (4), Spacing (3), Brand (2), Components (2).
114
+
115
+ **Logos** (`logos/`) — `honeycomb-mark.svg`, `honeycomb-wordmark.svg`, `activeloop.png`, `legion-code.png`, `fonts/`.
116
+
117
+ **Skill** — `SKILL.md` makes this directory usable as an Agent Skill in Claude Code.
@@ -0,0 +1,11 @@
1
+ /* ============================================================
2
+ Honeycomb — Design System entry stylesheet
3
+ The single file consumers link. Import order matters:
4
+ fonts → tokens → base. Keep this file as @import lines only.
5
+ ============================================================ */
6
+
7
+ @import url('tokens/fonts.css');
8
+ @import url('tokens/colors.css');
9
+ @import url('tokens/typography.css');
10
+ @import url('tokens/spacing.css');
11
+ @import url('tokens/base.css');
@@ -0,0 +1,76 @@
1
+ /* ============================================================
2
+ Honeycomb — Base + semantic element styles
3
+ Foundation layer applied to the document. Tag elements with the
4
+ classes below or use as a base for product CSS.
5
+ ============================================================ */
6
+
7
+ * { box-sizing: border-box; }
8
+
9
+ html, body {
10
+ background: var(--bg-canvas);
11
+ color: var(--text-primary);
12
+ font-family: var(--font-sans);
13
+ font-size: var(--text-base);
14
+ line-height: var(--lh-base);
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ font-feature-settings: 'cv11', 'ss01';
18
+ }
19
+
20
+ /* Headings — Inter 700, tight tracking */
21
+ h1, .h1 { font-size: var(--text-5xl); line-height: var(--lh-5xl); font-weight: 700; letter-spacing: var(--tracking-tight); margin: 0; }
22
+ h2, .h2 { font-size: var(--text-4xl); line-height: var(--lh-4xl); font-weight: 700; letter-spacing: -0.02em; margin: 0; }
23
+ h3, .h3 { font-size: var(--text-3xl); line-height: var(--lh-3xl); font-weight: 700; letter-spacing: -0.02em; margin: 0; }
24
+ h4, .h4 { font-size: var(--text-2xl); line-height: var(--lh-2xl); font-weight: 600; letter-spacing: -0.01em; margin: 0; }
25
+ h5, .h5 { font-size: var(--text-xl); line-height: var(--lh-xl); font-weight: 600; margin: 0; }
26
+ h6, .h6 { font-size: var(--text-lg); line-height: var(--lh-lg); font-weight: 600; margin: 0; }
27
+
28
+ p, .body { font-size: var(--text-base); line-height: var(--lh-base); color: var(--text-secondary); }
29
+ .body-lg { font-size: var(--text-lg); line-height: var(--lh-lg); color: var(--text-secondary); }
30
+ .body-sm { font-size: var(--text-sm); line-height: var(--lh-sm); color: var(--text-secondary); }
31
+ .caption { font-size: var(--text-xs); line-height: var(--lh-xs); color: var(--text-tertiary); }
32
+
33
+ /* Display — marketing hero only */
34
+ .display { font-size: var(--text-7xl); line-height: var(--lh-7xl); font-weight: 700; letter-spacing: -0.04em; }
35
+
36
+ /* Mono — the texture of trust. Memory keys, session ids, hashes,
37
+ file paths, recall queries, token counts, timestamps. */
38
+ code, kbd, samp, pre, .mono {
39
+ font-family: var(--font-mono);
40
+ font-feature-settings: 'liga' 0;
41
+ }
42
+ .mono-sm { font-family: var(--font-mono); font-size: var(--text-sm); line-height: var(--lh-sm); }
43
+ .mono-xs { font-family: var(--font-mono); font-size: var(--text-xs); line-height: var(--lh-xs); }
44
+
45
+ /* Eyebrow — uppercase mono label above section titles */
46
+ .eyebrow {
47
+ font-family: var(--font-mono);
48
+ font-size: var(--text-xs);
49
+ text-transform: uppercase;
50
+ letter-spacing: var(--tracking-wide);
51
+ color: var(--text-tertiary);
52
+ }
53
+
54
+ /* Wordmark — Inter 700, lowercase, tight tracking (the honeycomb mark) */
55
+ .wordmark {
56
+ font-family: var(--font-sans);
57
+ font-weight: 700;
58
+ letter-spacing: -0.03em;
59
+ }
60
+
61
+ /* Focus ring — honey, on interactive elements */
62
+ :focus-visible {
63
+ outline: 2px solid var(--honey);
64
+ outline-offset: 2px;
65
+ border-radius: var(--radius-sm);
66
+ }
67
+
68
+ /* Selection */
69
+ ::selection {
70
+ background: var(--honey-subtle);
71
+ color: var(--text-primary);
72
+ }
73
+
74
+ @media (prefers-reduced-motion: reduce) {
75
+ * { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
76
+ }
@@ -0,0 +1,111 @@
1
+ /* ============================================================
2
+ Honeycomb — Color tokens
3
+ Dark-native, warm-tinted. Inherits the Legion Code structure
4
+ (5 surfaces, 4 text levels, 3 borders, semantic severity) but
5
+ shifts the canvas warm and makes HONEY AMBER the one brand hue.
6
+
7
+ Two accents only:
8
+ --honey : the brand. Memory, recall, the live comb. Scarcity
9
+ rule applies — one saturated honey region per view.
10
+ --pollinate : violet. Reserved for the Pollinating consolidation
11
+ loop and night/maintenance states. Never decorative.
12
+ Use these tokens; never raw hex outside this file.
13
+ ============================================================ */
14
+
15
+ :root {
16
+ /* ---- Surfaces (dark — primary; warm near-black) --------------- */
17
+ --bg-canvas: #0C0A07;
18
+ --bg-surface: #15120B;
19
+ --bg-elevated: #1E1A11;
20
+ --bg-subtle: #29231799;
21
+ --bg-inset: #070501;
22
+
23
+ /* ---- Text (warm off-white on dark) --------------------------- */
24
+ --text-primary: #F7F3EC;
25
+ --text-secondary: #ADA28F;
26
+ --text-tertiary: #877E6C;
27
+ --text-disabled: #524B3C;
28
+ --text-inverse: #0C0A07;
29
+
30
+ /* ---- Borders & dividers (on dark) ---------------------------- */
31
+ --border-subtle: #221E15;
32
+ --border-default: #322B1E;
33
+ --border-strong: #483F2C;
34
+
35
+ /* ---- Brand: HONEY AMBER (scarcity rule applies) -------------- */
36
+ --honey: #F7A823;
37
+ --honey-hover: #FFBA47;
38
+ --honey-pressed: #D98C0C;
39
+ --honey-subtle: rgba(247, 168, 35, 0.12);
40
+ --honey-border: rgba(247, 168, 35, 0.32);
41
+ --honey-on: #1A1206; /* ink that sits on a honey fill */
42
+
43
+ /* ---- Honey scale (comb cells, heat, data viz) ---------------- */
44
+ --honey-50: #FFE9C2;
45
+ --honey-100: #FFD894;
46
+ --honey-200: #FFC661;
47
+ --honey-300: #F7A823;
48
+ --honey-400: #D98C0C;
49
+ --honey-500: #A86A07;
50
+ --honey-600: #6E4604;
51
+
52
+ /* ---- Pollinate: VIOLET (the Pollinating loop + night states) -------- */
53
+ --pollinate: #8B7CF0;
54
+ --pollinate-hover: #A89CF5;
55
+ --pollinate-pressed: #6E5DDB;
56
+ --pollinate-subtle: rgba(139, 124, 240, 0.14);
57
+ --pollinate-border: rgba(139, 124, 240, 0.34);
58
+ --pollinate-on: #0B0814;
59
+
60
+ /* ---- Severity (semantic; never decorative) ------------------- */
61
+ --severity-critical: #FF5C63;
62
+ --severity-critical-bg: rgba(255, 92, 99, 0.12);
63
+ --severity-warning: #FFC24B;
64
+ --severity-warning-bg: rgba(255, 194, 75, 0.12);
65
+ --severity-info: #5FA8FF;
66
+ --severity-info-bg: rgba(95, 168, 255, 0.12);
67
+ --severity-success: #3DDC97; /* verified-green: proven / receipts */
68
+ --severity-success-bg: rgba(61, 220, 151, 0.12);
69
+
70
+ /* ---- Status accents reused across product -------------------- */
71
+ --verified: #3DDC97; /* a proven, source-backed memory */
72
+ --verified-subtle: rgba(61, 220, 151, 0.12);
73
+ }
74
+
75
+ /* ---- Light theme — docs, printed/exported reports only --------- */
76
+ :root[data-theme="light"],
77
+ .theme-light {
78
+ --bg-canvas: #FBF7EF;
79
+ --bg-surface: #F5EFE2;
80
+ --bg-elevated: #FFFFFF;
81
+ --bg-subtle: #EFE7D5;
82
+ --bg-inset: #F0E8D8;
83
+
84
+ --text-primary: #1A1206;
85
+ --text-secondary: #5C513C;
86
+ --text-tertiary: #877E6C;
87
+ --text-disabled: #B5AC97;
88
+ --text-inverse: #FBF7EF;
89
+
90
+ --border-subtle: #EAE0CD;
91
+ --border-default: #DACFB6;
92
+ --border-strong: #C2B594;
93
+
94
+ --honey: #B7790A;
95
+ --honey-hover: #9A6606;
96
+ --honey-pressed: #7E5304;
97
+ --honey-subtle: rgba(183, 121, 10, 0.10);
98
+ --honey-border: rgba(183, 121, 10, 0.30);
99
+ --honey-on: #FFFFFF;
100
+
101
+ --pollinate: #6E5DDB;
102
+ --pollinate-hover: #5B49C6;
103
+ --pollinate-subtle: rgba(110, 93, 219, 0.10);
104
+ --pollinate-border: rgba(110, 93, 219, 0.28);
105
+
106
+ --severity-critical: #D93741;
107
+ --severity-warning: #B5790A;
108
+ --severity-info: #2E6FD9;
109
+ --severity-success: #18A968;
110
+ --verified: #18A968;
111
+ }