Skip to content

feat: Brane agent control plane#1

Open
0xbeam wants to merge 27 commits into
mainfrom
feat/brane-agent-control-plane
Open

feat: Brane agent control plane#1
0xbeam wants to merge 27 commits into
mainfrom
feat/brane-agent-control-plane

Conversation

@0xbeam
Copy link
Copy Markdown
Owner

@0xbeam 0xbeam commented Mar 17, 2026

Summary

  • Brane transforms from feedback scraper into full agent orchestration platform β€” agents coordinate through shared filesystem (~/.brane/), not the server
  • 8 new core modules: agent-registry (discovers 58+ Claude sessions), task-manager, message-bus (JSONL + SSE), knowledge-store (promote to skill/instruction), git-tracker, claude-bridge, MCP server (11 brane_* tools), shared categorizer
  • 7-tab React dashboard: Dashboard (mission control), Agents (grid + detail), Tasks (filterable list), Feed (retained), Knowledge (browse + promote), Messages (live SSE stream), Settings
  • Multi-strategy Twitter scraper: oEmbed β†’ Syndication β†’ fxtwitter β†’ Browser β†’ Nitter fallback chain
  • 23 new REST endpoints for agents, tasks, messages, knowledge, git operations

Architecture

~/.brane/                     ← the protocol (shared filesystem)
  agents/{id}.json            ← self-registered agent state
  tasks/{id}.json             ← any task type
  messages/{channel}.jsonl    ← append-only message channels
  knowledge/{id}.md           ← learned skills + scraped content

Brane Server (localhost:3210) ← reads ~/.brane/, serves API + dashboard
Brane MCP Server              ← brane_* tools via stdio for Claude Code
Dashboard (Vite)              ← full CRUD React dashboard into ~/.brane/

Test plan

  • API server starts, all 23 endpoints respond
  • Agent scanner discovers 58 Claude sessions from ~/.claude/projects/
  • Task CRUD works via API
  • Knowledge sync from scraped content (7 entries)
  • Message publishing and SSE streaming
  • All 7 dashboard tabs render with real data
  • Zero console errors
  • MCP server end-to-end with live Claude Code session
  • Spawn agent via claude-bridge

πŸ€– Generated with Claude Code

0xbeam and others added 27 commits March 16, 2026 11:32
- Express + SQLite backend with Figma API sync engine
- Session reconstruction from version history (30-min gap clustering)
- 6 tabs: Overview, Designers, Projects, Design System, Reviews, Activity
- Designer analytics, project intelligence, component health scoring
- Comment feed with response time metrics
- Cron-based auto-sync (every 5 min) + manual sync button
- Settings panel with Figma PAT/Team config and Release Log
- Last sync time KPI card on overview dashboard
- Vercel deployment support (serverless API + cron)
- Static data.json fallback mode when API unavailable

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Google OAuth and Figma OAuth login with session management
- Login screen with provider buttons, user badge in header
- Auth middleware protects API routes (passthrough when no OAuth configured)
- Seed data system: exports DB snapshot, auto-loads on Vercel cold start
- Release log tab in settings modal (v2.1.0, v2.0.0, v1.0.0)
- Last sync time KPI card with exact timestamp tooltip
- Settings tabs: Configuration + Release Log
- cookie-parser dependency for session cookies
- Updated .env.example with OAuth configuration vars

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add incremental sync engine that only fetches versions/comments for files
modified since last sync. Add stale file alerts, designer profile modal
with activity heatmap and session timeline, project velocity modal with
weekly chart and contributor breakdown. Wire double-click on table rows
to open detail modals.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7 new feature modules:
- Weekly Studio Digest with Markdown export for Slack/email
- Workload Balancer with burnout risk detection (green/amber/red tiers)
- File Version Timeline modal with labeled milestones feed
- Comment Threading with status badges and response time analytics
- Design System Governance with maturity model (active/stable/orphaned)
- Collaboration Network with isolation alerts and cross-pollination score
- Reports tab with project time reports and Markdown/JSON export

