System overview

How the pieces fit: a registry that stores, a runtime that executes, an aggregator that normalizes, and thin clients over one API.

The shape of it

Norien is a single REST API with three responsibilities behind it — the registry, the aggregator, and (locally) the runtime. Every client is thin.

  CLI        TypeScript SDK      Python SDK        Web app
   │              │                 │                │
   └──────────────┴────────┬────────┴────────────────┘
                           │  one public REST API
                 ┌─────────▼──────────┐
                 │   Norien registry  │  (Fastify + Postgres)
                 │  ┌──────────────┐  │
                 │  │  Registry    │  │  agents, tools, versions
                 │  ├──────────────┤  │
                 │  │  Aggregator  │──┼──► market data · price feed
                 │  │  (/api/*)    │  │    protocol data · explorer
                 │  └──────────────┘  │    repository data · chain node
                 └────────────────────┘
                           ▲
                           │ reads manifests (never executes)
                 ┌─────────┴──────────┐
                 │  Local runtime     │  runs agents on your machine
                 │  supervisor        │  tools · health · restarts
                 └────────────────────┘

Request flow

A client calls the API. Registry endpoints serve Norien's own records straight from Postgres. Data endpoints (/api/*) go through the aggregator, which fans out to the external providers concurrently, caches each response, and merges them into one normalized envelope with sources and degraded attached. A provider outage degrades a response; it never fails the request.

Agent lifecycle

  • Publish — an author's manifest is validated and stored as an immutable version in the registry.
  • Install — a consumer resolves the agent and its declared tools; code is fetched and written locally.
  • Run — the local supervisor launches it, injects tools and secrets, probes health, and restarts crashes.
  • Observe — status and health stream back; logs follow with norien logs -f.

Tool resolution

At install time each tool slug in the manifest is resolved against the registry to a specific version and written alongside the agent. At run time the supervisor wires those tools to the agent over the one stdin/stdout protocol, so adding a tool never changes the runtime.

Deployment

The web is three independently deployed apps sharing one design system — norien.live (marketing), app.norien.live (product), and docs.norien.live (this site) — all reading the same api.norien.live. The registry runs anywhere Node runs; with DATABASE_URL unset it uses an embedded Postgres.

NoteThe runtime never runs on shared infrastructure — see Why Norien for the security reasoning.