1. Introduction
This guide explains how to operate the Eigenius platform — install it, run it, manage data, write WASM and substrate extensions, and deploy. It is the practical companion to the surface-language guides (ESL, EigenQL, Formula) which target program/query authors. Where this guide is operational, the language guides are reference material for what you write into the system.
1.1. System topology
Eigenius is a small set of cooperating processes:
┌──────────────┐ Connect-RPC ┌──────────────────┐│ Notebook │ ────────────────────────────► │ Orchestrator ││ (browser) │ /notebooks/* (static SPA) │ (Deno) │└──────────────┘ /eigenius.v1.* (RPC) │ - LLM adapter │ │ - MCP server │┌─────────┐ CLI commands ┌──────────────┤ - IO components ││ CLI │ ──────────────────► │ Kernel │ - Notebook SPA │└─────────┘ gRPC :50051 │ (Rust) │ - Substrate │ │ - Layer chain addon │ │ - Type theory Connect :8080│ │ - EigenQL └────┬───────┘ │ - WASM runtime │ └────┬─────────────┘ │ spawn ▲ ▼ workers │ component ┌──────────────┐ │ dispatch │ Worker │ │ │ containers │ │ │ (Julia, │ │ │ Python…) │ │ │ UDS + │ │ │ Eigon-CBOR │ │ └──────────────┘ │ │ /var/lib/eigenius/ │ substrate-depot/ │ (host bind-mount, │ UDS sockets)Kernel (kernel/) — Rust binary. Holds the layer chain (knowledge graph), type-checks programs via the EigenTT kernel, evaluates programs and queries, dispatches IO components and external runtimes to the orchestrator. Exposes a gRPC service on port 50051. Optionally persists state to RocksDB via serve --db <path>.
Orchestrator (orchestration/) — Deno/TypeScript service. Four roles: (a) hosts IO component implementations the kernel cannot embed directly (LLM adapters, HTTP-bearing components); (b) exposes the Model Context Protocol (MCP) server surface for external LLM agents to call kernel operations as tools; (c) serves the notebook SPA at /notebooks/* and proxies the kernel’s RPC surface to browsers via Connect-RPC under /eigenius.v1.*; (d) hosts the runtime substrate addon that spawns sibling worker containers for substrate-hosted institutions (Julia in v1; see chapter 11). Listens on port 8080.
Worker containers — when the kernel dispatches against a substrate-hosted institution, the orchestrator’s substrate addon spawns (or reuses, from a per-image cache) a sibling container running the institution’s language runtime. Workers are siblings of the orchestrator container — Docker-out-of-Docker via the bind-mounted Docker socket — and communicate over a Unix domain socket whose path lives under the depot bind-mount (/var/lib/eigenius/substrate-depot/, reachable at the same path on host and orchestrator). See chapter 11 §11.1.
Notebook (notebooks/) — React + TypeScript single-page app. Bundled into the orchestrator image at build time, served at http://localhost:8080/notebooks/ from a single origin. Cells run ESL, EigenQL, TypeScript, and program invocations against the live kernel; outputs auto-render as typed inspectors, result tables, layer-stack diagrams, and program-trace trees. See chapter 14.
CLI (cli/) — Rust binary (eigenius). Two operation modes:
- In-process — for file commands and read-only ontology inspection. No kernel server needed.
- Remote — for live operations against a running kernel. Pass
--endpoint http://localhost:50051.
TypeScript SDK (clients/eigenius-ts/) — @eigenius/client. Wraps the orchestrator’s two Connect-RPC services in a single typed Eigen class. The notebook uses it; you can use it programmatically from any TypeScript runtime (browser, Deno, Node). See chapter 17.
1.2. Seven ways to interact with the platform
You’ll touch the platform through one of seven interfaces depending on what you’re doing:
-
The notebook — the most accessible UX. A React SPA the orchestrator serves at
http://localhost:8080/notebooks/oncedocker compose up -dis running; cells (markdown, ESL, EigenQL, TypeScript, program-run) run against the live kernel and auto-render typed outputs. Notebook documents are JSON files and can be saved, loaded, or published into the kernel as queryable resources. See chapter 14. -
The TypeScript SDK — for programmatic browser / Deno / Node use of the same RPC surface the notebook drives. The
Eigenclass wrapsinspect/query/load/runProgram/runProgramByIri/layerTopology/publishNotebookand a few more. See chapter 17. -
The CLI — for ad-hoc operations: load a file, run a program, query the graph, inspect a resource, install a WASM capability or substrate institution. The
eigeniusbinary incli/is the everyday tool. See chapter 4. -
The gRPC API — for programmatic non-TS clients. The kernel exposes a tonic-based gRPC service at
--port(default 50051) when running undereigenius serve. Protobuf definitions live inproto/. The CLI and the orchestrator’s TypeScript SDK are both clients of this API. -
The kernel as a library — for embedding the kernel in another Rust process. Add
eigenius_kernelas a Cargo dependency and use the modules underkernel/src/directly. This is what the kernel server itself does — the gRPC layer is a thin wrapper over the in-process API. -
WASM extensions — for adding sandboxed domain-specific dispatch logic. Custom components and institutions are built as WASM binaries against the
eigenius-componentandeigenius-institution-d14WIT worlds, using theeigenius-wasm-sdkcrate. Components are installed viaeigenius capability install; D14 institutions auto-register from chain scan when theirInstitutiondeclaration carriesruntime: wasm+ inlinewasm_binary. See chapter 9 and chapter 10. -
Runtime substrate institutions — for institutions backed by full language ecosystems (Julia in v1; Python and others planned). Sibling worker containers spawned by the orchestrator’s substrate addon, communicating with the kernel via Eigon-CBOR over UDS. The right path when the institution wants to use a heavy native library that doesn’t compile to WASM cleanly —
Symbolics.jl,OrdinaryDiffEq.jl,JuMP+HiGHS, etc. The chain shapes (RuntimePackageMirror,RuntimeEnvironment,RuntimeMethodSignature,Institution { runtime: external }) are committed viaeigenius mirror create/env build/env create/institution install. See chapter 11.
1.3. The five bootstrap layers
When the kernel starts, it loads five immutable layers in a parent-pointer chain:
core (root) └─ program └─ reflection └─ institution └─ notebookThese are baked into the kernel binary as the embedded ontology. The corresponding source-of-truth JSON files live in ontologies/core/core-ontology.json and equivalents for the other four. Every subsequent layer (loaded via eigenius load or eigen.load(...)) sits on top of these five. The notebook layer (ontologies/notebook/notebook-ontology.json) defines Notebook, Cell, and CellType so notebooks published from the UI (chapter 14 §14.5) validate against a live, queryable schema without having to load anything first.
When running with --db <path>, the kernel also seeds a SHA-256 manifest of the embedded ontology on first start. Subsequent restarts verify that the embedded ontologies haven’t drifted from the persisted manifest — see chapter 6 and D13.
1.4. What this guide covers
The chapters in order:
- Chapters 2–3 — get a development environment building.
- Chapter 4 — every CLI command, with what it does in process vs. against a running kernel.
- Chapters 5–7 — running locally, persistence, the orchestrator.
- Chapter 8 — three worked end-to-end demos.
- Chapters 9–10 — extending the kernel with WASM components and institutions.
- Chapter 11 — extending the kernel with runtime-substrate-hosted institutions (Julia in v1).
- Chapter 12 — Docker Compose and Azure ContainerApps deployment.
- Chapters 13 — troubleshooting.
- Chapter 14 — the notebook UX (cells, file format, publish-to-layer, the patent and kinase-institutions demos).
- Chapter 15 — tags, branches, and history in the notebook (the workspace rail’s chain destinations + time-travel read-pin).
- Chapter 16 — merge resolution: picking strategies (Witness / Rename / SchemaQuotient / Restructure), the cascade gate, provenance records.
- Chapter 17 — the TypeScript SDK that powers the notebook and that you can use programmatically.
- Chapter 18 — appendix (env vars, file locations, source index).
1.5. What this guide does not cover
- ESL syntax / semantics — see the ESL user guide.
- EigenQL syntax / semantics — see the EigenQL user guide.
- Formula language — the chain-mirrored EigenTT fragment used by every numerical institution; see the formula language guide.
- Kernel internals — type theory, NbE, ontology-as-types resolution, etc. See the design documents in
docs/design/.