Backend: 20+ new API endpoints, 4 new DB tables, post-sync computation
hooks for collaboration edges, workload snapshots, and component snapshots.
Unified api/index.js to re-export from server/index.js (no more duplication).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Universal Gallery tab with thumbnail grid, search, filter by project, sort
- 3x faster sync: parallel project/version/comment fetching (batches of 3)
- Auto-sync every 5 minutes (was 15), replaced node-cron with native setInterval
- Bidirectional Figma links: open files, versions, components directly in Figma
- Persistent sync footer bar showing exact last sync time and interval
- Increased Figma API concurrency (4 concurrent, 150ms min) for faster throughput
- Added GET /api/gallery endpoint with search, sort, pagination
- Added project_id to projects API for Figma project links

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Multi-source scraping engine with React dashboard that converts Slack threads,
Figma comments, Twitter bookmarks, and generic URLs into structured agent
instruction markdown. Includes adapter pattern, parallel dispatch, file-based
persistence, and Gravity design system.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Refactored agent dispatch into a two-column layout. Left panel shows dispatch
jobs and completed results as a selectable list. Right panel renders full
instruction detail inline with progress bar, copy-as-markdown, and collapsible
thread view. No more modal β€” results live next to the dispatch queue.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4 commands:
- parc map <repo>: scan any git repo, generate Gravity-styled HTML architecture diagrams
- parc serve <repo>: live dark-mode dashboard with rescan on port 4400
- parc agents <repo>: list all AI agents with tier detection
- parc diff [ref]: architecture-aware git diff (routes, APIs, agents)

Analyzer detects: Next.js/Vite/Express routes, API endpoints, AI agents,
components, database tables, migrations, monorepo packages, and git metadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Static HTML landing page showcasing parc CLI features with Gravity design system styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Renamed from feedback-hub to brane across all files. Added Express API server
(port 3210) with /api/scrape, /api/dispatch, /api/jobs, /api/index endpoints.
Frontend now talks to the API with live job polling β€” dispatch a URL from the
dashboard, it gets scraped in the background, and results appear automatically.
CLI, adapters (Slack, Figma, Twitter, URL), and markdown generator all verified
working end-to-end.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Analyzer:
- Fix route extraction for monorepo structures (apps/dashboard/src/app/...)
- Fix SvelteKit route extraction to capture full paths
- Narrow agent detection to code files only (.ts/.tsx/.js/.jsx/.py)
- Add GraphQL, tRPC, Hono, FastAPI, Flask, Django detection
- Add Docker, Kubernetes, WebSocket feature detection
- Add LOC counting (58k lines on sanctuary-dashboard)
- Add incremental diff scanning via analyzeRepoDiff()

Diagram:
- Fix XSS vulnerability (data-tab attrs instead of inline onclick)
- Add HTML escaping on all user data
- Add search/filter across all tabs
- Add dark mode toggle with localStorage persistence
- Add mobile responsive layout (@media 640px)

Server:
- Add CORS OPTIONS preflight handling
- Non-blocking rescan with /api/status polling
- File watching with debounced auto-rescan (--watch flag)
- Request logging with timestamps

CLI:
- Add --watch flag for live server
- Add --format json option for map command
- Architecture-level diff (grouped by routes/agents/APIs/components)
- .parc.json config file support
- Progress indicators with timestamps
- Better error messages for missing git/package.json

Landing page:
- Animated terminal demo with typing effect
- "How it works" section
- Dark mode (prefers-color-scheme)
- Hover animations and polish

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the boring processing spinner with a terminal-style live activity view.
Each job now tracks pipeline stages (detect β†’ connect β†’ fetch β†’ parse β†’
categorize β†’ generate β†’ assets β†’ save β†’ done) with timestamped log entries
that stream in real-time. Pipeline progress bar shows which stage is active.
Dark terminal aesthetic with blinking cursor and auto-scroll.

Also: 10s fetch timeout on URL adapter, API health now polls every 10s with
refresh button in Settings, completed jobs show collapsible activity summary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ration

Add dual-mode browser scraping engine with fallback chain:
Cloudflare Browser Rendering (edge, production) β†’ Lightpanda (local, 11x Chrome)
β†’ plain fetch (fallback). Auto-detects SPA domains (x.com, notion.so, etc.)
and routes through browser engine. Graceful degradation when no engine available.

