The architecture docs describe four things the design spec has since ruled out, and each one is a supervisor invented for something that should be a property of the substrate: grounding modelled as a subsystem rather than as the edge weight it already is; faculties modelled as parameters of a read when abduce is a write; wonder materialized as a maintained manifest when it is the boundary of the structure; and consolidation implemented eleven times behind tickers when a brain has no cron job. Left standing rather than deleted, per the repo's own supersession discipline — the trail of how the understanding matured is the point. Each stale passage is marked inline and points at a new 06 §12 that transcribes the corrections and records the measured consolidation inventory. Authority: foundation/el, branch design/correspondence-and-censorship, lang/spec/correspondence-and-censorship.md.
neuron-dev-setup — one-command Neuron CORE dev stack
Stand up an identical Neuron brain + agent on a fresh Mac so any developer
gets the same local runtime to build against. This is the CORE dev stack
only — the four native launchd services that make Neuron think, remember, and
speak MCP to Claude Code. Will's personal automations (catalyst, telegram,
vessels, studio, self-review, world-integrator, council, compressor, snapshots,
act-runner, …) are deliberately excluded.
⚠ Six of those "personal automations" are one missing subsystem — 2026-08-16
Authority:
foundation/el/lang/spec/correspondence-and-censorship.md§7 (branchdesign/correspondence-and-censorship), transcribed with the full measured inventory indocs/architecture/06-cognitive-architecture.md§12.4.The exclusion above and the fuller list further down are correct as a packaging decision — a fresh dev does not want Will's laptop's automations. But they are also a census of a fragmentation, and it should not be read as a list of unrelated conveniences. Consolidation had no owner, so it was implemented at every site that needed a piece of it. Every name in the set is a consolidation verb — compress, cultivate, digest, integrate, review, reify, beat.
Measured 2026-08-16 from
~/Library/LaunchAgents:
agent what it runs when language is it consolidation? ai.neuron.compressorcouncil/compressor_service.py --port 7772KeepAlive, residentPython, outside el yes ai.neuron.councilcouncil/council_service.py --port 7771KeepAlive, residentPython, outside el yes (and a write-refusal — see council/README.md)ai.neuron.cultivation-digesttools/cultivation-digest.sh23:55 shell yes ai.neuron.world-integratorproducts/world-ingestor/integrator/run.py06:00 Python, outside el yes ai.neuron.self-review~/.neuron/bin/self-review-launch.sh08:30 shell → CLI yes ai.neuron.engram-tickpokes POST /api/tickvia~/.neuron/bin/engram-tick.shStartInterval = 600shell yes ai.neuron.engram-backup~/.neuron/bin/engram-backup.shStartInterval = 3600shell no — ops/backup ai.neuron.snapshot-backup~/.neuron/bin/snapshot-backup.shStartInterval = 900shell no — ops/backup ai.neuron.act-runner-watchdogact-runner-watchdog.shStartInterval = 120shell no — ops/CI The last three times — 23:55, 06:00, 08:30 — are a sleep cycle implemented as launchd
StartCalendarIntervalentries. Someone understood it was consolidation and expressed it as three unrelated scheduled scripts in three languages, none aware of each other. Three of the six run in Python, outside el, so part of Neuron's consolidation does not run on his own substrate and cannot touch the geometry at all.Consolidation is ambient, not scheduled. A brain has no cron job. (Precisely: it is not cron either —
crontab -lhas zero neuron entries. Every neuron schedule here is launchd.) The presence of a ticker is the diagnostic: everyStartInterval, everyHour/Minute, every POST-to-beat marks a place where an intrinsic rhythm was replaced by an external clock. The one fragment with the correct shape issoul.el:731's continuous in-processawareness_run()loop, which is inside the core stack this repo does install — and it is the shape the six above fold into.Nothing here changes what this repo installs. The core stack stays four services. The note exists so the exclusion list is not mistaken for a statement that these six are optional extras rather than one subsystem that never got built.
┌─────────────┐ ┌──────────────┐
│ soul :7770 │ ─────► │ engram :8742 │ the mind ──► its memory substrate
└─────────────┘ └──────────────┘
▲
│
┌───────────────────┐
│ mcp-wrapper :17779│ ─── MCP surface over the soul HTTP API (internal)
└───────────────────┘
▲
│
┌────────────────┐
│ mcp-proxy :7779│ ◄─── Claude Code connects here (stable front door)
└────────────────┘
Claude Code's neuron MCP server points at http://127.0.0.1:7779/ — the proxy.
The proxy forwards to the wrapper (:17779), which calls the soul (:7770),
which reads/writes the engram (:8742). The engram is the persistent brain.
Quick start
git clone <this-repo> && cd neuron-dev-setup
cp config.env.example config.env # optional — edit ports/paths if you like
./install.sh # prompts for your Anthropic API key
Then verify:
curl http://localhost:8742/health # engram
curl http://localhost:7770/health # soul
curl http://localhost:7779/health # mcp-proxy (what Claude Code uses)
launchctl list | grep ai.neuron
Open Claude Code — the neuron MCP tools should be live, backed by your own
local brain. ./install.sh --dry-run shows every action without touching anything.
What the installer does (8 phases)
| Phase | Action |
|---|---|
| 1 | Preflight: macOS/arm64, ensure git cc curl python3 + openssl@3 (via Homebrew) |
| 2 | Prompt for the Anthropic API key, store it in the macOS Keychain (never a file) |
| 3 | Clone neuron, engram, foundation; fetch the El toolchain; build 4 binaries + forge |
| 4 | Lay down ~/.neuron/{bin,logs,engram} and the templated soul-wrapper.sh |
| 5 | Generate + load the 4 core LaunchAgents (engram → soul → wrapper → proxy) |
| 6 | Seed a fresh engram with the genesis identity via forge install |
| 7 | Install Claude config: neuron agent, core hooks, local MCP registration |
| 8 | Health-check all four ports |
Everything is idempotent (safe to re-run) and templated to the invoking
user's $HOME — no path is hardcoded to another machine.
Prerequisites
- macOS on Apple Silicon (uses
launchd; soul build flags assume arm64). - Xcode Command Line Tools (
xcode-select --install) — providescc,git. - Homebrew — for
openssl@3,curl. - An Anthropic API key — the soul's inference provider. Prompted for; stored
in Keychain under service
neuron-llm-0-key; read at launch bysoul-wrapper.sh. - Git access to Gitea (
git.neuralplatform.ai) for the source repos. - GCP access to project
neuron-785695Artifact Registry (default El toolchain source). Ask Will to grant it, or setEL_TOOLCHAIN_SOURCE=local.
Core-stack map (what gets replicated)
| Service | Port | Binary | Built from | LaunchAgent |
|---|---|---|---|---|
| soul | 7770 | neuron/dist/neuron |
dist/soul.c + El runtime, cc (CI recipe) |
ai.neuron.soul |
| engram | 8742 | engram/dist/engram |
engram repo src/server.el via elc→cc |
ai.neuron.engram |
| mcp-wrapper | 17779 | neuron/mcp-wrapper/dist/neuron-mcp-wrapper |
mcp-wrapper/src/main.el |
ai.neuron.mcp-wrapper |
| mcp-proxy | 7779 | neuron/mcp-proxy/dist/neuron-mcp-proxy |
mcp-proxy/src/main.el |
ai.neuron.mcp-proxy |
~/.neuron layout the installer creates
~/.neuron/
bin/soul-wrapper.sh # reads Anthropic key from Keychain, execs the soul binary
logs/ # soul.*.log, engram.log, mcp-*.log
engram/ # ENGRAM_DATA_DIR — the persistent brain (snapshot.json + db)
Identity seed. foundation/forge/seeds/neuron-genesis-seed.json carries
identity_nodes[] + edges[] with fixed knowledge-node IDs (e.g.
kn-efeb4a5b-5aff-4759-8a97-7233099be6ee, the "self" traversal root). Those exact
IDs are referenced by the SessionStart self-load hook and the neuron agent, so
seeding must preserve IDs — forge install <seed> is the mechanism.
Claude config installed (~/.claude/)
agents/neuron.md— the Neuron agent (identity, session protocol, five primitives).mcp.json— registersneuron→http://127.0.0.1:7779/.settings.jsonhooks (CORE subset only):SessionStart→neuron-self-load.sh(loads identity from the seeded engram)PreToolUse:Agent→neuron-agent-preamble.sh(subagents load substrate first)PreCompact→pre-compact.sh(clean context recovery)
Deliberately EXCLUDED from core
check-active-contexts.shandrequire-execution-context.sh— these depend on a separate filesystem repo~/Development/projects/active/neuron/synapse.require-execution-context.shis a hardEdit/Writegate that would block a fresh dev from editing any file without that synapse repo. Not core; excluded.engram-mirror.py(PostToolUse) — optional; mirrors MCP writes to engram.- All Will-personal LaunchAgents:
catalyst-*,telegram-gateway,vessel.*,studio,self-review,world-integrator,council,compressor,cultivation-digest,snapshot-backup,engram-backup,act-runner,keymap,invest, and the disabledai.neuron.api(:7771is a personal Python perception helper — confirmed not core).
Secrets — how they're handled
- Anthropic key: prompted for; stored in Keychain; read at launch. Never in a plist, this repo, or a log.
- Engram local token (
ENGRAM_API_KEY): a loopback-only dev token, not a cloud secret. Defaults to a generatedntn-dev-*value; override inconfig.env. - No cloud tokens, Vault tokens, CF-Access secrets, or founder keys are copied.
(Will's live
start-daemon.sh/neuron-api-launch.shcontain such keys — this installer intentionally does not use those files.)
Uninstall
./uninstall.sh # stop + remove the 4 LaunchAgents and added Claude hooks
./uninstall.sh --purge-data # ALSO delete ~/.neuron/engram (destroys the brain)
OPEN QUESTIONS (need Will to confirm)
- El toolchain acquisition. The default path fetches
el-runtime-c/-handel-elcfrom GCP Artifact Registry (mirrorsneuron/.gitea/workflows/ci.yaml). A new dev needs GCP access toneuron-785695. Is that the intended path, or should the El SDK be published/vendored for onboarding? elcinvocation for engram/wrapper/proxy. The soul build (`cc dist/soul.c- el_runtime.c
) is verified from CI. The.el → .ctranspile step for engram, mcp-wrapper, and mcp-proxy is inferred (elc -o <out.c>). Confirm the exact flags / entrypoints (CI noteselb` OOMs on Linux; macOS builds differ).
- el_runtime.c
forge installID preservation. Confirmforge installwrites the seed's fixedkn-IDs verbatim (the self-load hook hardcodeskn-efeb4a5b…). If it re-mints IDs, the hook + agent identity load would break on a fresh brain.- engram repo layout. The live engram binary is built from
src/server.el(Gitea reponeuron-technologies/engram, cloned in CI). Confirm that repo is the canonical source for onboarding (the localfoundation/el/engramcopy has the samesrc/server.el). - Home for this bundle — see below.
Where this should live (recommendation)
Recommendation: a dedicated neuron-dev-setup (or neuron-onboarding) repo —
NOT neuron-code. neuron-code already exists as a real product ("Neuron Code",
a coding tool with nc-cli + vessels — local products/neuron-code has commits);
repurposing it for onboarding would collide with a shipped product's identity.
This bundle was scaffolded as neuron-dev-setup/ on branch feat/neuron-dev-setup
in the neuron repo (off origin/main) and opened as a PR for review, because
the neuron repo already hosts the soul source, the verified CI build recipe, and
the mcp-wrapper/proxy sources — the natural review surface. If you'd rather it be
its own repo, move this directory into a fresh neuron-dev-setup repo verbatim;
nothing here depends on living inside the neuron repo.