← All notes
Architecture

Why the supervisor is a separate process

The registry is a shared catalogue. Shared catalogues must not execute what they list.

Norien publishes agents and Norien runs agents, and it would be convenient for one process to do both. It does not.

The registry is a catalogue meant to be shared — eventually hosted, serving many people. An agent is arbitrary code written by someone else. A process that is both a shared service and an executor of untrusted code is a process where one bad agent affects everyone reading the catalogue.

The split

The registry validates, stores, resolves, and describes. It will happily tell you whether an agent could run — parsing the manifest, detecting the runtime, resolving every tool, checking which variables are set — without running anything.

The supervisor runs on your machine, owns process lifecycle, and is the only component that ever spawns anything. It is why the Runtime page in this app frequently shows "offline": it is genuinely a different process, and it not running is a normal state rather than a fault.

The boundary is also what makes remote execution a later addition rather than a rewrite. Pointing a client at a different supervisor is a configuration change, because the registry never assumed it was the one doing the work.