Phase 1 perf fixes: 15s timeout on Figma API, parallel image downloads (batch 5),
concurrency limit (max 5 parallel dispatch jobs).

New: core/browser/ module with BrowserEngine interface, CloudflareEngine,
LightpandaEngine, BrowserManager singleton. Settings page shows engine status.
Health API now reports browser engine connectivity.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Expand CSS theme with zinc palette, semantic colors, utility classes
- Add architecture.html for sanctuary-parc system overview

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Repo renamed from sanctuary-parc to sanctuary. Fresh README
with concise project map for the full monorepo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Brane evolves from a feedback scraper into a full agent orchestration
platform. Agents coordinate through a shared filesystem (~/.brane/),
not the server. The filesystem is the protocol β€” if the server is down,
agents still work.

Backend:
- Agent registry: discovers Claude Code sessions from ~/.claude/projects/,
  tracks 58+ agents with PID liveness, git branch, model info
- Task manager: CRUD on ~/.brane/tasks/ supporting scrape/code/review/
  deploy/research types with full lifecycle tracking
- Message bus: append-only JSONL channels with EventEmitter for SSE relay
- Knowledge store: markdown + YAML frontmatter entries with promote-to-skill
  and promote-to-instruction (writes to ~/.claude/skills/ or CLAUDE.md)
- Git tracker: branch info, commits, switch/create branches per repo
- Claude bridge: spawn background agents via claude CLI
- MCP server: 11 brane_* tools for agent-to-agent coordination via stdio
- 23 new REST endpoints for agents, tasks, messages, knowledge, git
- Multi-strategy Twitter scraper (oEmbed β†’ Syndication β†’ fxtwitter β†’
  Browser β†’ Nitter) with shared feedback categorizer

Frontend:
- 7-tab dashboard: Dashboard, Agents, Tasks, Feed, Knowledge, Messages,
  Settings with lucide icons
- Dashboard: mission control with agent/task/knowledge/branch stats
- Agent grid: card view with search, status filter, detail panel with
  git state and branch switching
- Task list: filterable table with type/status filters, pipeline
  visualization, sub-task support
- Knowledge browser: search, project filter, promote to skill/instruction
- Message stream: SSE-powered terminal-style live channel viewer
- 3 new React contexts: AgentContext (3s polling), TaskContext (2s polling),
  MessageContext (SSE streaming)

Existing scraper and feed view retained for backward compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… knowledge dedup

- Add /api/git/:agentId/branches endpoint (was 404, called by AgentDetailPanel)
- Include sourceTaskId in knowledge index entries so syncFromScraped dedup works
- Reset knowledge store to clear duplicated entries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…and agent grid

Agents discovered from old Claude sessions with cwd="/" clutter
the dashboard. Now filtered out of dashboard stats, agent overview,
and agent grid view. Also filter "HEAD"/"unknown" from branch count.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Return 400 if prompt is missing instead of spawning an agent
with empty arguments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…at grid

Sidebar hides below md breakpoint (768px). Dashboard stat cards
use 2-column grid on mobile, activity/overview sections stack
vertically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 0: Fix scrape persistence (dispatch.js uses task-manager instead of
in-memory jobs), register MCP globally, auto-sync knowledge after scrape.

Phase 1: Task execution engine with state machine (start/complete/fail/retry),
new MCP tools (claim_task, complete_task, fail_task, report_progress),
agent lifecycle (pause/resume/decommission).

Phase 2: Git write operations (fetch/pull/push/stash) in git-tracker,
API endpoints, and MCP tools.

Phase 3: Master orchestrator module β€” persistent Claude agent that manages
task queue and agent pool via MCP. Orchestrator chat via message bus.
Fixed claude-bridge to capture output to log files.

Phase 4: Knowledge pipeline β€” auto-analysis of scraped content,
promotion to skills/instructions, agent notification.

Phase 5: Obsidian PARA integration β€” one-way sync of agents, tasks,
knowledge, and skills to ~/Documents/Vault/ with wiki-links for DAG.

Phase 6: Interactive dashboard β€” orchestrator chat panel, agent lifecycle
controls, git ops buttons, task cancel/retry, progress indicators.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant