Version: 5.0.0 (alpha118) Last regenerated: 2026-05-14 Companion: features.html is the public-site landing page; this file is the canonical source. Scope: Everything Eldric AIOS 5.0 can do or has implemented, one short paragraph per feature, grouped by domain. Stub / aspirational items are tagged
WIP.
A microkernel-style C++ runtime (cpp/src/kernel/) that
hosts independent modules (edge, controller, router, data, agent, media,
comm, science, training, inference, iot, swarm, nova) each on its own
port. Modules communicate via internal syscalls plus a uniform HTTP API.
Header-only modules can be added or removed without rebuilding the
kernel.
Every kernel instance advertises the modules it actually has activated for that node's role. The controller's topology view aggregates the cluster-wide module map so the chat shell can render only the features that are reachable.
The controller pushes a cluster_topology blob to workers
on registration and on every heartbeat (swarm URLs, data-worker URLs,
peer inference URLs, router URLs, agent-worker URLs, media-worker URLs).
Workers no longer need manual --swarm-url /
--data-workers / --peer CLI flags.
mDNS / DNS-SD discovery (/api/v1/cluster/discover, §38)
finds _eldric._tcp peers on the LAN. Three backends behind
one PIMPL — Bonjour on macOS, Avahi on Linux (dlopen, no hard link dep),
stub elsewhere.
EIS (Eldric Identity System, §95) gives every device a 32-domain ×
411-device-code identifier. ENS (Namespace System, §96) maps friendly
names to tenants and roles. Every request can carry an
X-Eldric-Source header so observability can attribute
traffic to a physical or virtual origin.
Header-only kernel::tenant_guard::deny_if_cross_tenant()
(§103) enforces tenant scope on data, storage, vector, memory, agent,
comm, swarm and tenant paths. Cross-tenant attempts get
403. Superadmin and _system escape hatch for
cluster-internal calls.
Short-lived JWTs minted at login, refreshed via
/api/v1/auth/refresh. TOTP enrolment for 2FA on admin
tenants. The Edge enforces 2FA on all admin-class paths.
Inference is abstracted behind
backends::InferenceBackend. Eleven backend types: Ollama,
vLLM, TGI, llama.cpp, MLX, NVIDIA Triton, TensorFlow Serving,
TorchServe, ONNX Runtime, OpenAI-compatible, and the native Eldric
Cluster pass-through.
The cloud worker (8889) federates OpenAI, Anthropic,
xAI/Grok, Together, Groq, DeepSeek, Mistral, Cohere, Fireworks and
Perplexity behind one OpenAI-compatible endpoint. Priority-based routing
with fallback. Auto-discovers models from connected backends.
eldric-inferenced (8883) loads GGUF and
xLSTM models directly with embedded llama.cpp — no Ollama, no vLLM, no
external runtime. Preloading, continuous batching, speculative decoding
with a draft model, multi-GPU tensor splitting, prompt KV-cache warm-up,
auto-unload on idle, model distribution between peers, and pipeline
parallelism.
/v1/chat/completions, /v1/completions,
/v1/embeddings, /v1/models work as drop-in
replacements for the OpenAI SDK. Native tool calling, vision, JSON mode,
streaming, and the tools parameter all proxy correctly Edge
→ Router → Worker.
Zero-copy SSE proxy through Edge → Router → Worker → backend. First-chunk doubling fix shipped in alpha84.
Per-model selectable: auto, native,
antml (XML), emphatic (XML with extra emphasis
for small models). Native mode passes tools to the backend
and parses tool_calls; XML mode embeds tool docs in the
system prompt and regex-parses output.
Ollama, OpenAI, vLLM, and a local TF-IDF fallback. The data worker auto-picks an embedding provider on ingest; the router can fall back to peer embeddings (alpha76).
round_robin, least_connections,
least_latency (default), weighted_round_robin,
random, ip_hash, priority,
ab_test.
A small router model classifies every request into one of 13 intents (PlainChat, RAGQuery, AgentInvoke, SwarmRequest, MemoryStore/Recall, DataOperation, ScienceQuery, MediaRequest, CommRequest, TrainingRequest, IoTRequest, ADMIN) and forwards to the right worker class. Router v3 trains an 8B Llama via QLoRA NF4 with 16-layer LoRA.
Medicine, legal, code, finance, science, creative, general — each with a default model and per-rule overrides. Themes can be loaded from a JSON file or added at runtime.
Optional LLM-controlled worker selection (none /
advisory / autonomous) when algorithmic
strategies aren't enough. The router calls the configured Ollama model
with a structured prompt and parses its JSON answer.
/api/v1/ensemble fans a request out to multiple models,
then synthesises the answers via a designated synthesiser model.
Sessions can be sticky-routed by IP or session ID. With
--memory the router stores and recalls short-term
conversation state through the data worker.
WIP)Optional xLSTM checkpoint that predicts upcoming load and shapes routing decisions.
The data worker (8892) gives each tenant an isolated
namespace under ${ELDRIC_DATA_DIR}/storage/tenants/{id}/.
Quotas, per-mime ACLs, signed URLs.
Resumable uploads with 4 MB chunks and a 24 h TTL on incomplete
uploads. Browser slices via File.slice() /
FileReader; one POST per chunk. A janitor thread sweeps
abandoned chunks.
SQLite, FAISS, ChromaDB, or in-memory backends per namespace.
Multi-tenant. Hybrid BM25 + vector search. Auto-chunk + ingest. Re-embed
on document edit (KB editor uses the new monotonic version
column).
The data worker maintains a hierarchical associative memory built
from outer-product updates: M = decay·M + importance·(v⊗k).
Domain → Project → Run levels. Compressed, generalising recall sits
alongside the exact vector store. .emm v3 binary format:
128-byte header, 64 KB blocks, CRC32 per block, WAL + checkpoint.
Four modes: none, async, sync, quorum. rsync-over-SSH between data workers (replaced the alpha116r echo stub in alpha116t). Per-target throttle. SSH-key auth.
Integrates with nfs-ganesha. Generates
/etc/ganesha/ganesha.conf from the dashboard, reloads
ganesha via DBus. Per-tenant exports, remote-data-worker mounts to
aggregate storage, systemd mount-unit generation.
SQLite, PostgreSQL, MySQL, DB2. Each registered DB exposes
/query, /execute, /schema
endpoints. Used by the Database agent and the Connector node in training
chains.
The agent worker (8893) iterates Thought → Action →
Observation up to a configurable cap. Tools include vector search, web
fetch, file read, and any swarm-registered tool.
/api/v1/agent/decompose rewrites a complex question into
a set of sub-questions, then executes them in parallel.
Fifteen agent types — General, Researcher, Coder, Validator, Planner, Analyst, Explorer, Runner, Searcher, Database, Learner, Network, Spider, Email, Ansible. Each has a constrained tool allowlist.
Sequential, parallel, MapReduce, dependency-graph. The agent orchestrator picks the right pattern by the workflow graph.
Multi-step workflows registered via
/api/v1/agent/workflows. Each step can call any agent,
tool, or sub-workflow. Swarm-registered workflows are discoverable
cluster-wide.
/api/v1/agent/generate-training walks a KB and emits
LoRA-ready JSONL — code_qa, chat,
alpaca, dpo. Used to bootstrap router training
and domain adapters.
Per-role tool picker (/api/v1/me/tools). The webchat
tools-modal renders the slice of tools the caller may use, and gates
execution server-side.
The orchestrator agent inspects a goal, picks a topology, instantiates the required agents on the right workers, and runs the swarm. The user describes intent; the orchestrator handles execution.
Email (IMAP/SMTP with OAuth + STARTTLS + AUTH=LOGIN), SMS (Twilio or
HTTP gateway), WhatsApp (Business API or self-hosted bridge), Signal
(signal-cli with E2E), Microsoft Teams (Graph API), XMPP (native), VoIP
(SIP/RTP). One unified message envelope flows across all of
them.
IMAP IDLE listener, Twilio / Graph / signal-cli webhooks on port 8896. Inbound messages persist via the data worker and index into the comm RAG.
Configured tenants generate AI replies, queue them at
/api/v1/comm/ai/queue, and require human approval before
send.
SIP/RTP calls with STT/TTS via the media worker. Call transfer, DTMF, voicemail with auto-transcription, hold, IVR. SRTP for encrypted media.
/api/v1/comm/search runs vector search over the full
message history across protocols.
Optional syslog + CDR export with TLS-protected transport for telecom
compliance (--syslog-server, --audit-cdr).
Whisper.cpp, OpenAI Whisper API, Faster-Whisper. Streaming and batch. Speaker diarisation on Pro+.
Piper, ElevenLabs, OpenAI TTS. Streaming SSE. Voice cloning on Pro+.
Sentiment, prosody, embedding generation, scene segmentation.
FFmpeg pipeline: keyframe extraction, scene-cut detection, full-video transcription, embedding generation.
Audio and video content indexed and searchable through
/api/v1/rag/search. Used by the comm worker for voicemail
recall and by the chat shell for inline media references.
End-to-end /api/v1/voice/chat: audio in → STT → LLM →
TTS → audio out. Single round-trip endpoint suitable for mobile
clients.
The science worker (8897) exposes one entry per data
source — catalog metadata, credentials, enabled flag. Admins toggle
sources; users see only the enabled ones. The custom
category is the plugin entry point — admin-added sources land here with
zero code changes.
oa_papers, space,
particle_physics, genomics,
neuroscience, medical, chemistry,
earth, climate, astronomy,
archaeology, legal, patents,
funder, industry, custom. Each
surfaces a read-only category-alias endpoint.
Five user tools (science_list_sources,
science_list_catalog, science_get_source,
science_request_activation,
science_list_pending) and six admin tools
(science_set_enabled, science_add_source,
science_remove_source,
science_set_credentials,
science_approve_request,
science_reject_request). Filtered by role.
NASA, ESA, JAXA, ISRO, Hubble, JWST, CERN, LIGO, GWOSC, SDSS, USGS Earthquakes, NOAA, IBM Quantum, Materials Project, Ensembl, ENCODE, GTEx, Allen Brain Atlas, OpenNeuro, GBIF, OBIS, Clinical Trials, WHO, OpenFDA, PubMed, IAEA, FAOStat, PaleoBio. Plus the legacy per-provider endpoints kept for backwards compatibility.
DNA / RNA / protein analysis, translation, alignment, BLAST search, variant calling.
Compound lookup, molecular docking, ADMET prediction, structure retrieval, AlphaFold integration.
Guide RNA design, off-target analysis, base editing, prime editing.
Sample tracking, experiment management, audit trails. GLP and FDA 21 CFR Part 11 compliance modes.
The ai-papers-at knowledge base mirrors the OBVSG OA
Monitor — 14 671 documents, doc IDs map to OBVSG record UUIDs.
Unsloth (CUDA, 2× LoRA speedup), Axolotl (YAML-driven), TRL (RLHF / DPO), DeepSpeed (multi-GPU), MLX (Apple Silicon), llama.cpp (GGUF training). xLSTM coming via the new daemon.
LoRA, QLoRA, SFT, DPO, RLHF, PPO, Full Fine-Tune, Distillation.
Visual node-based chains: data source → AI generator → trainer → evaluator. Templates for QA pipeline, code QA, alignment.
COCONUT (chain of continuous thought), Quiet-STaR (self-taught reasoner), pause tokens, hidden CoT, DeepSeek Dynamic Sparse Attention.
Multi-round federated training across worker nodes. Controller
broadcasts cluster://training/federated/{job}/round-N,
workers train locally, the controller aggregates and starts the next
round.
Model → EMM distillation. Source chunks are turned into Q+A pairs by an LLM, both sides embedded, and the pair is written as an outer-product association into matrix memory.
/api/v1/gpus reports utilisation across the cluster.
Multi-GPU jobs schedule against the live inventory; cluster currently
has one LLM-tier GPU (RTX 4070 Ti / 12 GB on .47) and one router-tier
GPU (RTX 2080 / 8 GB on .12).
Netatmo (weather, security), HomeKit, Matter. Device pairing and attribute read/write over the IoT worker's API.
OPC-UA (PLCs, SCADA, DCS), Modbus TCP/RTU, MQTT Sparkplug B. Standard industrial alarm management and time-series historian.
Recipe management, OEE (Overall Equipment Effectiveness) calculation, store-and-forward buffering for reliability.
Live tag values flow into matrix memory; an inference worker runs
anomaly detection and emits maintenance scores at
/api/v1/iot/predictive.
Hierarchical, peer-to-peer, ring, star, mesh, hybrid. Topology is mutable at runtime.
Swarm registers agent workers (/api/v1/agent-workers)
and picks the best one per task by health and load
(least-connections).
mcp_discovery.h finds MCP servers on the LAN and
registers them as tool providers. The swarm controller exposes them
through /api/v1/mcp/servers.
Agent invocation port 8886 speaks the UAP (Universal
Agent Protocol). One unified envelope: task / response / event /
error.
Set a goal on a swarm and let the topology + agents work it out. Logs trace every reasoning step.
Priority engine + goal generator + persistent goal DB. Goals can be submitted by users, sub-goals decomposed by reasoning.
Episodic (events), semantic (facts), procedural (skills). Each is a queryable corpus.
Logic engine, planner, verifier. Plans are verified before execution.
Self-modification module attempts to improve NOVA's own routines. Strict safety constraints + sandbox + kill-switch gate any change.
NOVA can dream — pull completed sessions, extract themes via an LLM, ingest them into matrix memory. Cadences: manual, hourly, nightly, continuous, on-idle. Two session sources: filesystem and in-memory.
/api/v1/cluster/updates/apply drains each node, installs
the new RPM, restarts, validates, then moves on. Auth via
X-Eldric-Cluster-Secret. Per-run status is persisted in the
cluster_update_runs SQLite table.
Local-destination snapshots of controller state, vector storage, matrix memory, tenant configs, license, edge plugins. Manifest with SHA-256 per blob. Restore is idempotent.
Walks a 4.x data tree (vector, memory, oamonitor, agent, comm, science) and replays it into 5.0 syscalls. Vector + memory + oamonitor are real converters (alpha116t); agent/comm/science are still stubbed.
Internal CA + Let's Encrypt ACME via certbot. Issuance,
renewal, deploy + reload. Master fans out via
pki_post_to_peer_() with cluster secret auth.
Append-only, hash-chained audit log. Coverage gap acknowledged in
alpha118a — admin handlers must call audit::append for
chain density; chain integrity is sound either way.
Browse catalogue, install with sha256 archive verification + manifest validation, uninstall, update. Edge-served because plugins extend the chat shell.
Opt-in OTLP-HTTP exporter for spans, counters, histograms. Low-cardinality span path normalisation so dynamic IDs don't blow up cardinality.
Outbound webhooks with HMAC-SHA256 request signing. Failed deliveries auto-disable after a threshold; admin re-enables via PATCH.
Each tenant has its own theme (colours, fonts, sidebar layout) plus
optional logo. Public GET, admin-gated PUT. custom_css is
HTML-sanitised server-side.
Admin (/admin) plus the new Knowledge Browser dashboard
(~1118 LOC vanilla JS) for KB management. Wired under the Cluster nav
group.
TLS termination (443 / 80), API-key authentication, rate limiting (global, per-IP, per-key, sliding window). Routes requests to one or more routers. Health-checks upstreams.
/chat serves a vanilla-JS single-page app — model
selector, streaming chat, conversation history, modals (settings / model
picker / tools / KB / share / theme), inline artifacts. Six modals, no
right panel, Frost theme default. Mobile + keyboard-shortcut polish
landed in alpha82+.
/login when API-key auth is required. 2FA TOTP flow
optional.
Plugin types: Tool (Python subprocess via JSON-RPC), Filter (inlet
pre-LLM, outlet post-LLM), Pipe (virtual model), Action / Widget
(client-side JS). Plugins live under
${ELDRIC_DATA_DIR}/edge/plugins/. Valves configurable per
plugin.
Conversations can be shared as read-only signed links
(/api/v1/conversations/{id}/share →
/api/v1/share/{token}). Share artifacts render in an
iframe.
Multiple edge servers can run as peers, syncing state every 5 s. Useful for horizontal scaling at the public boundary.
Public error messages never reveal internal LAN IPs, hostnames, ports, or admin paths. Generic "not available here" is the safe baseline (feedback 2026-05-12).
Served at /chat. The canonical client. Vanilla JS, no
bundler — load-bearing for 5.0; 6.0 plans a React + Vite rewrite.
Native SwiftUI app under gui/Eldric/. Nine backends with
full configuration UI. Native tool calling, RAG search, MCP, prompt
library, voice chat.
Streaming chat, KB browse, voice chat. Built and side-loaded via
xcodebuild. Ephemeral URLSession per streaming request to
dodge stale HTTP/2 pool connections.
/usr/bin/eldric (and the Linux RPM). Interactive REPL,
single-prompt mode, MCP toggle, model selector. 5.0 CLI rewire is in
progress.
WIP)Spec lives in EldricOS sections. Implementation gated on 5.0 client
wiring (project_5_0_client_wiring.md).
Every persisted artefact carries a tenant ID. Tenant guard enforces scope on every per-tenant path.
Viewer, Developer, Admin, SuperAdmin. The webchat renders only the affordances a role may use. Server enforces the role on every call.
Free, Standard, Professional, Enterprise, Custom. Ed25519 signature on the license file; SHA-512 payload hash; optional hardware binding via machine ID; grace period for hardware change. Hybrid validation — workers fall back to the local file when the controller is unreachable.
Each module checks license features at call time
(load-balancing, rag, embeddings,
agents, pki-management, webhooks,
file-storage, themes, etc.). The chat shell
hides features the tenant can't use.
GLP and FDA 21 CFR Part 11 modes on the science worker. SOC 2 audit-friendly audit ledger. Telecom CDR export. HIPAA-aware medical templates.
/dashboard on every daemon. Read-only cluster view on
the controller plus deep dashboards for swarm, KB, jobs, chains,
backends, NFS, vector, memory.
scripts/aios-smoke.sh — 27 end-to-end checks. First
signal when 5.0 regresses (all green at alpha82).
scripts/docker-build-all.sh for RHEL 9 / Fedora 40 /
Ubuntu 24.04 / Debian 12 RPMs and .debs.
scripts/deploy-rpm-fanout.sh stages on .180
then fans to GPU nodes (avoids the Mac→remote scp truncation issue).
/loop and /schedule slash commands inside
the webchat to repeat tasks. Cron-style remote agents
(routines) handle infra checks.
GUI for license creation and management against the Eldric license-validation service. Three-factor admin auth.
WIP)Planned dev toolkit — agent debugger, prompt playground, tool tester, performance profiler, integration builder, test generator.
WIP)Port 8884. Hosts NXAI / xLSTM workloads for policy
execution, robotics policy, vision encoding, and associative retrieval.
TECH spec in flight 2026-05-14
(PROMPT-MAIN-tech-xlstmd-coordination.md). License feature
names deferred to xlstmd section 5. CUDA target is cu118
because mamba_ssm==2.1.0 +
causal_conv1d==1.3.0.post1 pin the toolchain.
~/Desktop/EldricOS/sections/ (113 section specs) plus the
live 5.0 code (cpp/src/modules/*/,
cpp/src/distributed/*/). EldricOS section files are
authoritative where they disagree with CLAUDE.md or this page.MAIN-docs-orchestration.md.