Complete System Status — 2026-03-19
Helix Intelligence Platform
Full picture: every component that is live, building, specced, or unwired. Generated from KB + diagnostics — not from memory.
live Running in production
building Active build phase
unwired Built but not connected
specced Full spec, not started
p1 Priority 1 next
p2 Priority 2
p3 Post-v1
01 — live infrastructure — running on vps1 port 9050
Helix Cortex
FastAPI · v0.9.0 · 38 tables · 203MB
- Postgres + pgvector (BGE-large-en-v1.5 embeddings)live
- Neo4j knowledge graph — ports 9038/9039live
- Redis cache + worker queuelive
- ChromaDB semantic search (pgvector primary)live
- Garage blob storage — v1.0.1 (versioned file history)live
- Infisical agent — secret injectionlive
- MCP StreamableHTTP at
/mcp/— 20 toolslive - 21 automated backups completedlive
Provisioner
VPS2 · 721 tools · 47 servers
- HOT/WARM/COLD container pool managementlive
- MCP gateway — all tool calls routed through observer.jslive
- 47 registered MCP servers — on-demand spinlive
- observer.js — provision-filter, auto-POSTs to Helixlive
- mcp-front, mcp-gateway, infisical on VPS2live
Node Registry
Multi-machine routing — built 2026-03-19
POST /api/v1/nodes/register— node registrationliveGET /api/v1/nodes— list all nodeslive- windows-desktop registered as first nodelive
- helix_action
nodeparam — routes to node_router.pylive - Agent installed at
C:/tools/helix-node/agent.pylive - Sidecar installed at
C:/tools/helix-sidecar/server.pylive
02 — membrain — browser extension — v0.5.2 active
Membrane — Capture Layer
Receptors · fetch intercept · provider detection
- Bidirectional fetch interceptor — monkey-patches
window.fetch()live - Multi-provider: claude.ai, ChatGPT, Gemini, Perplexity, Kimi, OpenRouterlive
- Turn-by-turn capture → service worker → auto-flush to Helixlive
- 30s gap detection → auto-exchange compilation → POST to Helixlive
- IndexedDB local storage (between-session persistence)live
- Fact extraction — structured facts from conversation turnslive
Synapse — Context Injector
context-inject.js · tiered injection · compression
- Tier 1 (every message, ~400 tokens): runbook + alerts + project state + dictionarylive
- Tier 2 (session start, ~800 tokens): anomalies + nudges + recent decisions + handofflive
- Tier 3 (on-demand): semantic search across conversation RAGlive
--- HELIX CONTEXT ---block prepended before every send. 4s timeout, 90s cache.live- § symbol compression — 400+ active symbols, token savings every sessionlive
- 1,036 per-user compression profiles — personalised per sessionlive
- Popup toggle (green, defaults ON). Load order: interceptor → context-inject → compressionlive
HUD — Tabbed Interface
token-hud.js · v0.5.2 · pipeline health monitoring
- Tokens tab: WITHOUT/WITH compression side-by-side comparison panellive
- Captures tab: pipeline status bar, last 10 conversations, sync button, auto-refresh 8slive
- Pipeline health monitoring built in to HUDlive
MemBrain — Pre-Generation Scaffold Injection
Phase 2 · intercepts before Claude sees message
- Intercept outgoing message BEFORE it reaches Claudebuilding
- 3 signals: message tokens, context path, recency window → pgvector scaffold querybuilding
- Inject
<helix_scaffold>transparently. Round trip <200ms.building - Requires Phase 1d (Pipeline B scaffolding engine) firstneeds 1d
MemBrain v1.0 — CWS Packaging
Item 7 · Chrome Web Store submission · options page
- Icons, options page, Chrome Web Store packaging (Item 7 from v0.3.1 spec)building
- Tenant API key config in extension options (ties into Layer 0 multi-tenancy)building
- CWS submission and review process~1 session
MemBrain — Compression Improvements
Tier 2 promotion · cross-session persistence · namespace expansion
- Tier 2 symbol promotion — context-aware, based on session patterns (not just frequency)building
- Cross-session symbol persistence — symbols survive browser restarts, persist in Helixbuilding
- § namespace expansion — project-specific namespaces, e.g.
§helix:vs§mw:building - Symbol sharing across tenants (Layer 5c dependency — global symbol table)needs Layer 5
Desktop Sidecar — Conversation Capture
C:/tools/helix-sidecar/server.py · log_turn + backfill · MCP stdio
- Installed at
C:/tools/helix-sidecar/server.py. Registered in Desktopconfig.jsonas MCP serverhelix-sidecar.live - Exposes
log_turn()tool — Claude calls it after every response to capture conversation turns into Helix.live - Exposes
flush_session()tool — called at natural breakpoints to batch-write buffered turns.live backfill.py— backfills existing Desktop conversation history into Helix on first run.live- Requires system prompt: “After every response, call log_turn() with the user message and your response. Call flush_session() at natural breakpoints.” Without this, nothing is captured.needs system prompt
- Desktop needs restart to pick up the sidecar MCP server. Currently 3 servers registered:
ssh-vps2,helix-sidecar,helix-node.needs restart - Interim solution until Layer 3 (HTTPS proxy) ships. Proxy = transparent capture with no system prompt dependency.
03 — intelligence pipeline — pipeline a (enrichment) + pipeline b (scaffold)
helix_action — Unified Action Tool
routers/action.py · single entry point · Phase 1a complete
file_write— full pipeline: version → scan → KB → KG → observer → scaffoldlivefile_patch— targeted str_replace, no shell escapinglivefile_read/file_list— read-only, no pipeline fireslivefile_move— disk move + KG path label update by content hashlivefile_delete— delete + observer log, never invisiblelivecommand— shell exec, auto-detects stack traces/service names → KGlivescaffold_query— explicit scaffold request (stub; full in Phase 1d)livenodeparam — routes to any registered node (windows-desktop, vps2, etc.)live
Atom Scanner — 3-Tier Self-Expanding
SCANNER / ATOMS · 451 atoms live · Mitochondria worker
- Tier 1: Tree-sitter — 100+ languages, ~$0.00/filelive
- Tier 2: Haiku LLM — purpose, type, quality, reuse potential. ~$0.001/filelive
- Tier 3: Self-generated heuristics. After N analyses, generates own rules. $0.00 forever.live
- Structural fingerprint per atom. Matching fingerprints auto-register as templates.live
- turn.flush fan-out — 4-way async (code_scanner, text_processor, action_parser, kg_extractor)live
- 584 conventions live (inferred coding standards per project)live
- Config parser plugin: Docker Compose → KG entitiesbuilding
Knowledge Base + Knowledge Graph
Postgres pgvector + Neo4j · 170 docs · 494 entities
- KB: FTS5 + pgvector semantic search. 170 docs indexed.live
- KG: 494 entities, 956 relationships, 26,769 mentionslive
- Entity types: container, service, port, domain, project, tool, person, dependencylive
- Relationships: DEPENDS_ON, CONTAINS, TOUCHES, PRODUCESlive
- Intelligence write tools:
helix_archive_record,helix_entity_upsert,helix_relationship_createlive - Exchange extraction: decisions/failures/patterns auto-extracted asyncbuilding
Symbol Engine — Compression
COMPRESSION · § promotion · 400+ active symbols
- High-frequency phrase tracking. Daily promotion to § namespace.live
- LLM receives full phrase — context carries compressed form. Token savings compound.live
- 1,036 per-user compression_profiles in DB. Personalized per session.live
- Tier 2 context-aware promotion — session pattern basedbuilding
- Cross-session symbol persistence — symbols survive browser restartsbuilding
- Project-specific § namespacesbuilding
Observer
LOGGING · 5,065 actions · every tool call
- Logs every tool call: type, params, result, timing, session_idlive
- Archive collections: decisions (619), failures, patterns, sessions (479), snapshotslive
- 294 observer_sequences — pattern detection across tool call chainslive
- 218 observer_facts — structured facts extracted from actionslive
- 121 file captures loggedlive
Exchange System
420 exchanges · auto-compiled · no manual saves
helix_exchange_post— routes decisions/failures/patterns/entities to archive + KGlivehelix_exchange_search— semantic search across exchange archivelive- Auto-compilation: observer.js detects 30s gap → compiles exchange → auto-POSTslive
- Stores by default,
skip=trueto opt out. Token tracking on every exchange.live - 6,928 structured_archive entrieslive
Pipeline B — Scaffolding Engine
Phase 1d · intent parser + atom matcher + cascader + assembler
- Intent parser: 3 signals (message tokens, context path, recency window)building
- Atom matcher: pgvector similarity on 451 atoms, context bias same project/dirbuilding
- Dependency cascader: KG traversal — what imports this? what depends on this config?building
- Scaffold assembler: atoms → imports[] + boilerplate + related_files[] + confidencebuilding
- Test stub generation: implementation written → test scaffold returned automaticallybuilding
Smart Content Detector
Phase 1b · shared by all 13 capture surfaces
- Classifies any content: code | config | prose | structured-data | binarybuilding
- Stack trace specialization: Python/Node/Go format detectionbuilding
- YAML/Docker Compose specialization → infra atomsbuilding
- Selects pipeline automatically based on content typebuilding
04 — output layer — synapse, cockpit, runbook — all live
Entire output layer is live — missing from the old build site completely. Synapse (9,077 chunks searchable), Cockpit (anomalies, nudges, project state), and Runbook (8 pages, dynamic injection) are all running in production.
Synapse — Context Assembler + RAG
services/synapse.py · 9,077 chunks · hybrid search
assemble_context()callsconversation_store.hybrid_search()live/context/injectendpoint returns real conversation chunkslive- FTS5 + pgvector hybrid search across 9,077 chunks / 601 sessionslive
- ext_ingest auto-summarization: every MemBrain flush → Haiku background job → decisions → structured_archivelive
- Backfill script processed 565 existing sessions through Haikulive
Cockpit — Intelligence Dashboard
692 anomalies · 340 nudges · 12 project states
- 692 anomalies (detected contradictions/regressions with lifecycle state)live
- 340 nudges (actionable suggestions with lifecycle state)live
- 12 project_state rows (one-line status per active project)live
- Cockpit API:
/cockpit/overview,/cockpit/anomalies,/cockpit/nudges,/cockpit/sessionslive - Cockpit UI (HTML/JS, no React build step) — full dashboard spec writtenspecced
Runbook — Dynamic Context Injection
8 pages live · trigger list · Tier 1 always-on
- 8 runbook pages live. Triggers: SSH work, writing code, memory changes, gateway changes, Docker compose, new MCP server, session end.live
- Tier 1 (400 tokens, every call): runbook + active alerts + project_state + shorthand dictlive
- Replaces 3,000-token master context blob. Dynamic. Always current.live
- IDENTITY + RULES + TRIGGERS + ALERTS + STATE structurelive
Shard System
shard_diffs (24) · shard assembler built · compression engine built
- 24 shard_diffs in DB (versioned file change records)live data
- Shard Assembler — built, unwired (per Miro board)unwired
- Compression Engine — built, unwired (per Miro board)unwired
- Delta Exchange Generator — specced, not startedspecced
- Event bus ADR written:
file.written → shard differsubscriber patternspecced
05 — capture surfaces — 13 defined — all inputs to pipeline a
File Operations
helix_action · P0
- file_write: full pipeline, blob versioned in Garagelive
- file_patch, file_move, file_delete: all live Phase 1alive
Conversation Capture
MemBrain ext_ingest · P0
- Auto-flush → Helix. 9,077 chunks, 601 sessions.live
- Every flush triggers Haiku summarization background joblive
SSH Command Capture
POST /capture/ssh · P0
- gateway__ssh_execute auto-posts. One webhook = 100% SSH coverage.building
- Stack traces, service names, pip/npm → KG entitiesbuilding
Background File Scanner
scheduled worker · P0
- Walks /opt/projects on schedule. Hash-indexed, skips unchanged.building
- Config via .helix/config.yml. Skips node_modules, .git, binaries, >1MBbuilding
Git Events
post-commit hook · P1
- helix init installs post-commit hook. Diff + commit → decision record.building
Stack Traces
via SSH stderr · P1
- Python/Node/Go detection → file, function, error type → failure record + KGbuilding
Package Dependencies
SSH capture + watcher · P2
- pip/npm installs via SSH. Periodic scan of requirements.txt, package.json, go.modbuilding
Config Files
infra atom parser · P2
- Docker Compose → container/port/network entities in KGbuilding
Runtime Logs
log tailer signal-only · P2
- Tails containers. Errors/warnings → log_event KB entries. Signal-only.building
File Moves/Renames
POST /capture/move · P2
- Updates path labels on atoms by content hash. No migration needed.building
Import Resolution
post-scan · P3
- Resolve imports → index package public API as external atomsbuilding
Browser/MemBrain Hook
POST /capture/browser · P3
- GitHub/docs.*/npm → optionally POST page content. Opt-in per domain.building
DB Schema/Migrations
POST /capture/migration · P3
- sql_diff + name → schema entities in KG. Migration name → decision record.building
06 — storage — all live
Postgres + pgvector
203MB · 38 tables · BGE-large-en-v1.5
- Primary store for all structured data. FTS5 + semantic search.
- 9,301 embeddings. 38 tables. Backup every 6hrs → Garage.
atoms 451
compress_profiles 1,036
decisions 619
conventions 584
anomalies 692
nudges 340
archive 6,928
observer 5,065
Neo4j Knowledge Graph
ports 9038/9039 · 494 entities · 956 relationships
- 494 entities, 956 relationships, 26,769 mentions
- DEPENDS_ON, CONTAINS, TOUCHES, PRODUCES. Daily backup → Garage.
Garage Blob Store
v1.0.1 · versioned file history · 21 backups
- helix-workspace/ (file version blobs from helix_action writes)
- helix-backups/ (postgres, neo4j, redis backups)
- 21 automated backups. POST /admin/restore endpoint.
07 — building — active phases
Phase 1b — Smart Content Detector
~2 hrs · unblocks everything downstream
services/detector.py— code | config | prose | structured-data | binary- Shared by both pipelines and all 13 capture surfaces
Phase 1c — Background File Scanner
~4 hrs · populates atoms from existing codebase
- Scheduled worker, hash-indexed, walks /opt/projects on schedule
- First run immediately populates thousands of atoms from existing code
Phase 1d — Pipeline B Scaffolding Engine
~6 hrs · unlocks scaffold injection in MemBrain
- Intent parser + atom matcher + dependency cascader + scaffold assembler
- scaffold_query goes from stub to real. Unlocks MemBrain Phase 2.
Layer 0 — Multi-Tenancy
~1-2 sessions · unlocks everything in product track
- tenants table, schema-per-tenant, RLS policies, Traefik wildcard *.helix.millyweb.com
- API key auth middleware. Tenant provisioning endpoint. Ashley gets her own instance.
Phase 4 — Forge Internalization
~1 day · absorb scanner + workspace into helix-cortex
- Move scanner.py, workspace.py into helix-cortex/services/. Remove external HTTP calls to the-forge container.
- Deprecate the-forge container. Wire Garage directly as blob store. Remove MinIO from product.
Phase 5 — Backup Scheduler
~6 hrs · APScheduler · Garage · restore endpoint
- APScheduler inside helix-cortex (no host cron). Postgres → Garage every 6hrs. Neo4j + Redis daily.
- POST /admin/restore endpoint. Retention enforcement. 21 manual backups run already.
08 — specced — full docs written, not started
Privacy Proxy
llm-privacy-proxy-report.md · 5 phases fully specced
- Phase 1: Privacy priority tier in symbol promotion (~2 hrs)specced
- Phase 2: Local entity tokenizer (Presidio/spaCy, session-scoped tokens) (~1 session)specced
- Phase 3: Cross-session entity persistence — same entity, same symbol forever (~0.5 sessions)specced
- Phase 4: Profile-enhanced concept aliasing (~1 session)specced
- Phase 5: Privacy audit panel in Cockpit (~1 hr)specced
Cockpit Dashboard UI
Full spec in millyforge-unified-v3.md
- Overview: project states, active alerts, system healthspecced
- Compression: token savings with/without, trends, dollar estimatesspecced
- Intelligence: active anomalies, nudges, decision historyspecced
- Sessions: recent summaries, tool usage patternsspecced
- HTML/JS served by FastAPI, no React build step. Calls cockpit API endpoints.specced
MillyGate
PRD complete Feb 17, 2026 · 5 phases · ~12 sessions
- Unified MCP gateway with built-in provisioner. Manifest-driven.specced
- Replaces 7 middleware containers with one process.specced
PrintBlocks Assembler
Concept Feb 20, 2026 · three-layer decomposition
POST /api/assemble— compose organism from molecules/atomsspecced- ~76 patterns cover 95-100% of current infrastructurespecced
- GET /api/patterns/suggest — suggest patterns for task descriptionspecced
Event Bus (ADR Written)
helix-event-bus-adr.md · full node map specced
- file.written → versioner, scanner, KB indexer, KG extractor, observer, shard differspecced
- session.ingested → haiku_summarizer, chromadb_embedder, session_storespecced
- Decouples all pipeline steps. Adding shard differ requires zero other changes.specced
n8n Daily Digest
Workflow JSON built · needs import + API key
/opt/projects/helix/scripts/n8n_daily_digest.json— 6 AM daily- Summarizes prior 24h activity →
projects/memory/daily-digest.md
Product Tiers
Free / Pro / Self-Hosted · MemBrain product spec complete
- Free tier: Extension + IndexedDB + user brings own API key. No hosted backend.specced
- Pro tier: Hosted Helix backend. Full intelligence, compression, cross-session memory. Collective intelligence catalog.specced
- Self-Hosted tier: Docker compose. Full Helix stack on their infra. API-compatible with Pro.specced
- Team tier: Shared Helix across org (Ashley + Ryan). Same atom store, shared project state.specced
Delta Exchange Generator
Miro board · specced, not started
- Generates compressed delta between sessions — only the diff, not full context re-send.specced
- Shard assembler (built, unwired) + compression engine (built, unwired) feed into this.deps unwired
09 — product layers — path to multi-tenant platform
To first paying client: Layer 0 + Layer 1 + Layer 2 + Layer 6d ≈ 6–8 sessions. Full product: all layers ≈ 20–25 sessions.
To first paying client: Layer 0 (multi-tenancy) + Layer 1 (gateway) + Layer 2 (installer) + Layer 6d (onboarding) ≈ 6–8 sessions.
Full product: all layers ≈ 20–25 sessions.
Ashley gets her own instance as soon as Layer 0 ships.
Layer 0 — Multi-Tenancy
~1-2 sessions · BUILD FIRST · everything requires this
- tenants table: tenant_id, subdomain, api_key_hash, plan, helix_schema, node_agent_token
- Schema-per-tenant in existing Postgres (not container-per-tenant until enterprise)
- RLS policies on all 38 existing tables
- Traefik wildcard:
*.helix.millyweb.com→ tenant from subdomain - API key auth middleware + tenant provisioning endpoint
Layer 1 — Helix as Gateway
~2-3 sessions · 100% observer coverage
- stdio transport: Desktop spawns Helix directly, one config entry, 100% coverage
- Tool routing in /mcp/: Helix proxies any registered MCP server, observer logs all
- helix_init(): fires on Desktop connect, returns OAuth-style setup URL if agent not registered
- Current coverage: ~30% Desktop, ~70% claude.ai. With gateway: 100% everywhere.
Layer 2 — Frictionless Installer
~1-2 sessions · non-technical clients
- helix.millyweb.com/setup?token=XYZ — OS detection, pre-auth token, big download button
- Windows: NSIS/MSIX installer — node agent + CA cert + proxy + Desktop config patch
- Mac: .pkg installer — LaunchAgent + keychain cert. One password prompt.
- UX: click link in Claude → browser → download .exe → run → one UAC prompt → done
Layer 3 — Desktop Capture
~1 session · MemBrain parity on Desktop
- HTTPS proxy (bidirectional): intercepts Desktop → api.anthropic.com. Injects context outgoing. Captures turns incoming.
- Transparent, no Claude cooperation, no system prompt dependency
- IndexedDB watcher fallback: watches Desktop LevelDB files, catches missed turns
- Desktop does NOT pin certs. Uses system cert store. Electron respects installed CAs.
Layer 5 — Collective Intelligence
~2-3 sessions · network effect · the moat
- Shared atom catalog: structural fingerprints federated opt-in. No code shared.
- Failure pattern federation: error signatures + solutions shared anonymously
- Symbol compression sharing: global symbol table, every tenant benefits
- GPT-4's knowledge is frozen at training. Helix compounds daily from real usage.
Layer 6 — Product Surface
~2-3 sessions · paying clients · marketplace
- MillyGate: *.helix.millyweb.com routing, per-tenant isolation
- MCP marketplace: 47+ servers, Connect button → Infisical → provisioner
- Usage metering: observer already logs all tool calls with timing — billing hooks built in
- Onboarding: sign up → subdomain → API key → config snippet → helix_init()