Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
611cb7d
docs: specify Cursor Hivemind Extension requirements (PRD-002 to PRD-…
thenotoriousllama Jun 12, 2026
270a562
Add reverse-engineered knowledge base under library/knowledge/private.
thenotoriousllama Jun 12, 2026
ccd9e12
feat: add hivemind-goals and hivemind-graph skills, update .gitignore
thenotoriousllama Jun 12, 2026
ed02a79
Merge pull request #1 from thenotoriousllama/doc/reverse-document
thenotoriousllama Jun 12, 2026
e13c773
Merge pull request #2 from thenotoriousllama/feature/cursor-hivemind-…
thenotoriousllama Jun 12, 2026
d565fc6
chore: consolidate agent harnesses under harnesses/
thenotoriousllama Jun 12, 2026
c0147cf
Apply suggestions from code review
thenotoriousllama Jun 13, 2026
2ffc08f
Potential fix for pull request finding 'CodeQL / Insecure temporary f…
thenotoriousllama Jun 13, 2026
780b464
Potential fix for pull request finding 'CodeQL / Insecure temporary f…
thenotoriousllama Jun 13, 2026
7ac3fdc
fix: update esbuild path assertions for harnesses/ layout
thenotoriousllama Jun 13, 2026
0fa0f92
Merge pull request #3 from thenotoriousllama/housekeeping/poopulated-…
thenotoriousllama Jun 13, 2026
ba4bd3c
release: v0.7.93
github-actions[bot] Jun 13, 2026
6a78427
chore: untrack bundles, point marketplace at ba4bd3ce5a3c8ff8955c2c65…
github-actions[bot] Jun 13, 2026
8c5cdfd
feat(cursor): add Hivemind Cursor extension (PRD-002 through PRD-005)
thenotoriousllama Jun 13, 2026
381299a
fix(cursor-ext): address CodeQL auth security alerts
thenotoriousllama Jun 13, 2026
8d21519
Merge pull request #4 from thenotoriousllama/feature/cursor-extension…
thenotoriousllama Jun 13, 2026
dee7653
release: v0.7.94
github-actions[bot] Jun 13, 2026
055de82
chore: untrack bundles, point marketplace at dee7653435598cefd8ae2a75…
github-actions[bot] Jun 13, 2026
3c5df05
chore: update marketplace reference to latest commit and clean up bun…
thenotoriousllama Jun 13, 2026
e3c4d4b
release: v0.7.95
github-actions[bot] Jun 13, 2026
edad79f
chore: untrack bundles, point marketplace at e3c4d4b89f64d5bcd655176a…
github-actions[bot] Jun 13, 2026
22434e8
feat(cursor): complete PRD-002 through PRD-005 acceptance criteria
thenotoriousllama Jun 13, 2026
bcbab98
fix(cursor): enhance security and validation for API interactions
thenotoriousllama Jun 13, 2026
abb60bb
Merge pull request #5 from thenotoriousllama/feature/cursor-extension…
thenotoriousllama Jun 13, 2026
1e40479
release: v0.7.96
github-actions[bot] Jun 13, 2026
b3f95f2
chore: untrack bundles, point marketplace at 1e404791d116f78cf8358d82…
github-actions[bot] Jun 13, 2026
c455da3
Merge remote-tracking branch 'upstream/main'
thenotoriousllama Jun 13, 2026
dea8c9a
Remove outdated PRD documents and QA reports for Cursor Extension Cor…
thenotoriousllama Jun 13, 2026
be93285
release: v0.7.97
github-actions[bot] Jun 13, 2026
14f44ff
chore: untrack bundles, point marketplace at be93285941751255efa173f1…
github-actions[bot] Jun 13, 2026
a4c05e0
chore: update project structure by removing deprecated files and enha…
thenotoriousllama Jun 13, 2026
0872520
release: v0.7.98
github-actions[bot] Jun 13, 2026
a329975
chore: untrack bundles, point marketplace at 08725207a0f72222741aa6a1…
github-actions[bot] Jun 13, 2026
279a091
feat(cursor): enhance dashboard functionality with goals management a…
thenotoriousllama Jun 13, 2026
d553274
Merge pull request #6 from legioncodeinc/fix/updated-cursor-extension…
thenotoriousllama Jun 13, 2026
96d1579
release: v0.7.99
github-actions[bot] Jun 13, 2026
7746dc2
chore: untrack bundles, point marketplace at 96d1579bb80c2e2a8a7e90c2…
github-actions[bot] Jun 13, 2026
ae7a8be
feat(cursor): update Hivemind Cursor extension to v0.1.4 and enhance …
thenotoriousllama Jun 13, 2026
1b74562
chore(cursor): bump extension to v0.1.5
thenotoriousllama Jun 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@
},
"metadata": {
"description": "Cloud-backed persistent shared memory for AI agents powered by Deeplake",
"version": "0.7.93"
"version": "0.7.99"
},
"plugins": [
{
"name": "hivemind",
"description": "Persistent shared memory powered by Deeplake — captures all session activity and provides cross-session, cross-agent memory search",
"version": "0.7.93",
"version": "0.7.99",
"source": {
"source": "git-subdir",
"url": "https://github.com/activeloopai/hivemind.git",
"path": "claude-code",
"sha": "4f2771c879c32184e3f9ca070c12636a24cc7351"
"sha": "96d1579bb80c2e2a8a7e90c2cecfb9eb4d78e8af"
},
"homepage": "https://github.com/activeloopai/hivemind"
}
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "hivemind",
"description": "Cloud-backed persistent memory powered by Deeplake — read, write, and share memory across Claude Code sessions and agents",
"version": "0.7.93",
"version": "0.7.99",
"author": {
"name": "Activeloop",
"url": "https://deeplake.ai"
Expand Down
54 changes: 27 additions & 27 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,11 @@ jobs:
- name: Build (typecheck + emit bundle artefacts)
# `build` runs `tsc && esbuild`, which is a strict superset of
# `typecheck` (the bare `tsc --noEmit` we used to run here). It
# ALSO produces the per-agent bundles AND `openclaw/dist/`. The
# ALSO produces the per-agent bundles AND `harnesses/openclaw/dist/`. The
# latter is gitignored, so it doesn't exist after a fresh
# `actions/checkout` — and several bundle-scan tests under
# `claude-code/tests/skillify-session-start-injection.test.ts` read
# `openclaw/dist/index.js` and `openclaw/dist/skillify-worker.js`
# `harnesses/claude-code/tests/skillify-session-start-injection.test.ts` read
# `harnesses/openclaw/dist/index.js` and `harnesses/openclaw/dist/skillify-worker.js`
# directly. Without this rebuild they fail with ENOENT (see PR #98
# — first CI run after the openclaw skillify wiring landed).
run: npm run build
Expand Down Expand Up @@ -294,19 +294,19 @@ jobs:
set -e
for f in \
bundle/cli.js \
claude-code/bundle/capture.js \
claude-code/bundle/session-start.js \
claude-code/bundle/session-end.js \
claude-code/bundle/plugin-cache-gc.js \
claude-code/bundle/skillify-worker.js \
codex/bundle/capture.js \
codex/bundle/session-start.js \
cursor/bundle/capture.js \
cursor/bundle/session-start.js \
hermes/bundle/capture.js \
hermes/bundle/session-start.js \
harnesses/claude-code/bundle/capture.js \
harnesses/claude-code/bundle/session-start.js \
harnesses/claude-code/bundle/session-end.js \
harnesses/claude-code/bundle/plugin-cache-gc.js \
harnesses/claude-code/bundle/skillify-worker.js \
harnesses/codex/bundle/capture.js \
harnesses/codex/bundle/session-start.js \
harnesses/cursor/bundle/capture.js \
harnesses/cursor/bundle/session-start.js \
harnesses/hermes/bundle/capture.js \
harnesses/hermes/bundle/session-start.js \
mcp/bundle/server.js \
pi/bundle/skillify-worker.js; do
harnesses/pi/bundle/skillify-worker.js; do
if [ ! -f "$f" ]; then
echo "::error::expected bundle entrypoint missing: $f"
exit 1
Expand Down Expand Up @@ -417,19 +417,19 @@ jobs:
set -e
for f in \
bundle/cli.js \
claude-code/bundle/capture.js \
claude-code/bundle/session-start.js \
claude-code/bundle/session-end.js \
claude-code/bundle/plugin-cache-gc.js \
claude-code/bundle/skillify-worker.js \
codex/bundle/capture.js \
codex/bundle/session-start.js \
cursor/bundle/capture.js \
cursor/bundle/session-start.js \
hermes/bundle/capture.js \
hermes/bundle/session-start.js \
harnesses/claude-code/bundle/capture.js \
harnesses/claude-code/bundle/session-start.js \
harnesses/claude-code/bundle/session-end.js \
harnesses/claude-code/bundle/plugin-cache-gc.js \
harnesses/claude-code/bundle/skillify-worker.js \
harnesses/codex/bundle/capture.js \
harnesses/codex/bundle/session-start.js \
harnesses/cursor/bundle/capture.js \
harnesses/cursor/bundle/session-start.js \
harnesses/hermes/bundle/capture.js \
harnesses/hermes/bundle/session-start.js \
mcp/bundle/server.js \
pi/bundle/skillify-worker.js; do
harnesses/pi/bundle/skillify-worker.js; do
if [ ! -f "$f" ]; then
echo "::error::expected bundle entrypoint missing: $f"
exit 1
Expand Down
32 changes: 16 additions & 16 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,12 @@ jobs:
git add -A
git add -f \
bundle \
claude-code/bundle \
codex/bundle \
cursor/bundle \
hermes/bundle \
harnesses/claude-code/bundle \
harnesses/codex/bundle \
harnesses/cursor/bundle \
harnesses/hermes/bundle \
mcp/bundle \
pi/bundle
harnesses/pi/bundle
git commit -m "release: v$VERSION"
RELEASE_SHA=$(git rev-parse HEAD)
echo "release_sha=$RELEASE_SHA" >> "$GITHUB_OUTPUT"
Expand All @@ -133,17 +133,17 @@ jobs:
# them on disk for npm publish).
git rm --cached -r \
bundle \
claude-code/bundle \
codex/bundle \
cursor/bundle \
hermes/bundle \
harnesses/claude-code/bundle \
harnesses/codex/bundle \
harnesses/cursor/bundle \
harnesses/hermes/bundle \
mcp/bundle \
pi/bundle
harnesses/pi/bundle
# Update marketplace.json's git-subdir source.sha to the release
# commit. Users doing `claude plugin marketplace add activeloopai/hivemind`
# clone main (HEAD = this cleanup commit), read marketplace.json, see
# the sha → clone activeloopai/hivemind at that sha (which DOES have
# bundles tracked) → extract `claude-code/` → install.
# bundles tracked) → extract `harnesses/claude-code/` → install.
node -e "
const fs = require('fs');
const path = '.claude-plugin/marketplace.json';
Expand Down Expand Up @@ -263,9 +263,9 @@ jobs:
- name: Build bundles
# Must run BEFORE the quality gate. `npm run ci` includes vitest,
# and the bundle-scan tests under
# claude-code/tests/skillify-session-start-injection.test.ts read
# openclaw/dist/index.js + openclaw/dist/skillify-worker.js
# directly. openclaw/dist/ is gitignored — it only exists after
# harnesses/claude-code/tests/skillify-session-start-injection.test.ts read
# harnesses/openclaw/dist/index.js + harnesses/openclaw/dist/skillify-worker.js
# directly. harnesses/openclaw/dist/ is gitignored — it only exists after
# `npm run build`. Without this step before the gate, vitest
# fails with ENOENT and the publish aborts. Same root cause as
# 64cac0b in ci.yml; that fix never propagated to this job.
Expand Down Expand Up @@ -336,8 +336,8 @@ jobs:
run: clawhub login --token "$CLAWHUB_TOKEN" --no-browser

- name: Publish openclaw bundle to ClawHub
# The release job above already synced openclaw/package.json and
# openclaw/openclaw.plugin.json versions to the bumped root
# The release job above already synced harnesses/openclaw/package.json and
# harnesses/openclaw/openclaw.plugin.json versions to the bumped root
# version, so this publishes the same X.Y.Z that npm just got.
#
# --family code-plugin: the existing `hivemind` package on ClawHub
Expand Down
14 changes: 9 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,14 @@ deploy-to-cache.sh
# marketplace.json sha-pinned source can resolve to a bundle-containing
# commit; the very next commit untracks them so main HEAD stays clean.
bundle/
claude-code/bundle/
codex/bundle/
cursor/bundle/
hermes/bundle/
harnesses/claude-code/bundle/
harnesses/codex/bundle/
harnesses/cursor/bundle/
harnesses/hermes/bundle/
mcp/bundle/
pi/bundle/
harnesses/pi/bundle/
evals/
.cursor/
cursor_hivemind_environment_variables_c.md
harnesses/cursor/extension/node_modules/
harnesses/cursor/extension/dist/
4 changes: 2 additions & 2 deletions .jscpd.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
"**/*.test.ts",
"**/tests/**",
"**/fixtures/**",
"**/claude-code/.claude-plugin/**",
"**/codex/.codex-plugin/**",
"**/harnesses/claude-code/.claude-plugin/**",
"**/harnesses/codex/.codex-plugin/**",
"**/src/hooks/cursor/wiki-worker.ts",
"**/src/hooks/cursor/spawn-wiki-worker.ts",
"**/src/hooks/cursor/capture.ts",
Expand Down
58 changes: 50 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ hivemind status
| **Claude Code** | Marketplace plugin | ✅ | ✅ |
| **OpenClaw** | Native extension | ✅ | ✅ |
| **Codex** | Hooks (`hooks.json`) | ✅ | ✅ |
| **Cursor** | Hooks (`hooks.json` 1.7+) | ✅ | ✅ |
| **Cursor** | Hooks (`hooks.json` 1.7+) + optional VS Code extension | ✅ | ✅ |
| **Hermes Agent** | Shell hooks (`config.yaml`) + skill + MCP server | ✅ | ✅ |
| **pi** | Extension API (`pi.on(...)`) + skill + AGENTS.md | ✅ | ✅ |

Expand Down Expand Up @@ -165,14 +165,14 @@ Hivemind runs **alongside** OpenClaw's built-in `memory-core` plugin. It does **
Tell Codex to fetch and follow the install instructions:

```
Fetch and follow instructions from https://raw.githubusercontent.com/activeloopai/hivemind/main/codex/INSTALL.md
Fetch and follow instructions from https://raw.githubusercontent.com/activeloopai/hivemind/main/harnesses/codex/INSTALL.md
```

Or run the installer script directly:

```bash
git clone https://github.com/activeloopai/hivemind.git ~/.codex/hivemind
~/.codex/hivemind/codex/install.sh
~/.codex/hivemind/harnesses/codex/install.sh
```

Restart Codex to activate.
Expand All @@ -195,13 +195,46 @@ Choose **`2. Trust all and continue`** — otherwise the hooks won't run and hiv
<details>
<summary><b>Cursor (1.7+)</b></summary>

The unified installer wires six lifecycle events in `~/.cursor/hooks.json`: sessionStart, beforeSubmitPrompt, postToolUse, afterAgentResponse, stop, sessionEnd. Hooks fork a Node bundle at `~/.cursor/hivemind/bundle/` per event. Restart Cursor after install to load.
Hivemind integrates with Cursor in two layers: **hooks** (required for capture/recall) and an optional **editor extension** (health, login, dashboard).

#### Hooks (required)

The unified installer wires seven lifecycle events in `~/.cursor/hooks.json`: `sessionStart`, `beforeSubmitPrompt`, `preToolUse` (Shell matcher), `postToolUse`, `afterAgentResponse`, `stop`, and `sessionEnd`. Each hook runs a Node script from `~/.cursor/hivemind/bundle/` (copied from the npm package's `harnesses/cursor/bundle/` at install time). Restart Cursor after install so it loads the new hooks.

```bash
hivemind cursor install
# or
hivemind install --only cursor
```

Auto-capture is enabled the same way as Claude Code / Codex / OpenClaw.
Auto-capture, auto-recall, rules injection, skill auto-pull, codebase graph builds, and session summaries work the same way as Claude Code / Codex / OpenClaw. Session summaries call `cursor-agent --print`; install the Cursor CLI and sign in so wiki summaries are not empty placeholders.

#### Editor extension (optional)

The first-party **Hivemind for Cursor** extension adds a status bar health indicator, command-palette actions, and an in-editor dashboard (KPIs, settings, sessions, codebase graph, rules, skill sync). It can wire hooks and log in without leaving the editor.

From a clone of this repo (after `npm run build` at the repo root):

```bash
cd harnesses/cursor/extension
npm install
npm run compile
```

Then open the `harnesses/cursor/extension/` folder in Cursor/VS Code and press **F5** to launch an Extension Development Host, or package a VSIX with `npx vsce package` and install it.

| Command | What it does |
|---------|----------------|
| **Hivemind: Run Onboarding** | Wire hooks, prompt login, refresh status |
| **Hivemind: Log In / Log Out** | Browser device flow or API key |
| **Hivemind: Show Status** | Health detail (CLI, cursor-agent, hooks, login) |
| **Hivemind: Wire / Refresh Hooks** | Copy bundle to `~/.cursor/hivemind/` and merge `hooks.json` |
| **Hivemind: Open Dashboard** | Webview: KPIs, graph, rules, skills |
| **Hivemind: Open Logs** | Output channel + wiki-worker log tail |

Skillify auto-pull fans symlinks into `~/.cursor/skills-cursor/` (global) and `<project>/.cursor/skills/` (project). The extension keeps those links in sync with `~/.claude/skills/` when you open a workspace.

Full extension docs: **[harnesses/cursor/extension/README.md](harnesses/cursor/extension/README.md)**.
</details>

<details>
Expand Down Expand Up @@ -342,12 +375,12 @@ hivemind rules list # latest 10 active
hivemind rules edit <rule-id> "<new text>" # bumps version
hivemind rules done <rule-id> # mark closed

# Cross-agent diagnostic / pi/openclaw fallback
# Cross-agent diagnostic / harnesses/pi/openclaw fallback
hivemind context # print the injection block on demand
```

**What's injected at SessionStart** (claude-code, cursor, hermes. Codex is
deliberately excluded to keep its user-visible TUI clean; pi/openclaw
deliberately excluded to keep its user-visible TUI clean; harnesses/pi/openclaw
fall back to `hivemind context`):

```text
Expand Down Expand Up @@ -435,10 +468,19 @@ Setup, BYOC, agent integrations, or workflow. Come ask in the community:
git clone https://github.com/activeloopai/hivemind.git
cd hivemind
npm install
npm run build # tsc + esbuild → claude-code/bundle/ + codex/bundle/ + cursor/bundle/ + openclaw/dist/ + mcp/bundle/ + bundle/cli.js
npm run build # tsc + esbuild → harnesses/claude-code/bundle/ + harnesses/codex/bundle/ + harnesses/cursor/bundle/ + harnesses/openclaw/dist/ + mcp/bundle/ + bundle/cli.js
npm test # vitest
```

**Cursor extension** (optional; lives in `harnesses/cursor/extension/`):

```bash
npm run build # hooks bundle → harnesses/cursor/bundle/ (required before F5 or Wire Hooks from source)
cd harnesses/cursor/extension && npm install && npm run compile
```

Press **F5** with the `harnesses/cursor/extension/` folder open to run the extension in a dev host. See **[harnesses/cursor/extension/README.md](harnesses/cursor/extension/README.md)**.

Test locally with Claude Code:

```bash
Expand Down
18 changes: 10 additions & 8 deletions docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
| **Claude Code** | Marketplace plugin | `SessionStart` · `UserPromptSubmit` · `PreToolUse` · `PostToolUse` · `Stop` · `SubagentStop` · `SessionEnd` |
| **Codex** | `~/.codex/hooks.json` | `SessionStart` · `UserPromptSubmit` · `PreToolUse(Bash)` · `PostToolUse` · `Stop` |
| **OpenClaw** | Native extension at `~/.openclaw/extensions/hivemind/` | `agent_end` capture · `before_agent_start` recall · contracted tools (`hivemind_search`/`read`/`index`) |
| **Cursor (1.7+)** | `~/.cursor/hooks.json` | `sessionStart` · `beforeSubmitPrompt` · `postToolUse` · `afterAgentResponse` · `stop` · `sessionEnd` |
| **Cursor (1.7+)** | `~/.cursor/hooks.json` + optional `harnesses/cursor/extension/` | `sessionStart` · `beforeSubmitPrompt` · `preToolUse(Shell)` · `postToolUse` · `afterAgentResponse` · `stop` · `sessionEnd` |
| **Hermes** | Skill at `~/.hermes/skills/hivemind-memory/` | recall via grep on `~/.deeplake/memory/` |
| **pi** | `~/.pi/agent/AGENTS.md` + skill | recall via grep on `~/.deeplake/memory/` |

Expand All @@ -20,17 +20,19 @@ hivemind/
│ ├── hooks/codex/ ← Codex hooks
│ ├── hooks/cursor/ ← Cursor hooks
│ ├── hooks/hermes/ ← Hermes shell hooks
│ ├── hooks/pi/ ← pi wiki-worker (extension lives in pi/extension-source/)
│ ├── hooks/pi/ ← pi wiki-worker (extension lives in harnesses/pi/extension-source/)
│ ├── embeddings/ ← nomic embed-daemon + protocol + SQL helpers
│ ├── mcp/ ← MCP server (used by Hermes; available to any future MCP-aware client)
│ ├── commands/ ← auth, auth-creds, auth-login, session-prune
│ └── cli/ ← unified `hivemind install` CLI + per-agent installers
├── claude-code/ ← Claude Code plugin source (marketplace-distributed)
├── codex/ ← Codex plugin build output (npm-distributed)
├── cursor/ ← Cursor plugin build output (npm-distributed)
├── hermes/ ← Hermes plugin build output (npm-distributed)
├── harnesses/claude-code/ ← Claude Code plugin source (marketplace-distributed)
├── harnesses/codex/ ← Codex plugin build output (npm-distributed)
├── harnesses/cursor/ ← Cursor hooks bundle + VS Code extension source
│ ├── bundle/ ← hook scripts (npm → ~/.cursor/hivemind/bundle/)
│ └── extension/ ← editor extension (status bar, dashboard, hook wiring UI)
├── harnesses/hermes/ ← Hermes plugin build output (npm-distributed)
├── mcp/ ← MCP server build output (shared by Hermes + future MCP clients)
├── openclaw/ ← OpenClaw plugin source + build output (ClawHub-distributed)
├── pi/ ← pi extension source (ships raw .ts; pi compiles at load)
├── harnesses/openclaw/ ← OpenClaw plugin source + build output (ClawHub-distributed)
├── harnesses/pi/ ← pi extension source (ships raw .ts; pi compiles at load)
└── bundle/ ← unified `hivemind` CLI build output
```
Loading