Cloud Registry¶
noether-cloud is the hosted, persistent stage registry that makes stages available across machines, teams, and agents.
This page describes the implemented architecture. For setup instructions, see the Remote Registry guide.
Architecture¶
noether CLI / AI agent
│ NOETHER_REGISTRY=https://...
▼
┌────────────────────────────────┐
│ noether-cloud/registry │ Axum HTTP server
│ │
│ POST /stages │ Submit + validate a stage
│ GET /stages │ List by lifecycle
│ GET /stages/:id │ Fetch by content hash
│ DELETE /stages/:id │ Delete a stage (requires API key)
│ POST /stages/:id/lifecycle │ Promote / deprecate
│ GET /stages/search │ Semantic search
│ POST /compositions/run │ Execute a composition graph
│ GET /health │ Stats + readiness
└────────────┬───────────────────┘
│
┌────────┴────────┐
│ Stage store │
│ (pluggable) │
│ │
│ JsonFileStore │ dev / single machine
│ PostgresStore │ production / multi-replica
└─────────────────┘
Validation pipeline¶
Every POST /stages runs a Noether composition before inserting the stage:
Input: Stage JSON
│
Parallel ─────────────────────────────────────────────────────
│ hash_check (f608988c) sig_check (136f78d7)
│ desc_check (4341c15f) examples_check (f7d94d6e)
└──────────────────────────────────────────────────────────────
│
merge_validation_checks (60c9fa10)
│
{ passed: bool, errors: [], warnings: [] }
All 5 stages are stdlib stages, executed inline in Rust — no subprocess, ~1 ms. The registry validates stages using Noether stages: genuine "eating its own dog food."
Backends¶
JsonFileStore (development)¶
Single-writer, single-machine. Good for local development and low-traffic private registries.
PostgresStore (production)¶
Uses tokio-postgres + deadpool-postgres (connection pool). Stages stored as JSONB — all fields are queryable. Schema applied automatically on first connect. Supports multiple registry replicas.
Self-hosting with Docker Compose¶
# noether-cloud/infra/docker-compose.yml
services:
postgres:
image: postgres:16
environment:
POSTGRES_DB: noether
POSTGRES_PASSWORD: noether
registry:
build: { context: ../.. , dockerfile: noether-cloud/infra/Dockerfile.local }
environment:
DATABASE_URL: postgres://postgres:noether@postgres/noether
ports: ["8080:8080"]
depends_on: [postgres]
Two-repo strategy¶
| Repo | Licence | Contains |
|---|---|---|
alpibrusl/noether | EUPL-1.2 | Core CLI, type system, stdlib, engine, docs |
(private) noether-cloud | Commercial | Registry server, scheduler, cloud infra |
The open-source noether binary can point at any registry via NOETHER_REGISTRY. The commercial registry is one option; teams can self-host the open-source registry server too.