API endpoints

Every endpoint, by section.


Eldric AIOS 5.0 — Complete API Reference

Version: 5.0.51 Last regenerated: 2026-05-14 Maintained by: DOCS lane — see MAIN-docs-orchestration.md for the update protocol. Scope: Every HTTP endpoint served by the Eldric AIOS 5.0 stack — controller, edge, router, worker, data, agent, media, comm, science, training, inferenced, IoT, NOVA, swarm. Public Edge surface is highlighted in api-public.md.


Table of Contents

  1. Surface model
  2. Authentication
  3. Public OpenAI-compatible
  4. Chat & Conversation
  5. Identity & Account
  6. Inference & Models
  7. Routing
  8. Data — Storage, Vector, RAG
  9. Data — Matrix Memory
  10. Data — NFS, Databases, Connectors
  11. Agent Worker
  12. Media Worker
  13. Communication Worker
  14. Science Worker
  15. Training Worker
  16. Native Inference (inferenced)
  17. IoT Worker
  18. Swarm
  19. NOVA
  20. System & Cluster
  21. Cluster Operations
  22. PKI & Security
  23. Observability
  24. Marketplace & Plugins
  25. Theming & Branding
  26. License
  27. Structured-ML (xLSTM)
  28. 5.0 GA endpoints

Surface model

Two tiers exist. Every endpoint below is labelled with one:

Tier Reachability Default auth
Public nginx → Edge module → kernel X-API-Key + tenant capability token; some endpoints anonymous
LAN-only inter-node only on the cluster's private network X-Eldric-Cluster-Secret (constant-time, lowercase fallback for HTTP/2)

Authentication

Header Purpose
X-API-Key Tenant API key (Edge & most workers)
X-Eldric-Tenant-Id Tenant scope hint (Edge proxy passes through)
X-Eldric-Cluster-Secret Inter-node mutual auth (rolling upgrade, PKI, backup, replication, federation, marketplace)
X-Eldric-Source EIS/ENS device-of-origin identifier
X-Eldric-Signature: sha256=<hmac> HMAC-SHA256 over the raw body for outbound webhooks
Authorization: Bearer <jwt> Short-lived capability token issued at login

HTTP/2 lowercases all header names — every handler must look up both X-Foo and x-foo.

Tenant guard: kernel::tenant_guard::deny_if_cross_tenant(auth_tid, path, res) is invoked on data/storage/vector/memory/agent/comm/swarms/tenants prefixes. Cross-tenant attempts return 403.


1. Public OpenAI-compatible (Edge)

OpenAI drop-in surface. Proxied Edge → Router → Worker (or Cloud Worker / Native inference) with SSE streaming preserved end-to-end.

Method Path Purpose
GET /v1/models List models from every reachable worker + cloud backend; aggregated cluster view
POST /v1/chat/completions OpenAI chat (streaming via stream:true); honours tools, tool_choice, response_format
POST /v1/completions Legacy completions for older OpenAI SDKs
POST /v1/embeddings Embedding generation; routes to embedding provider on the chosen worker
GET /v1/models/{id} Detail (template, system prompt, parameters)
POST /api/v1/models/show Same detail by request body for clients that can't URL-encode model IDs

2. Chat & Conversation (Edge)

Per-user conversation persistence and the webchat shell at /chat.

Method Path Purpose
GET /chat Webchat single-page app
GET /login Login page (when API-key auth required)
GET /api/v1/conversations List my conversations
POST /api/v1/conversations Create conversation
GET /api/v1/conversations/{id} Get conversation with messages
PATCH /api/v1/conversations/{id} Update title / pinning / metadata
DELETE /api/v1/conversations/{id} Delete conversation
POST /api/v1/conversations/{id}/messages Append message
GET /api/v1/conversations/{id}/messages Page through messages
POST /api/v1/conversations/{id}/branch Branch off the conversation at a given message
POST /api/v1/conversations/{id}/share Create a signed share-link
GET /api/v1/share/{token} Resolve signed share-link → read-only transcript
GET /api/v1/conversations/{id}/artifacts Inline artifact store entries
GET /api/v1/conversations/{id}/artifacts/{aid} Fetch single artifact
GET /api/v1/me/settings My settings
PUT /api/v1/me/settings Update my settings
GET /api/v1/me/preferences Webchat preferences (theme, font, sidebar)
PUT /api/v1/me/preferences Update preferences
GET /api/v1/me/quotas My quotas / usage
GET /api/v1/me/tools Tool permissions for my role (picker)
GET /api/v1/me/models Models I'm allowed to call

3. Identity & Account

EIS (Eldric Identity System) + ENS (Eldric Namespace System).

Method Path Purpose
GET /api/v1/identity/domains 32 EIS domains
GET /api/v1/identity/devices 411 device codes
GET /api/v1/identity/lookup/{eis} Resolve EIS string → registered device
POST /api/v1/identity/register Register a device under my tenant
DELETE /api/v1/identity/{eis} Unregister a device
GET /api/v1/identity/me My EIS namespace map
GET /api/v1/ens/resolve ENS hostname → tenant + role
POST /api/v1/auth/login Email + password → JWT
POST /api/v1/auth/refresh Refresh JWT
POST /api/v1/auth/logout Invalidate session
POST /api/v1/auth/2fa/enroll Enroll TOTP
POST /api/v1/auth/2fa/verify Verify TOTP code

4. Inference & Models

Worker, Cloud Worker, Native inference. The Edge OpenAI surface above sits on top of these.

Worker

Method Path Purpose
GET /health Liveness
GET /api/v1/health Detailed health (backends, GPU, latency)
GET /api/v1/models Local models on this worker
POST /v1/chat/completions Direct worker chat
POST /v1/embeddings Direct worker embedding
POST /api/v1/inference/run Forward request to currently active backend
GET /api/v1/inference/backends Configured backends (Ollama/vLLM/TGI/Triton/etc)
POST /api/v1/inference/backends Add a backend
DELETE /api/v1/inference/backends/{id} Remove a backend
POST /api/v1/inference/backends/{id}/switch Set active backend
GET /api/v1/inference/local-backends/public Cluster-wide aggregation feed
POST /api/v1/swarm/task Receive a delegated swarm task
POST /api/v1/peers/register Register a pipeline peer

Cloud Worker

Method Path Purpose
GET /health Liveness
GET /dashboard Cloud backend admin dashboard
GET /v1/models Aggregated models across cloud backends
POST /v1/chat/completions Routed to OpenAI/Anthropic/xAI/Together/Groq/DeepSeek/Mistral/Cohere
POST /v1/embeddings Embedding via cloud provider
GET /api/v1/cloud/backends List configured cloud backends
POST /api/v1/cloud/backends Add cloud backend (provider, API key)
PUT /api/v1/cloud/backends/{id} Update cloud backend
DELETE /api/v1/cloud/backends/{id} Remove cloud backend
GET /api/v1/cloud/backends/public Public aggregation feed for the controller

5. Routing

Router — load balancing, theme detection, intent classification, ensemble, session stickiness.

Method Path Purpose
GET /health Liveness
GET /metrics Latency/load metrics per worker
GET /v1/models Models reachable through this router
POST /v1/chat/completions Route an OpenAI request
GET /api/v1/workers Workers known to this router
POST /api/v1/routing/classify Classify request intent → worker class
GET /api/v1/routing/rules List routing rules
POST /api/v1/routing/rules Add rule
DELETE /api/v1/routing/rules/{id} Remove rule
GET /api/v1/themes Available themes
POST /api/v1/ensemble Fan-out to multiple models + synthesise
POST /api/v1/health/check Manual probe on a worker
POST /api/v1/ai/configure Set AI control mode (none/advisory/autonomous)
GET /api/v1/sessions Active sticky sessions
DELETE /api/v1/sessions/{sid} Drop a sticky session

6. Data — Storage, Vector, RAG

Data worker. Multi-tenant file storage and vector storage for RAG.

Storage

Method Path Purpose
GET /api/v1/data/sources List sources
POST /api/v1/data/sources Register source
GET /api/v1/data/storage/{tenant}/{path:.*} Read file
PUT /api/v1/data/storage/{tenant}/{path:.*} Write file
DELETE /api/v1/data/storage/{tenant}/{path:.*} Delete file
GET /api/v1/data/storage/{tenant} List files
GET /api/v1/data/tenants List tenants
POST /api/v1/data/tenants Create tenant
GET /api/v1/data/tenants/{id}/quota Quota status
PUT /api/v1/data/tenants/{id}/quota Update quota
POST /api/v1/upload/init Reserve chunked upload
POST /api/v1/upload/chunk Ship one chunk
POST /api/v1/upload/finalize Assemble + commit
GET /api/v1/upload/{id}/progress Resume offset
DELETE /api/v1/upload/{id} Cancel + free chunks

Vector / RAG

Method Path Purpose
GET /api/v1/vector/health Vector subsystem health
GET /api/v1/vector/metrics Storage metrics
GET /api/v1/vector/config Read config
PUT /api/v1/vector/config Update config
GET /api/v1/vector/namespaces/{tenant} List namespaces
POST /api/v1/vector/namespaces/{tenant} Create namespace
GET /api/v1/vector/namespaces/{tenant}/{ns} Get namespace
DELETE /api/v1/vector/namespaces/{tenant}/{ns} Delete namespace
POST /api/v1/vector/documents/{tenant}/{ns} Add documents
GET /api/v1/vector/documents/{tenant}/{ns}/{doc} Get document
PUT /api/v1/vector/documents/{tenant}/{ns}/{doc} Replace document (re-embed; KB editor)
DELETE /api/v1/vector/documents/{tenant}/{ns}/{doc} Delete document
POST /api/v1/vector/search Semantic search
POST /api/v1/vector/search/peer Peer-fan-out search
POST /api/v1/vector/hybrid-search BM25 + vector
POST /api/v1/vector/embed Generate embeddings
POST /api/v1/vector/ingest Auto-chunk text + ingest
GET /api/v1/vector/sources/{tenant}/{ns} List documents by source
DELETE /api/v1/vector/sources/{tenant}/{ns} Delete documents by source

7. Data — Matrix Memory

Hierarchical associative matrix memory in Eldric's compact .emm format.

Method Path Purpose
GET /api/v1/memory/health Subsystem health
GET /api/v1/memory/metrics Block counts, saturation, expansion events
POST /api/v1/memory/store Store key+value association into matrix + vector backup
POST /api/v1/memory/recall Matrix recall, optionally refined by vector retrieval
GET /api/v1/memory/matrices List matrices (domain → project → run)
POST /api/v1/memory/checkpoint Force checkpoint
POST /api/v1/memory/verify Verify block CRC + SHA-256
POST /api/v1/memory/forget Delete one memory entry

8. Data — NFS, Databases, Connectors

Method Path Purpose
GET /api/v1/nfs/config NFS server config
PUT /api/v1/nfs/config Update config
GET /api/v1/nfs/exports List exports
POST /api/v1/nfs/exports Add export
DELETE /api/v1/nfs/exports/{id} Remove export
GET /api/v1/nfs/mounts Remote mounts
POST /api/v1/nfs/mounts Mount remote data worker
GET /api/v1/nfs/mounts/{id} Mount detail
DELETE /api/v1/nfs/mounts/{id} Unmount
GET /api/v1/nfs/ganesha-conf Preview generated ganesha.conf
POST /api/v1/nfs/apply Apply config + reload ganesha
GET /api/v1/nfs/status Daemon status
GET /api/v1/data/databases Registered DBs (SQLite, PostgreSQL, MySQL, DB2)
POST /api/v1/data/databases Register DB
POST /api/v1/data/databases/{id}/query Run query
POST /api/v1/data/databases/{id}/execute Run statement
POST /api/v1/data/databases/{id}/schema Inspect schema
GET /api/v1/replication/config Replication policy
PUT /api/v1/replication/config Update policy
GET /api/v1/replication/status Streams + last-sync

9. Agent Worker

Agent worker — agentic RAG, multi-agent, workflows, training-data generation.

Method Path Purpose
GET /health Liveness
GET /dashboard Web dashboard
GET /api/v1/agent/sessions List sessions
POST /api/v1/agent/sessions Create session
GET /api/v1/agent/sessions/{id} Session detail + history
DELETE /api/v1/agent/sessions/{id} Delete session
POST /api/v1/agent/chat Agentic RAG chat (ReAct loop)
POST /api/v1/agent/multi Multi-agent run (researcher/coder/validator/planner)
POST /api/v1/agent/decompose Decompose query into sub-questions
GET /api/v1/agent/knowledge-bases List KBs
POST /api/v1/agent/knowledge-bases Create KB
GET /api/v1/agent/knowledge-bases/{id} KB detail
DELETE /api/v1/agent/knowledge-bases/{id} Delete KB
POST /api/v1/agent/knowledge-bases/{id}/search RAG search within a KB
POST /api/v1/agent/generate-training Generate training data from a KB
GET /api/v1/agent/workflows List workflows
POST /api/v1/agent/workflows Register workflow
POST /api/v1/agent/workflows/{id}/run Run workflow
GET /api/v1/agent/stats Usage stats
GET /api/v1/tenants List tenants (admin)
POST /api/v1/tenants Create tenant
POST /api/v1/swarm/task Inbound task from Swarm
POST /api/v1/swarm/workflow Inbound workflow from Swarm
GET /api/v1/swarm/status Status reporting to Swarm
GET /api/v1/swarm/workflows List registered swarm workflows
POST /api/v1/swarm/workflows Register swarm workflow
DELETE /api/v1/swarm/workflows/{id} Remove swarm workflow
POST /api/v1/swarm/tools Execute tools directly

10. Media Worker

Media worker — STT, TTS, audio/video analysis, voice chat, multimedia RAG.

Method Path Purpose
GET /health Liveness
GET /dashboard Web dashboard
GET /api/v1/media/info Worker capabilities
POST /api/v1/stt/transcribe Transcribe audio file/URL
POST /api/v1/stt/stream Streaming transcription (SSE)
GET /api/v1/stt/models List STT models
POST /api/v1/tts/synthesize Generate speech
POST /api/v1/tts/stream Stream audio (SSE)
GET /api/v1/tts/voices List TTS voices
POST /api/v1/audio/analyze Sentiment, diarization, prosody
POST /api/v1/audio/embed Audio embedding
POST /api/v1/video/transcribe Extract audio + transcribe
POST /api/v1/video/analyze Scene detection + frame stats
POST /api/v1/video/extract-frames Extract keyframes
POST /api/v1/rag/ingest-audio Index audio content
POST /api/v1/rag/ingest-video Index video content
POST /api/v1/rag/search Search across multimedia RAG
POST /api/v1/voice/chat Voice-in → STT → LLM → TTS → voice-out

11. Communication Worker

Comm worker. Email, SMS, WhatsApp, Signal, Teams, XMPP, VoIP.

Method Path Purpose
GET /health Liveness
GET /dashboard Web dashboard
GET /api/v1/comm/accounts List accounts
POST /api/v1/comm/accounts Add account
GET /api/v1/comm/accounts/{id} Get account
PUT /api/v1/comm/accounts/{id} Update account
DELETE /api/v1/comm/accounts/{id} Remove account
POST /api/v1/comm/accounts/{id}/test Test connection
POST /api/v1/comm/accounts/{id}/connect Connect/IDLE listener
GET /api/v1/comm/messages List messages
POST /api/v1/comm/messages Send message
GET /api/v1/comm/messages/{id} Get message
POST /api/v1/comm/messages/{id}/read Mark read
POST /api/v1/comm/messages/{id}/reply Reply
GET /api/v1/comm/conversations List conversations
GET /api/v1/comm/conversations/{id}/messages Conversation messages
POST /api/v1/comm/search Semantic search
GET /api/v1/comm/ai/queue Pending AI replies
POST /api/v1/comm/ai/queue/{id}/approve Approve AI reply
POST /api/v1/comm/ai/queue/{id}/reject Reject AI reply
POST /api/v1/comm/webhooks/whatsapp WhatsApp inbound webhook
POST /api/v1/comm/webhooks/twilio Twilio SMS webhook
POST /api/v1/comm/webhooks/teams Teams webhook
POST /api/v1/comm/calls/start Outbound voice call
POST /api/v1/comm/calls/answer Answer inbound call
POST /api/v1/comm/calls/hangup End call
POST /api/v1/comm/calls/hold Hold/resume
POST /api/v1/comm/calls/transfer Transfer
POST /api/v1/comm/calls/dtmf Send DTMF
GET /api/v1/comm/calls List active calls
GET /api/v1/comm/calls/{id} Call status
GET /api/v1/comm/voicemails List voicemails
GET /api/v1/comm/voicemails/{id} Voicemail detail
DELETE /api/v1/comm/voicemails/{id} Delete voicemail
POST /api/v1/comm/voicemails/{id}/read Mark voicemail read
POST /api/v1/comm/send Kernel-level fallback send (best-effort)

12. Science Worker

Science worker. 5.0 architecture with the Science Source Registry — unified registry + dispatcher + 16-category aliases + per-provider compat endpoints.

Registry

Method Path Purpose
GET /api/v1/science/sources Enabled sources (optionally filter by category)
GET /api/v1/science/sources/{id} One source detail
GET /api/v1/science/sources/categories 16-category taxonomy
POST /api/v1/science/sources/request Request admin enable a source
GET /api/v1/science/sources/my-requests My pending activation requests
GET /api/v1/science/tools Role-filtered tool schemas (5 user + 6 admin)
POST /api/v1/science/tools/execute Tool dispatch (science_list_sources, etc.)
POST /api/v1/science/sources Add source (admin)
PUT /api/v1/science/sources/{id} Update source (admin)
PUT /api/v1/science/sources/{id}/enabled Toggle (admin)
PUT /api/v1/science/sources/{id}/credentials Set API key (admin)
DELETE /api/v1/science/sources/{id} Remove source (admin)
GET /api/v1/science/sources/pending All pending requests (admin)
POST /api/v1/science/sources/approve/{id} Approve (admin)
POST /api/v1/science/sources/reject/{id} Reject with reason (admin)

Category aliases (read-only, enabled-only)

GET /api/v1/{category}/sources for each of the 16 categories: oa_papers, space, particle_physics, genomics, neuroscience, medical, chemistry, earth, climate, astronomy, archaeology, legal, patents, funder, industry, custom.

Per-provider compat endpoints

Still served while the registry-driven dispatcher fully takes over.

Category Path families
Space Agencies /api/v1/nasa/*, /api/v1/esa/*, /api/v1/roscosmos/*, /api/v1/cnsa/*, /api/v1/jaxa/*, /api/v1/isro/*
Telescopes /api/v1/hubble/*, /api/v1/jwst/*, /api/v1/spitzer/*, /api/v1/chandra/*
Particle Physics /api/v1/cern/*, /api/v1/desy/*, /api/v1/fermilab/*, /api/v1/hepdata/*, /api/v1/inspire/*, /api/v1/pdg/*
Gravitational Waves /api/v1/ligo/*, /api/v1/gwosc/*
Astronomy /api/v1/eso/*, /api/v1/sdss/*, /api/v1/alma/*, /api/v1/panstarrs/*
Earth Sciences /api/v1/earthquakes, /api/v1/volcanoes/*, /api/v1/noaa/*, /api/v1/seismic/*
Quantum /api/v1/quantum/*, /api/v1/arxiv/quantum
Materials /api/v1/materials/*, /api/v1/cod/*, /api/v1/nist/*
Genomics /api/v1/ensembl/*, /api/v1/encode/*, /api/v1/gtex/*, /api/v1/hmdb/*
Neuroscience /api/v1/allen-brain/*, /api/v1/openneuro/*, /api/v1/neuromorpho/*
Climate /api/v1/gbif/*, /api/v1/obis/*, /api/v1/air-quality, /api/v1/ice-cores, /api/v1/glaciers/*
Medical /api/v1/clinical-trials, /api/v1/who/*, /api/v1/gwas/*, /api/v1/openfda/*, /api/v1/pubmed/*
Nuclear/Fusion /api/v1/iaea/*, /api/v1/iter/*, /api/v1/fusion/*
Agriculture /api/v1/faostat/*, /api/v1/usda-plants, /api/v1/food/*
Archaeology /api/v1/paleobio/*, /api/v1/archaeology/*, /api/v1/open-context
Bioinformatics /api/v1/bio/analyze, /api/v1/bio/translate, /api/v1/bio/align, /api/v1/bio/blast, /api/v1/bio/variants
Pharmaceutical /api/v1/pharma/compound, /api/v1/pharma/dock, /api/v1/pharma/admet, /api/v1/pharma/structure
CRISPR /api/v1/crispr/design, /api/v1/crispr/offtargets, /api/v1/crispr/base-edit, /api/v1/crispr/prime-edit
LIMS /api/v1/lims/samples, /api/v1/lims/experiments, /api/v1/lims/audit/*

13. Training Worker

Training worker. LoRA/QLoRA/SFT/DPO/RLHF/Distillation. Backends: Unsloth, Axolotl, TRL, DeepSpeed, MLX, llama.cpp, xLSTM.

Method Path Purpose
GET /health Liveness
GET /dashboard Web dashboard
GET /dashboard/jobs Jobs view
GET /dashboard/chains Chains view
GET /dashboard/backends Backends view
GET /api/v1/jobs List jobs
POST /api/v1/jobs Create job
GET /api/v1/jobs/{id} Job detail
POST /api/v1/jobs/{id}/cancel Cancel
POST /api/v1/jobs/{id}/pause Pause
POST /api/v1/jobs/{id}/resume Resume
GET /api/v1/jobs/{id}/logs Stream logs
GET /api/v1/jobs/{id}/metrics Loss / lr / step metrics
GET /api/v1/chains List training chains
POST /api/v1/chains Create chain
GET /api/v1/chains/{id} Chain detail
DELETE /api/v1/chains/{id} Delete chain
POST /api/v1/chains/{id}/run Run chain
GET /api/v1/chains/templates Chain templates
GET /api/v1/backends Available training backends
GET /api/v1/gpus GPU inventory + utilisation
POST /api/v1/training/federated/jobs Create federated learning job
GET /api/v1/training/federated/jobs List FL jobs
GET /api/v1/training/federated/jobs/{id} FL round status
POST /api/v1/distill/run Model→EMM distillation (admin)

14. Native Inference (inferenced)

Native inference. Direct GGUF / xLSTM model loading with embedded llama.cpp.

Method Path Purpose
GET /health Liveness
GET /dashboard Web dashboard
GET /v1/models Loaded + available models
POST /v1/chat/completions Native chat (SSE)
POST /v1/embeddings Native embedding
POST /api/v1/models/load Load model into VRAM
POST /api/v1/models/unload Unload model
POST /api/v1/models/pull Pull from data worker
POST /api/v1/models/convert Convert HF → GGUF
POST /api/v1/models/import Import HF model
GET /api/v1/models/cache Cache status
GET /api/v1/gpu GPU live stats
POST /api/v1/swarm/task Inbound swarm task
POST /api/v1/peers/register Register pipeline peer

15. IoT Worker

IoT worker. Smart-home (Netatmo, HomeKit, Matter) + industrial (OPC-UA, Modbus, MQTT Sparkplug B).

Method Path Purpose
GET /health Liveness
GET /dashboard Web dashboard
GET /api/v1/iot/devices List discovered devices
POST /api/v1/iot/devices Register device
GET /api/v1/iot/devices/{id} Device detail
DELETE /api/v1/iot/devices/{id} Unregister
POST /api/v1/iot/devices/{id}/read Read tag/attribute
POST /api/v1/iot/devices/{id}/write Write tag/attribute
GET /api/v1/iot/alarms Active alarms
POST /api/v1/iot/alarms/{id}/ack Acknowledge
GET /api/v1/iot/historian/{tag} Time-series history
GET /api/v1/iot/recipes Recipes (manufacturing)
POST /api/v1/iot/recipes Add recipe
GET /api/v1/iot/oee OEE per asset
GET /api/v1/iot/predictive Predictive-maintenance scores

16. Swarm

Swarm controller. Three ports: API, Agent invocation/UAP, Web edge.

Method Path Purpose
GET /api/v1/swarms List swarms
POST /api/v1/swarms Create swarm
GET /api/v1/swarms/{id} Swarm detail
DELETE /api/v1/swarms/{id} Delete swarm
POST /api/v1/swarms/{id}/goal Set a goal
GET /api/v1/swarms/{id}/agents Member agents
POST /api/v1/swarms/{id}/agents Add agent
DELETE /api/v1/swarms/{id}/agents/{aid} Remove agent
GET /api/v1/swarms/{id}/topology Topology (hierarchical / mesh / star / ring / p2p / hybrid)
PUT /api/v1/swarms/{id}/topology Update topology
GET /api/v1/swarms/{id}/logs Trace logs
GET /api/v1/mcp/servers MCP server registry
POST /api/v1/mcp/servers Register MCP server
GET /api/v1/agent-workers Linked agent workers
POST /api/v1/agent-workers Register agent worker
DELETE /api/v1/agent-workers/{id} Unregister
POST /api/v1/agent-workers/refresh Refresh health
POST /api/v1/agent-workers/chat Chat via auto-selected worker
POST /api/v1/agent-workers/{id}/chat Chat via specific worker
POST /api/v1/agents/invoke Invoke agent over UAP

17. NOVA (experimental)

NOVA daemon. Optional module — BUILD_NOVA=ON. Goals, episodic/semantic/procedural memory, reasoning, meta-learning, safety.

Method Path Purpose
GET /health Liveness
GET /dashboard Dashboard
GET /api/v1/nova/goals List goals
POST /api/v1/nova/goals Submit goal
GET /api/v1/nova/goals/{id} Goal detail
DELETE /api/v1/nova/goals/{id} Cancel goal
GET /api/v1/nova/memory/episodic Episodic memory
GET /api/v1/nova/memory/semantic Semantic memory
GET /api/v1/nova/memory/procedural Procedural memory
POST /api/v1/nova/reasoning/plan Generate plan
POST /api/v1/nova/reasoning/verify Verify plan
GET /api/v1/nova/safety/constraints Active safety constraints
POST /api/v1/nova/safety/kill Kill-switch
GET /api/v1/nova/meta/learner Meta-learner state

18. System & Cluster

Controller. Cluster orchestration, topology, peer registration, deployment.

Method Path Purpose
GET /health Liveness
GET /api/v1/health Detailed health
GET /api/v1/cluster/topology Full cluster topology
GET /api/v1/cluster/peers Known peer controllers
POST /api/v1/cluster/register Peer registers itself (every 30s, heartbeat-driven)
POST /api/v1/cluster/heartbeat Heartbeat
GET /api/v1/cluster/workers All workers cluster-wide
POST /api/v1/cluster/workers Deploy a worker via SSH
DELETE /api/v1/cluster/workers/{id} Decommission worker
GET /api/v1/cluster/routers Routers
GET /api/v1/cluster/discover mDNS / DNS-SD scan
GET /api/v1/models Aggregated model catalogue
GET /api/v1/workers Workers (controller view)
GET /api/v1/dashboard Controller dashboard
GET /api/v1/dashboard/swarm Swarm management dashboard

19. Cluster Operations

Rolling upgrade, migration, backup, distillation, plugin marketplace. Master-orchestrated; peers respond on every node.

Rolling upgrade

Method Path Purpose
GET /api/v1/cluster/updates/check Check available upgrade
POST /api/v1/cluster/updates/apply Apply cluster-wide
GET /api/v1/cluster/updates/status Live progress (persisted in cluster_update_runs)
POST /api/v1/system/upgrade Peer: download + sha256 verify + install
POST /api/v1/system/upgrade/drain Peer: drain in-flight requests
POST /api/v1/system/upgrade/checkpoint Peer: snapshot state
POST /api/v1/system/upgrade/rollback Peer: revert to checkpoint

Backup & DR

Method Path Purpose
GET /api/v1/backups List snapshots
POST /api/v1/backups Create snapshot
GET /api/v1/backups/{name} Manifest
POST /api/v1/backups/{name} Re-run
POST /api/v1/backups/{name}/verify Recompute SHA-256, report bad blobs
POST /api/v1/backups/{name}/restore Restore in place
DELETE /api/v1/backups/{name} Remove (blocked if a child depends)

20. PKI & Security

PKI. Internal CA + ACME (certbot) issuance + renewal + cluster fan-out. Audit ledger.

Method Path Purpose
GET /api/v1/pki/certificates List certificates
GET /api/v1/pki/certificates/expiring Expiring soon
POST /api/v1/pki/certificates/generate Mint self-signed
POST /api/v1/pki/certificates/{id}/deploy Push cert to nodes
POST /api/v1/pki/certificates/{id}/rotate Generate + deploy
DELETE /api/v1/pki/certificates/{id} Soft-delete
POST /api/v1/pki/acme/issue Request Let's Encrypt cert
POST /api/v1/pki/acme/renew/{cert_id} Renew via certbot
POST /api/v1/pki/peer/install Peer: install cert
POST /api/v1/pki/peer/reload Peer: reload server
GET /api/v1/audit/log Audit ledger
GET /api/v1/audit/log/{event_id} Event detail
POST /api/v1/audit/verify Verify chain
GET /api/v1/security/policy Active security policy
PUT /api/v1/security/policy Update policy
GET /api/v1/security/sandbox Sandbox status
GET /api/v1/security/tool-whitelist Tool whitelist
PUT /api/v1/security/tool-whitelist Update whitelist

21. Observability

Telemetry / OTLP, Dreams, Webhooks, mDNS discovery .

Method Path Purpose
GET /api/v1/telemetry/config Current OTLP config
PUT /api/v1/telemetry/config Update config
GET /api/v1/telemetry/stats Buffer depths, flush results
GET /api/v1/dreams/config Dream engine config
PUT /api/v1/dreams/config Update config (admin opt-in)
POST /api/v1/dreams/run Run one dream cycle
GET /api/v1/dreams/last-runs Recent dream reports
POST /api/v1/dreams/import-session Direct in-process import
GET /api/v1/webhooks/subscriptions List
POST /api/v1/webhooks/subscriptions Create
DELETE /api/v1/webhooks/subscriptions/{id} Remove
POST /api/v1/webhooks/subscriptions/{id}/test Test fire
GET /api/v1/webhooks/deliveries Audit log
GET /metrics Prometheus-compatible metrics

22. Marketplace & Plugins

Plugin marketplace on the edge module; plugin host serves Tool/Filter/Pipe/Action/Widget plugin types.

Method Path Purpose
GET /api/v1/marketplace/catalog Browse catalogue
GET /api/v1/marketplace/installed Installed plugins
POST /api/v1/marketplace/install Download + sha256 verify + extract + validate manifest
POST /api/v1/marketplace/uninstall Remove
POST /api/v1/marketplace/update Pull newer version
GET /api/v1/plugins List loaded plugins
POST /api/v1/plugins/{id}/enable Enable plugin
POST /api/v1/plugins/{id}/disable Disable plugin
GET /api/v1/plugins/{id}/valves Read plugin configuration
PUT /api/v1/plugins/{id}/valves Update plugin configuration

23. Theming & Branding

Per-tenant theme + branding. Public read, admin-gated writes.

Method Path Access
GET /api/v1/tenants/{tid}/theme Public read (chat shell consumes)
PUT /api/v1/tenants/{tid}/theme Admin + themes license
POST /api/v1/tenants/{tid}/branding/logo Admin + Pro+
GET /api/v1/tenants/{tid}/branding/logo Public read

24. License

Controller-side license endpoints plus the external Eldric license-validation service.

Controller side

Method Path Purpose
GET /api/v1/license Current license status
POST /api/v1/license/activate Activate from local file
POST /api/v1/license/validate Verify signature + expiration (optional server for online check)

License server (admin)

Method Path Purpose
GET /api/v1/licenses List all licenses
POST /api/v1/licenses Create license
GET /api/v1/licenses/{id} License detail
GET /api/v1/licenses/{id}/download Signed file download
POST /api/v1/licenses/{id}/revoke Revoke

Admin auth requires three factors: X-API-Key + X-Admin-Email + X-Admin-Password.


25. Structured-ML (xLSTM workloads)

Eldric serves four xLSTM structured-ML workload classes natively — policy execution, time-series forecasting, vision-language encoding, and associative retrieval — at /api/v1/xlstm/policy/*, /api/v1/xlstm/forecast/*, /api/v1/xlstm/encode/*, and /api/v1/xlstm/retrieve/*.


26. 5.0 GA endpoints

Endpoints shipped in the run-up to 5.0 GA: chat feedback, the analyse → preview → commit upload flow, per-namespace vector config and bulk operations, classification with per-tenant taxonomy, the hash-chained audit read surface, trust-key management, and HuggingFace → GGUF conversion.

Retention loop · 1 endpoint

Chat feedback.

POST /api/v1/chat/feedback Standard+

Accept or reject an assistant turn #

Customer's thumbs-up on a chat response triggers auto-ingest of cited sources into the appropriate knowledge base, feeds the dream cycle, and seeds the next ENRN training corpus. Thumbs-down marks the answer low-quality.

curl -X POST https://your-cluster.example.com/api/v1/chat/feedback \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "sess-abc123",
    "message_id": "msg-456",
    "verdict": "accept"
  }'

Intelligent upload · 4 endpoints

Analyse → preview → commit → poll.

The four-step flow customers see in the chat shell when they drag a file in. The platform suggests; the user confirms; the ingest job runs.

POST /api/v1/upload/analyze Standard+

Inspect a file, return suggested params #

Reads the first few KB, detects content type / language / structure, returns suggested chunking + enrichment defaults. No data persisted yet.

curl -X POST https://your-cluster.example.com/api/v1/upload/analyze \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@./paper.pdf"
# → {file_id, content_type, language, estimated_chunks,
#    suggested_strategy, suggested_chunk_size, suggested_overlap,
#    suggested_enrichment, extracted_keywords, topic_tags}
POST /api/v1/upload/preview-chunks Standard+

Preview what a strategy would produce #

Returns the first 5–10 chunks the chosen strategy would produce, without persisting. Lets the operator adjust before commit.

curl -X POST https://your-cluster.example.com/api/v1/upload/preview-chunks \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_id":"...","strategy":"semantic","chunk_size":512,"overlap":50}'
POST /api/v1/upload/commit Standard+

Fire the ingestion job #

Persists the file, runs chunking + embedding + enrichment per the chosen params, returns a job id for polling.

curl -X POST https://your-cluster.example.com/api/v1/upload/commit \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": "...",
    "tenant_id": "default",
    "namespace_id": "ai-papers",
    "strategy": "semantic",
    "chunk_size": 512,
    "overlap": 50,
    "enrichment": {"authors": true, "doi": true, "topic_tags": true}
  }'
# → 202 {job_id, estimated_duration_seconds}
GET /api/v1/upload/jobs/{id} Standard+

Poll an ingest job #

curl https://your-cluster.example.com/api/v1/upload/jobs/<job_id> \
  -H "Authorization: Bearer $API_KEY"
# → {status, chunks_done, chunks_total, embedding_done, error}

Knowledge-base administration · 6 endpoints

Per-namespace config + bulk operations.

POST /api/v1/vector/namespaces/{tid}/{ns}/config Standard+ admin

Set chunking strategy for a knowledge base #

Uploads into this namespace skip the suggestion dialog (or pre-fill it with these values).

curl -X POST https://your-cluster.example.com/api/v1/vector/namespaces/<tenant>/<ns>/config \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"strategy":"semantic","chunk_size":512,"chunk_overlap":50}'
POST /api/v1/vector/namespaces/{tid}/{ns}/bulk-delete Standard+ admin

Delete multiple documents #

Returns counts of deleted and per-document failure reasons.

curl -X POST https://your-cluster.example.com/api/v1/vector/namespaces/<tenant>/<ns>/bulk-delete \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"doc_ids":["doc-1","doc-2","doc-3"]}'
POST /api/v1/vector/namespaces/{tid}/{ns}/reindex Standard+ admin

Re-embed every document #

Used after changing the embedding model or chunking strategy. Background job; poll with the returned job_id.

curl -X POST https://your-cluster.example.com/api/v1/vector/namespaces/<tenant>/<ns>/reindex \
  -H "Authorization: Bearer $API_KEY"
# → 202 {job_id, documents}
GET /api/v1/vector/ingest-queue Standard+ admin

View pending ingest jobs #

curl https://your-cluster.example.com/api/v1/vector/ingest-queue \
  -H "Authorization: Bearer $API_KEY"
# → {pending: [{job_id, tenant_id, namespace_id, status}, ...]}
GET /api/v1/vector/stale-chunks Standard+ admin

Identify chunks needing re-embed #

Used by the model-upgrade detector. Returns the count and per-namespace breakdown.

curl https://your-cluster.example.com/api/v1/vector/stale-chunks \
  -H "Authorization: Bearer $API_KEY"
# → {count: 12345, by_namespace: {...}}
POST /api/v1/vector/chunk-preview Standard+ admin

Preview chunks for an already-stored document #

curl -X POST https://your-cluster.example.com/api/v1/vector/chunk-preview \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tenant_id":"default","namespace_id":"ai-papers","doc_id":"doc-123"}'

Router · 4 endpoints

Classification + per-tenant taxonomy.

POST /api/v1/router/classify Standard+

Classify a query into an intent class #

Three-tier resolution: base classifier → tenant overlay → LLM fallback when confidence is below threshold. Returns the assigned class with confidence and the source of the decision.

curl -X POST https://your-cluster.example.com/api/v1/router/classify \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"summarise the indemnification clause in contract X"}'

# → {
#     "class": "ContractReview",
#     "confidence": 0.91,
#     "source": "overlay",
#     "fallback_chain": ["base", "overlay"]
#   }
POST /api/v1/router/custom-classes Pro+ admin

UPSERT a custom intent class #

Add your own intent classes ("PatientTriage", "ContractReview", "AnomalyTrend") alongside the 128 built-ins. Trains an overlay classifier from the labelled examples.

curl -X POST https://your-cluster.example.com/api/v1/router/custom-classes \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tenant_id": "law-firm-acme",
    "class_name": "ContractReview",
    "description": "queries about clause review, redlines, indemnification",
    "examples": ["summarise the indemnification clause in...", "what'\''s the term length on..."]
  }'
GET /api/v1/router/custom-classes Pro+

List a tenant's custom classes #

curl "https://your-cluster.example.com/api/v1/router/custom-classes?tenant_id=law-firm-acme" \
  -H "Authorization: Bearer $API_KEY"
DELETE /api/v1/router/custom-classes Pro+ admin

Remove a custom class #

curl -X DELETE "https://your-cluster.example.com/api/v1/router/custom-classes?tenant_id=law-firm-acme&class_name=ContractReview" \
  -H "Authorization: Bearer $API_KEY"

Audit ledger · 3 endpoints

Hash-chained read surface for compliance.

GET /api/v1/audit/events Standard+ admin

List audit events #

Hash-chained log of every AI-assisted decision and admin-side mutation. Tamper-evident: events cannot be retroactively edited.

curl "https://your-cluster.example.com/api/v1/audit/events?since=2026-05-01T00:00:00Z&tenant_id=hospital-cardiology" \
  -H "Authorization: Bearer $API_KEY"
GET /api/v1/audit/events/{id} Standard+ admin

Get one event with hash-chain context #

Returns the event detail including prev_hash and this_hash so compliance can verify the chain.

curl https://your-cluster.example.com/api/v1/audit/events/evt-abc123 \
  -H "Authorization: Bearer $API_KEY"
POST /api/v1/audit/export Pro+ admin

Export a signed JSON slice for auditors #

Returns a signed JSON document (Ed25519 over the events array) the customer hands to their compliance auditor.

curl -X POST https://your-cluster.example.com/api/v1/audit/export \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"since":"2026-01-01T00:00:00Z","until":"2026-12-31T23:59:59Z","tenant_id":"hospital-cardiology"}'

Bundle trust · 2 endpoints

Trust a .nexus signing key.

Adds (or revokes) a third-party Ed25519 public key to the trust list so signed bundles from that key can be imported.

POST /api/v1/bundle/trust Pro+ admin

Trust a bundle signing key #

curl -X POST https://your-cluster.example.com/api/v1/bundle/trust \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key_id":"acme-research","public_key":"<base64-ed25519>","label":"Acme research group"}'
DELETE /api/v1/bundle/trust/{key_id} Pro+ admin

Revoke trust #

curl -X DELETE https://your-cluster.example.com/api/v1/bundle/trust/acme-research \
  -H "Authorization: Bearer $API_KEY"

Models · 1 endpoint

Convert HuggingFace → GGUF.

POST /api/v1/models/convert Pro+ admin

Pull and convert a HuggingFace model #

Pulls a HuggingFace model into local storage and converts to GGUF for native inference or llama.cpp consumption. Long-running; returns a job id.

curl -X POST https://your-cluster.example.com/api/v1/models/convert \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hf_repo": "meta-llama/Llama-3.2-3B-Instruct",
    "quantization": "Q4_K_M"
  }'

Notes on accuracy

This reference tracks the live 5.0 platform endpoint surface, including the legacy 4.x daemon endpoints still served in 5.0.x for compatibility. Updated on every patch ship.

If you find a divergence between this page and the actual response of an endpoint on a current 5.0.x build, please tell us — email office@eldric.ai.