Beale-CC
by philo-groves
README.md
# Beale-CC
Beale-CC is a local, agent-neutral compatibility bridge for Beale research workspaces. It provides a bundled Claude Code plugin backed by a stdio MCP server that serves MCP `2026-07-28` while retaining the legacy handshake required by older Claude Code clients.
The bridge uses Honeycrisp's public workspace-tool API rather than Beale's Electron IPC or direct SQL writes. A Claude Code session and Beale can therefore continue the same research through typed memory, workspace-default memory search, subject-explicit search, revisioned runbooks, the active research profile, and recorded workspace context.
It does not contribute a system prompt, prompts, skills, commands, hooks, subagents, `AGENTS.md`, `CLAUDE.md`, or delegation policy. Those remain owned by the agent using the MCP server.
## Requirements
- Node.js 22.19 or later
- A sibling `honeycrisp` checkout when developing or rebuilding Beale-CC
- Claude Code for plugin installation
## Build and test
```powershell
npm ci
npm test
npm run validate:plugin
```
The build produces a standalone ESM plugin server at `plugins/beale-cc/dist/server.mjs`. The installed Claude plugin is copied into Claude Code's cache, so the bundle includes every runtime dependency and does not reach back into this source checkout.
## Install in Claude Code
```powershell
claude plugin marketplace add C:\path\to\Beale-CC
claude plugin install beale-cc@beale-cc-local
```
Open Claude Code in the research workspace. The plugin passes `${CLAUDE_PROJECT_DIR}` to the server at startup, permanently binding that server process to the active workspace.
After rebuilding an already installed plugin, update the marketplace and reinstall the plugin so Claude Code refreshes its cached copy.
## MCP surface
Tools:
- `workspace_context`
- `memory_search`, `memory_get`, `memory_save`, `memory_correct`, `memory_link`
- `runbook_list`, `runbook_get`, `runbook_create`, `runbook_append`
Resources:
- `beale://workspace/context`
- `beale://workspace/profile`
- `beale://profiles`
- `beale://profile/{id}`
- `beale://memory/catalog`
- `beale://memory/recent`
- `beale://memory/{id}`
- `beale://runbooks`
- `beale://runbook/{id}`
Profile capabilities can disable the corresponding memory or runbook surface. `beale://workspace/profile` is the active, snapshot-pinned workspace profile. `beale://profiles` exposes the built-in Security Research and Mathematics catalogs for discovery, while `beale://profile/{id}` exposes one catalog. These resources omit agent prompts and model-job configuration and do not change the active workspace profile. Select a profile through Beale or the workspace's normalized `.honeycrisp/profile.json`; this MCP server does not add model-facing profile mutation.
Runbooks are recorded procedures and are never executed by this server.
## Workspace continuity
Canonical durable storage remains Honeycrisp-owned:
- Global memory database: `~/.honeycrisp/memory.sqlite`
- Global artifact store: `~/.honeycrisp/artifacts`
- Optional workspace profile: `.honeycrisp/profile.json`
- Beale workspace metadata, when Beale opens the directory: `.beale/`
Workspace identity is the shared deterministic ID derived from the resolved absolute workspace path. Beale-CC prefers Beale's durable `workspace_research_subjects` binding and active immutable profile snapshot when present. For a Claude-first workspace, Honeycrisp creates the same workspace ID and a workspace-placeholder subject; Beale retains that subject during later onboarding when it already owns durable memory. Workspace copies or moves have a new path-derived identity.
Memory search defaults to the current workspace. Subject-wide recall requires `scope: "subject"`; there is no global cross-workspace search.
External Claude Code sessions do not create Beale run or transcript rows. Continuity covers durable research state and workspace guidance, not Beale session history.
Restart the Claude Code MCP server after Beale changes the workspace subject, authorization metadata, or active research profile. Beale-CC refuses tool and resource access when it detects that the live process's subject binding has changed, preventing writes to a stale subject.
## Security boundary
- The server is local stdio only and opens no network listener.
- The workspace root is fixed at process startup and cannot be supplied by a model tool call.
- Database paths, credential material, registry paths, and the unscoped global artifact manifest are not exposed through MCP results.
- Recorded authorization is projected as context; reading it does not grant authorization or enable live-target testing.
- Beale-CC, Beale, Honeycrisp, target code, and research tools run with the current user's host privileges. Use an externally launched VM or container when OS isolation is required.
- Memory and runbook content is untrusted research data. Honeycrisp remains authoritative for taxonomy validation, evidence references, revisions, and workspace ownership.
The server implementation follows the [MCP 2026-07-28 specification](https://modelcontextprotocol.io/specification/2026-07-28) and the official [TypeScript SDK stdio serving guidance](https://ts.sdk.modelcontextprotocol.io/v2/serving/stdio.html). Plugin packaging follows the [Claude Code plugin reference](https://code.claude.com/docs/en/plugins-reference).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing