Cyrnel is a single HTTP server that sits between AI applications (clients) and
the services those applications want to act on. Clients submit code, cyrnel runs
it inside a sandboxed environment, and tool invocations made from that code
are translated by adapter modules into calls to the real services.
Core Components
The cyrnel server is composed of three cooperating services.
Processes
Owns process lifecycle, responsible for creating processes, scheduling and
terminating their execution, tracking state, and capturing outputs.
See Processes for the full process model.
Services
Owns the service registry, responsible for installing, updating, and
deleting services, retrieving service and tool data, and managing
configuration and encrypted secrets.
See Services and Tools for the full
services model.
Modules
Owns the module registry, responsible for installing, updating, and
deleting modules, Loading built-in and any custom modules and dispatching
commands to the different module types.
See Modules for the full modules model.
The different types of modules play different roles in cyrnel;
- Adapter modules: Generate services and translate tool invocations into
the right call to the right end service (HTTP, RPC, whatever the service
speaks), and hold the per-service config and secret snapshots needed to do so.
- Environment modules execute submitted code and expose generated
bindings so that code can discover services, fetch tool metadata, and invoke
tools.
See Adapter Modules and
Environment Modules for the full models.
This model keeps the running surface small and deterministic: a single source
of truth for “which environment runs new code”, plus a known set of adapters
for outbound calls.
Process Lifecycle
From the client’s perspective, process execution is asynchronous. The client
creates a process and either gets a pid back immediately, or, with
block: true, waits until the process reaches idle. Outputs are retrieved
by pid from the /processes/:pid/{output,stdout,stderr} routes once the
process is idle.
Last modified on June 24, 2026