brainclaw
v1.5.5
Published
Shared project memory for humans and coding agents.
Maintainers
Readme
If you've ever:
- lost your conversation when your agent hit credit limits mid-task,
- returned to a project after a week with no idea where you left off,
- watched two coworkers (or two agents) edit the same files without knowing it,
- or gave up running multiple agents in parallel because keeping them in sync was a pain,
brainclaw gives you durable shared state across sessions, agents, and teammates. Plans, claims, handoffs, decisions, and traps live in .brainclaw/, work identically across any compatible agent (Claude Code, Codex, Copilot, Cline, OpenCode, Cursor, Windsurf, Kilocode, Roo Code, Continue, Mistral Vibe, Antigravity/Gemini CLI, …), and stay accessible whether you orchestrate them in parallel or pick them up one after another.
Use it two ways — together or separately:
- Active orchestration — dispatch work in parallel across multiple agent instances. Claims prevent conflicts, sequences manage lane dependencies, the dispatcher routes by capacity.
- Async shared state — when an agent runs out of credits, when you return to a project after weeks, or when teammates work in parallel: the next agent (or you) resumes cleanly with the same context, plans, and constraints.
The same primitives — plans, claims, handoffs, decisions, traps — serve both modes. That's the design point. brainclaw stores everything locally as plain text + JSON, versions it in Git, and asks no opinion about which agent you should use for what.
It sits alongside your coding agents and gives them a shared state layer they can resume from reliably. brainclaw is also starting to model other local AI work surfaces on the same machine, such as ChatGPT Desktop, Claude Desktop, Claude Cowork, and Gemini web or CLI, to keep a project-level queue of non-code work for those surfaces.
What it provides
| | |
|---|---|
| Project memory | constraints, decisions, traps, handoffs, and layered instructions agents can resume from |
| Coordination state | shared plans, file claims, runtime notes, and board views for active work |
| Agent-ready context | compact, prompt-sized context built from real workspace state instead of stale instructions |
| Native agent files | auto-writes CLAUDE.md, AGENTS.md, GEMINI.md, .cursor/rules/, .windsurfrules, and similar local guidance |
| Multi-turn loops | review and ideation loops with structured phases, iteration semantics, and per-phase memory filters — see loop engine and ideation loop |
| Machine AI surface discovery | detects local coding agents plus desktop AI work surfaces such as ChatGPT Desktop and Gemini CLI |
| Queued surface tasks | stores project-scoped requests for other local AI surfaces, such as visual generation, drafting, summaries, or research |
| Local-first storage | plain text + JSON, Git-friendly, no mandatory cloud, no telemetry by default |
Agent Surfaces
brainclaw exposes the same collaboration state through three surfaces, but they do not have the same role in an agent-first workflow.
| Surface | Primary use |
|---|---|
| MCP | default path for capable agents that need fresh context, board state, plans, claims, and write operations |
| Native agent files | local guidance and bootstrap hints for a specific agent surface (AGENTS.md, CLAUDE.md, Cursor rules, etc.) |
| CLI | operator workflows, scripting, setup, debugging, release, and fallback access when MCP is not the integration path |
If you are documenting or integrating an agent workflow, treat MCP as the primary runtime path.
Works With
brainclaw is designed to sit alongside the coding agents teams are already using, not behind a separate hosted control plane.
Code Agents
| Logo | Agent | Tier | What brainclaw configures |
|---|---|---|---|
| | Claude Code | A | MCP + CLAUDE.md + hooks + auto-approve + permissions + /brainclaw skill |
|
| Codex | A | MCP + AGENTS.md + hooks + skills |
|
| Cursor | A | MCP (machine) + .cursor/rules/ + hooks + skills |
|
| Windsurf | A | MCP (machine) + .windsurfrules + hooks + skills |
|
| Cline | A | MCP + auto-approve + .clinerules/ + hooks + skills |
|
| GitHub Copilot | A | MCP + copilot-instructions.md + hooks + skills |
|
| Roo | B | MCP + auto-approve + .roo/rules/ |
|
| Continue | B | MCP + .continue/rules/ |
|
| OpenCode | B | MCP + AGENTS.md |
|
| Antigravity / Gemini CLI | B | MCP + GEMINI.md |
Tier A = MCP + hooks + skills (context injected dynamically, lightweight instruction files). Tier B = MCP only, no hooks (richer static instruction files with architecture + top traps). Tier can degrade at runtime if integration surfaces are missing.
Autonomous Agents
| Logo | Agent | Tier | What brainclaw configures |
|---|---|---|---|
| | OpenClaw | B | MCP + brainclaw skill (SKILL.md) for structured project memory |
|
| NanoClaw | C | brainclaw skill — messaging agent (WhatsApp, Telegram, Slack) |
|
| NemoClaw | C | brainclaw skill — NVIDIA enterprise agent stack |
|
| PicoClaw | C | brainclaw skill — edge/IoT agent (Go, <10MB RAM) |
|
| ZeroClaw | C | brainclaw skill — ultra-lightweight Rust agent (20+ channels) |
Tier C = no MCP, no hooks — skill-based only with inline context and constrained resources. Autonomous agents use --profile compact for short sessions.
brainclaw is most effective today when one agent works at a time in a given checkout and the next agent resumes from shared context, claims, and handoffs.
Platform Support
brainclaw declares support for Node.js 20+ in package.json, and CI actively exercises Node 20, 22, and 24 across the main Linux path (Windows runs on Node 24). Real-world support is still not perfectly even yet.
| Logo | Platform | Status today | Notes |
|---|---|---|---|
| | Linux | Recommended | best-supported environment today; GitHub CI runs on Ubuntu with Node 20, 22, and 24 |
|
| macOS | Likely supported | Unix-like path and shell model should map well, but it is less exercised than Linux |
|
| Windows | Supported with caveats | native support exists, but PATH, npm, SSH, and PowerShell quoting still create more friction than on Unix systems |
|
| Windows + WSL2 | Important, still maturing | Brainclaw detects this setup explicitly, but setup/install/store parity across Windows and WSL is not fully seamless yet |
If you want the least surprising setup today, use Linux first. If you are on Windows, prefer a disciplined single-environment workflow and expect a few extra machine-specific fixes.
Get Started
1. Let your coding agent lead
The smoothest first-run path is agent-first:
- ask your coding agent to inspect the package and explain what brainclaw does
- ask it to install brainclaw and initialize or join the project you're working on
- use the CLI yourself when you need an explicit operator or fallback path
If you want to drive setup manually, use the steps below.
2. Install
npm install -g brainclaw3. Bootstrap this machine
brainclaw setup-machine --yesThis detects the installed agents on the current machine, writes the machine-level MCP and user config Brainclaw manages, and does not scan or initialize repositories.
4. Initialize or refresh the current project
cd your-project
brainclaw initbrainclaw init is now safe to rerun. It creates .brainclaw/ when the project is new, or refreshes the managed Brainclaw and agent integration files when the project already has memory.
If you are explicitly adding another agent to an existing Brainclaw project, use:
brainclaw enable-agent <agent-name>5. Restart your agent
Restart your coding agent (or reload MCP servers) so it picks up the new configuration. After that, brainclaw tools are available.
6. Start working
Pick one of the canonical entry points depending on what you're doing:
# Solo work — start a session, load context, claim a scope:
bclaw_work(intent="execute", scope="src/feature")
# Multi-agent — assign work, consult, open a review, or open an ideation loop:
bclaw_coordinate(intent="assign|consult|review|ideate", task="...", targetAgents=[...])
# Parallel lanes — dispatch a sequence across several agent instances:
bclaw_dispatch(intent="execute", agents=[...])Common follow-ups during work — all use the canonical CRUD grammar:
bclaw_context(kind="memory", path=...) → narrow project memory to a scope
bclaw_find(entity="...", filter=...) → list plans, claims, handoffs, candidates, …
bclaw_get(entity="...", id=...) → read one item
bclaw_create(entity="runtime_note", data=…) → record an observation, decision, or trap
bclaw_read_inbox() → pick up assigned work or review requests
bclaw_session_end(narrative=…) → close cleanly, hand off context to the next agentFor agents without MCP (e.g. Copilot reads .github/copilot-instructions.md), regenerate the instruction file when project memory changes:
brainclaw export --detect --write7. Verify it works
brainclaw status # see active sessions, claims, plans
brainclaw agent-board # see what each agent is doingMulti-agent setup
To configure brainclaw for all your repos and agents at once:
brainclaw setup --yesThis is the broader multi-repo wizard. It bootstraps the machine, scans your project roots, and initializes selected repositories in one pass.
Existing projects
For repos that already have code, brainclaw can extract context automatically:
brainclaw bootstrap --json # preview what brainclaw detected
brainclaw bootstrap --apply # import into memorySee docs/quickstart.md for the full walkthrough, docs/integrations/overview.md for agent-specific details.
Current state
Recent releases have moved a lot of multi-agent parallel work from "risky" to "supported":
- Per-claim auto-worktree — each dispatched lane gets its own isolated git worktree; the coordinator integrates with an octopus merge.
- Sequenced parallel execute —
bclaw_dispatch(intent="execute")fans out independent lanes across several agent instances and integrates the result. - Symmetric review-fix loops —
bclaw_coordinate(intent="review", open_loop=true, review_mode="symmetric")runs an alternating review-and-fix conversation across two slots without shared-checkout collisions. - Cross-platform spawn — OS-aware prompt delivery (stdin pipe / inline arg) plus a brief-ack file handshake, so spawned workers can be detected and timed out reliably on Windows and Unix.
- Worktree GC is scope-bounded — symlinks and junctions are no longer followed during cleanup, so post-merge sweeps can't wipe
node_modulesor other neighboring directories. - MCP runtime self-heal — when the runtime is corrupted, the server logs an actionable repair pointer;
brainclaw doctor --repairrebuilds dist in one step.
Still sharp:
- Same-checkout concurrent edits — running two agents in the same working tree (no per-claim worktree) is still the wrong answer. Use the dispatch path (auto-worktree per claim) instead of raw concurrent CLI sessions.
- Cross-machine sync — federation across machines is on the roadmap, not in v1.x. Today brainclaw's store is local and one-machine-per-project.
- Spawn-and-forget assumptions — spawned workers don't always commit their work cleanly. The brief-ack file confirms the spawn started; in the worst case the coordinator harvests open changes.
- Live state for hook-less agents — Tier B/C agents without lifecycle hooks (Cursor, Cline, Windsurf, Copilot, Continue, Kilocode, Mistral Vibe) get live context via
.live.mdcompanions regenerated on session-end and handoff, not via real-time push.
Recommended use today:
- for parallel work, dispatch a sequence with
bclaw_dispatch(intent="execute")— each lane gets its own worktree - for sequential work in the same project, let one agent claim at a time and rely on handoffs
- when reviewing or fixing across agents, prefer symmetric review loops over manual ping-pong
- keep multi-machine workflows on a single source of truth until federation lands
Multi-stack worktree
When brainclaw creates an agent worktree, it auto-detects which dependency directories to symlink from the main worktree based on stack markers present in the project root:
| Stack marker | Symlinked directories |
|---|---|
| package.json | node_modules |
| requirements.txt / pyproject.toml / Pipfile | venv, .venv |
| Gemfile | vendor/bundle |
| go.mod | vendor |
| composer.json | vendor |
| mix.exs | deps |
Maven, Gradle, and Cargo are intentionally excluded — their dependency caches are machine-global (~/.m2, ~/.gradle/caches, ~/.cargo/registry) and found automatically by the toolchain.
Build outputs like dist are not symlinked — they must be per-worktree to avoid EBUSY errors when other processes hold handles on the output directory.
Override detection in .brainclaw/config.yaml:
worktree:
shared_paths: [".cache"] # additive to auto-detected
exclude_shared: ["node_modules"] # opt-out a detected entryCross-project links
Link a sibling brainclaw project so that signals (candidates, handoffs, runtime notes) can flow between them. Stored under cross_project_links in .brainclaw/config.yaml.
# Subscribe to incoming signals from a peer (default role)
brainclaw link add ../brainclaw-cloud
# Publish candidates only to a peer
brainclaw link add ../brainclaw-site --role publisher --channels candidate
# Replace an existing entry of the same name/path
brainclaw link add ../brainclaw-cloud --role publisher --force
# Inspect what's wired
brainclaw link list
# Drop a link by name, path, or basename
brainclaw link remove brainclaw-cloudrole: publisher is required to push signals out (bclaw_write_note --crossProject, bclaw_create(entity='handoff', targetProject=…), etc.). role: subscriber (the default) marks the link as readable only.
The same surface is available through the canonical grammar for agents: bclaw_create/find/get/update/remove(entity='cross_project_link').
Documentation
The npm package includes the Markdown docs below under docs/. Public web docs on brainclaw.dev are still being rolled out, so the npm README does not depend on private GitHub links.
If you are integrating Brainclaw into an agent workflow, start with the agent-facing docs first:
| | |
|---|---|
| docs/index.md | Documentation index grouped by getting started, guides, reference, and design |
| docs/integrations/overview.md | Start here for agent integrations |
| docs/integrations/mcp.md | MCP runtime path for capable agents |
| docs/quickstart.md | First-time setup on a new project (greenfield) |
| docs/quickstart-existing-project.md | Joining a project that already has .brainclaw/ |
| docs/server-operations.md | Operator and remote-server workflow guide |
| docs/cli.md | CLI reference for operators, scripts, and fallback use |
| docs/concepts/memory.md | What "memory" means in brainclaw |
| docs/concepts/plans-and-claims.md | Coordination layer |
| docs/concepts/runtime-notes.md | Ephemeral observations |
| docs/concepts/multi-agent-workflows.md | The four common scenarios — orchestration, agent switching, project recovery, team async |
| docs/concepts/troubleshooting.md | Runbook for degraded coordination state — stale claims, missing dist, octopus failures, etc. |
| docs/integrations/cursor.md | Cursor |
| docs/integrations/claude-code.md | Claude Code |
| docs/integrations/copilot.md | GitHub Copilot |
| docs/integrations/codex.md | Codex |
| docs/storage.md | Storage model |
| docs/security.md | Security model |
| docs/review.md | Reflective review |
| docs/reputation.md | Reputation signals |
| docs/playbooks/ | Audience design constraints for brainclaw development |
Running tests
Contributor note: the commands below are for developing Brainclaw itself, not for normal agent usage inside a target repo.
npm test # unit + smoke (fast path)
npm run test:e2e # full suite
npm run test:coverage # with coverage reportChangelog
For older releases (v0.x and the early v1.0 launch series), git log on master is the source of truth — every release commit follows the chore(release): bump version to <semver> convention, and the matching feature/fix commits reference their plan id (e.g. feat(mcp): self-heal ... (pln#478)).
v1.5.3
- Cross-project canonical grammar + CLI parity (pln#359, all phases) — the canonical grammar (
bclaw_find / get / create / update / remove / transition),bclaw_context, andbclaw_coordinatenow accept an optionalproject: <name>argument that routes the operation to a linked project. Two link kinds are recognised:cross_project_links(sibling/peer projects inconfig.yaml,brainclaw link list) and workspace store-chain children. Arbitrary directory paths are rejected — adoption requires an explicit link, which gives the user a single point of control over what an agent can reach. Identity is sourced from the caller's home registry; entity writes + audit log entries land in the target. Unknown project names throwvalidation_errorwith a hint listing the configured links — no silent fallback. Cross-projectbclaw_coordinateis inbox-only: claim/assignment/message all land in the target, the target agent picks the brief up async via its ownbclaw_work, and auto-spawn from the source process is force-disabled because the spawn cwd / worktree are tied to the target's git repo (a warning surfaces inFacadeResponse.warnings). The CLI exposes the same as a global--project <name>flag, mutually exclusive with--cwd. Refs: helperresolveProjectCwdinsrc/core/cross-project.ts, MCP write/read handler dispatch insrc/commands/mcp.tsandsrc/commands/mcp-read-handlers.ts,--projectplumbing insrc/cli.tspreAction, surface advertisement insrc/core/instruction-templates.ts, plus tests intests/unit/cross-project.test.ts(10 unit cases on the helper),tests/unit/bclaw-coordinate.test.ts(4 cross-project routing cases), andtests/cli-cross-project.test.ts(5 e2e cases). Closes the--cwdworkaround pattern that had been the day-to-day shape of multi-project sessions. - Site facts contract (umbrella
pln_7fdfd70dsprint 0) — newscripts/emit-site-facts.mjsemitsdist/facts.{js,json}fromMCP_TOOL_NAMES+ENTITY_NAMESso the brainclaw-site (and any consumer) can pull live tool/entity counts at build time without forking the values into a hand-maintained config. The packagefileslist shipsdist/facts.json; build:cli runs the emitter as part of the chain.
v1.5.2
- Grammar fix:
bclaw_updateno longer silently drops patches (trp#187, pln#500) — the canonical CRUD surface promised thatEntityRegistry.updatablelisted every patchable field, but the legacy impls behind the dispatch (updatePlan,updateMemoryItem) only handled a typed subset. Aas UpdatePlanInputcast inentity-operations.tsmasked the gap from TypeScript: callers passed{text, tags, severity, …}, validation accepted them, and the function bodies never read them. Empirically reproduced this session onpln#359(text+tags drop) andtrp#187itself (severity drop). Fix adds a generic-patch escape-hatch (patch?: Partial<…>) onUpdatePlanInputandUpdateMemoryInput, applied viaObject.assignafter the typed fields so legacy CLI callers keep their behaviour. The dispatch inentity-operations.tsnow passes the full patch through that escape-hatch for plan/decision/constraint/trap.runtime_note,candidate, andcross_project_linkwere already correct. Newtests/unit/entity-update-coverage.test.tsis parametric: for every(entity, field)pair inEntityRegistry.updatable, create + patch + get + assert the field actually persisted (29 cases). Adding a new updatable field will require adding a coverage row, so the contract stays honest.
v1.5.1
- Cross-project link CLI + grammar parity (pln#454 step 2) — new
brainclaw link add/list/removesubcommands and a statelesscross_project_linkentity wired into the canonical CRUD verbs (bclaw_create / find / get / update / remove). The pain point was small (config.yaml is hand-editable) but the asymmetry — runtime cross-project signaling shipped, management UX did not — meant federation peers had no first-class affordance. Storage stays inconfig.cross_project_links; the entity is intentionally stateless (no transitions). Refs:src/commands/link.ts,src/core/cross-project.ts(newaddCrossProjectLink/removeCrossProjectLink),src/core/entity-registry.ts(newxplprefix),src/core/entity-operations.tsdispatch cases,tests/unit/link.test.ts+tests/unit/cross-project-link-grammar.test.ts(26 new cases). - Agent registry pruned (pln#454 step 1) — 8 synthetic profiles (antigravity, copilot-vscode, claude-opus, copilot-identity, copilot, claude-sonnet, visionnaire, copilot-codev) and 11 abandoned sessions archived under
.brainclaw/archive/agents/2026-05-07/. The whitelist that survives matchesfeedback_allowed_dispatch_agents.md:claude-code,codex,github-copilot, plusjberdah(curator). Auto-re-registration indetectAiAgentis intentionally preserved — if a real surface starts a session, the registry auto-rebuilds for it. Pure store cleanup, no code change. - Inbox + assignment lifecycle reconciliation (housekeeping) — 89 stale inbox messages and 7 orphan offered-assignments closed with retroactive lifecycle updates. The plans they backed (pln#478 mcp self-heal, pln#480 multi-stack worktree, pln#483 bclaw_work compact, pln#471 tier-B live companions) had all merged weeks earlier without the dispatch path calling
bclaw_assignment_update. Captured asfeedback_dispatch_test_inbox_debrisso future drift is mass-acked instead of triaged per-message.
v1.5.0
- Ideation loop MVP (pln#492) — new
bclaw_coordinate(intent='ideate')opens a memory-confrontation loop: critic reads only adversarial categories (traps + feedback + runtime_notes + critique_history) and gets a BM25-ranked, context-filtered, 12k-token-capped brief assembled from project memory. Single-agent (champion drives manually) or multi-agent (auto-dispatch a turn per critic). Iteration block (cycle, max_iterations, exit_when), phase-advance gate (≥3 critique artifacts before leaving critique), system events (phase_advance_blocked,max_iterations_reached). Full design: docs/concepts/ideation-loop.md. - Reliable dispatch + autonomy contract (pln#496) — codex / sandboxed task-based agents now emit the full lifecycle (accepted → started → progress → completed).
briefModeresolution corrected:task-based && hasMcp → 'full'(not 'compact', which silently dropped the protocol section). Lazy reconciliation pattern:agentrun-reconcilerruns at every read path (bclaw_assignment_events,bclaw_loop intent='get',doctor --dispatch) instead of a daemon; first run auto-recovered 9 historical orphan agent_runs in <1s. New autonomy contract section in instruction surfaces — agents execute protocol-defined transitions instead of pausing to ask. NewbuildClaimEnvPrefixconsolidates cross-shell env injection (Windows defaults to cmd, POSIX uses unquoted bytes per PATH conventions). Newbrainclaw doctor --dispatchfor operator-facing dispatch health. - Worktree junction wipe fix (pln#498) —
detachWorktreeJunctionsruns beforegit worktree removeon Windows so git's recursive rm cannot follow thenode_modulesjunction back into the main repo. Closes the recurring post-merge wipe trap; validated empirically on multiple back-to-back merges in the v1.5.0 session. - Methodological lessons captured as user auto-memory feedback memos: bisect historical state before bisecting code (regression vs. always-broken-but-hidden), lazy reconcile at read paths beats daemon polling, codex briefs MUST include the Protocol section (implicit instructions don't propagate to sandboxed CLIs).
v1.2.0
- zod 3 → 4 migration (pln#486) — schemas are semantically equivalent but the JSON Schema emitted by
tools/listshifted shape; downstream MCP clients that snapshot schemas should re-pin. Seedocs/mcp-schema-changelog.mdfor the public surface fingerprint.
v1.1.0
- Node 20+ baseline (pln#485) —
engines.nodeis now>=20.0.0(Node 18 reached EOL in April 2025). CI matrix runs Node 20, 22, and 24 on Linux; Windows on Node 24. - commander 13 → 14 (requires Node 20+).
- @types/node 22 → 24 (LTS-aligned).
v1.0.15
- TypeScript 5.8 → 6.0 (pln#484) — migration to
module: "nodenext"(Node16is deprecated in TS 6, scheduled for removal in TS 7); explicittypes: ["node"]since TS 6 changed the default to[].
v1.0.14
bclaw_workcompact payload by default (pln#483) — avoids exceeding the ~25k MCP token cap on projects with substantial memory. Passcompact: falsefor the full payload, or callbclaw_context(kind="memory")after.- MCP runtime self-heal +
doctor --repair(pln#478) — whendist/mcp-worker.jsis missing, the server logs an actionable repair pointer and read-only handlers keep serving in-process.brainclaw doctor --repairrebuilds dist in one step. - Tier B/C native live companions (pln#471) —
.cursor/live.md,.clinerules/live.md,.windsurf/rules/live.md,.github/copilot-instructions.live.md,.continue/live.md,GEMINI.live.mdregenerated on session-end and handoff. Opt-in viabrainclaw export --include-live --write.
v1.0.13
- Worktree GC scope hardening (pln#477) —
safeRemoveWorktreeDirno longer follows symlinks/junctions during cleanup. Closes a class of post-merge wipes that previously destroyednode_modulesand other neighboring directories on Windows.
v1.0.10–v1.0.12
- GitHub Copilot CLI is spawnable (pln#440) — Copilot CLI 1.0.35+ supports
-p "<prompt>" --allow-all --no-ask-user; tier promoted to A. - Codex spawn on Windows: stdin pipe + 30s handshake TTL (pln#475) — fixes embedded backticks/
#/multi-line content getting mis-parsed bycmd.exewhen a prompt is passed as an inline argument. - Brief-ack file handshake (pln#476) —
.brainclaw/coordination/runtime/ack/<assignmentId>.ackproves a spawned worker started, decoupling the handshake from MCP availability inside the worker (important for Codex in--sandbox workspace-write). bclaw_loop(intent="open")orphan-gate (pln#461) — refuses to open a loop without dispatch unlessallow_orphan: trueis explicit. Usebclaw_coordinate(intent="review", open_loop: true)instead.- Kilocode — Tier B integration with native MCP config and live companion (pln#464).
v1.0.0
- Canonical grammar promoted to standard tier —
bclaw_find/bclaw_get/bclaw_create/bclaw_update/bclaw_remove/bclaw_transition, plus the entry facadesbclaw_workandbclaw_context, the multi-agent facadesbclaw_coordinateandbclaw_dispatch, and the loop facadebclaw_loop. Legacy per-entity tools removed from the discoverable surface (still callable as a migration escape hatch). Seedocs/concepts/mcp-governance.mdfor tier rules and the deprecation policy.
License
brainclaw core is published under the MIT License — (c) 2024-2026 Juan Berdah.
The licensing split is simple:
- the local-first brainclaw core is MIT
- cloud shared-memory, remote collaboration services, advanced dashboards, and related hosted add-ons will live in separate commercial products
The MIT core covers what makes brainclaw useful inside a repo today: local project memory, local MCP and CLI coordination, onboarding and bootstrap, plans, claims, handoffs, runtime notes, and local agent integrations.
The goal is not to close brainclaw down. The goal is to keep the local-first core open and genuinely useful on its own, while keeping hosted collaboration features separate.
