Skip to content

CoeOS on this engine

In one sentence: CoeOS is the AI operating system on top of OdyssAI — Nemo, the client, and the CoeOS box, the router. Your tools call one model id, CoeOS, on the box; the box classifies the request on a competence axis (Python, debugging, GDPR, writing, planning…) and sends it to the model proven best there — served by this engine, or by a cloud provider with your own keys. The inference itself happens here.

The router used to live inside the OdyssAI-X dashboard. CoeOS is now two public pieces: Nemo, the client (Odyssai-eu/coeos, a signed and notarized macOS app), and the router that runs as its own container — the box (Odyssai-eu/coeos-box, port 4600, the CoeOS console). Everything about configuring axes, keys, users and quotas is on the CoeOS box page (and in the repo’s doc/USER-GUIDE.md). This page covers only the engine side.

SurfaceUsed for
POST /v1/chat/completions, POST /v1/messagesthe relay itself (OpenAI and Anthropic wire formats; the box forwards the client’s format)
GET /v1/models with x_odyssai blockswhich models are ready, their capabilities (tools, vision, context) — the box only routes an axis to a model that is loaded
GET /.well-known/inference-engine.jsonthe capability contract the box mirrors to its own clients
enable_thinkingthe only thinking flag this engine reads. The box translates thinking/reasoning from cloud-style clients into it; sending thinking:false directly is ignored and a reasoning model spends its whole budget thinking
reasoning_content in deltasreasoning is split from the answer per model; the box passes both through

No key is required on a trusted LAN: the box’s built-in local provider (odyssai) is keyless by design.

  1. Make sure the models you want the box to route to are loaded here (a replica pool is the natural fit — see Multi-user serving).
  2. Give the CoeOS box the engine’s address:
Terminal window
curl -X PUT http://<coeos-host>:4600/admin/providers/odyssai \
-H 'content-type: application/json' \
-d '{"api_base":"http://<this-engine>:8000/v1"}'
  1. In the box’s TMB Settings, bind axes to the models this engine serves (registry entries reference the model by its engine alias as an endpoint model). An axis bound to a model that is not loaded here shows as unservable in the box’s Routing table until you load it.

Point your tools at the CoeOS box, not at this engine:

Terminal window
export OPENAI_BASE_URL=http://<coeos-host>:4600/v1
export OPENAI_API_KEY=ck_…
curl "$OPENAI_BASE_URL/chat/completions" -H "authorization: Bearer $OPENAI_API_KEY" \
-H 'content-type: application/json' \
-d '{"model":"CoeOS","messages":[{"role":"user","content":"Write a Python script that…"}]}'

The response headers say who answered: x-coeos-axis, x-coeos-model, x-coeos-provider. An agent that already knows the step’s skill can force it: -H 'x-coeos-axis: legal_rgpd'.

  • You want a specific model, not “the best per skill” — call this engine’s /v1 with the model alias.
  • You are benchmarking a model (routing would hide which one you measured).
  • Single-user, single-model setups: the box adds a hop for no gain.
  • Multi-user serving — replica pools, the usual backend for the box’s axes.
  • HTTP API — the full /v1 and /admin surface of this engine.
  • CoeOS box — axes, keys, users, guarantees.
  • Nemo — the client.