openalice-orchestrator
Architecture rating
Strong substrate adoption: valid manifest, 0 circular deps, 0 dead imports, 0 unused defs/vars, 0 naming violations, one god-module the only structural blemish — uniform, convention-following Rust codebase.
Manifest 100/100 with clear summary, AGENTS.md present, 15 @feature annotations and features 100/100; dragged down by empty README excerpt, 19 missing docstrings, and roadmap at 30/100 (the weakest quality axis).
Clean Rust (avg complexity 3.79, max 13, 0 bare/broad excepts, 0 cycles) is a good base, but for a lifecycle orchestrator there is no visible evidence of SIGTERM graceful shutdown, container-op timeouts/retries, or idempotent restart handling — core reliability concerns unverified.
Exposes /api/v1/* but manifest declares only an http:// endpoint (no TLS) and health probe failed on 'no https endpoint'; zero visible signal on authn/authz, secret handling, SSRF guards on docker-compose/mesh control, or rate-limiting — graded conservatively for absence.
manifest_owns_tables=[] and no migrations/ present — orchestrator holds no persistent schema, so no RLS/FK/GDPR signal to credit; lifecycle/mesh state appears in-memory or undisclosed, graded conservatively for unknown durability.
Health probe is down (up:false, 'no https endpoint in manifest exposes', no matched_path/latency); no metrics, tracing, or structured-log signals surfaced and no usable /healthz probe target — observability effectively unverifiable.
No tests detected — migrations/tests presence section empty and inspector reports no test count for a service that orchestrates multi-instance lifecycle and docker-compose routing; critical paths are untested as far as evidence shows.
source · auto-grader-2026-06-16
Ecosystem manifest
.atlas-deps.ymlMulti-instance orchestrator for OpenAlice — manages lifecycle, docker-compose routing, and A2A mesh discovery.
- openaliceothervia docker compose / container volume mountSpawns and manages openalice containers; mounts alice binary + entrypoint from the main repo build.
- ORCH_PORT
- ORCH_BASE_PORT
- HOME
- http_endpoint: http://orchestrator:8200/api/v1/*
Atlas grepped the repo's source for env reads (rust env::var · ts process.env · py os.environ · shell $VAR) and diffed against the manifest's consumes_env. Two lists below: stale declarations and undeclared reads.
- HOME
Code composition
tokei · loc- Rust98.1%
- TOML1.9%
- Rust98.1%
- TOML1.9%
- Rust98.1%· 860
- TOML1.9%· 17
| Language | % code | code | comments | blanks | files |
|---|---|---|---|---|---|
| Rust | 98.1% | 860 | 45 | 87 | 1 |
| TOML | 1.9% | 17 | 0 | 1 | 1 |
| Markdown | 0.0% | 0 | 8 | 3 | 1 |
Telemetry ribbon · last 90 days
1 eventorchestrator/a2a
1 feature- orchestrator.api.mesh-statussrc/main.rs:1001Polls every running instance's `/.well-known/agent.json`, returns aggregated A2A mesh view with agent cards.route:/api/v1/meshsince 0.1.0
orchestrator/api
5 features- orchestrator.api.create-instancesrc/main.rs:506Allocates id+port, validates+slugs name, writes alice.yaml and compose file, persists registry.route:/api/v1/instancessince 0.1.0
- orchestrator.api.get-instancesrc/main.rs:655Fetches a single instance by UUID, 404 if absent.route:/api/v1/instances/{id}since 0.1.0
- orchestrator.api.healthsrc/main.rs:482Reports orchestrator status, version, total + running instance counts, and uptime.route:/api/v1/healthsince 0.1.0
- orchestrator.api.instance-health-proxysrc/main.rs:945Probes `http://{container}:8080/health` via Docker DNS; reports reachability + latency.route:/api/v1/instances/{id}/healthsince 0.1.0
- orchestrator.api.list-instancessrc/main.rs:641Returns redacted views (tokens stripped) of every registered instance.route:/api/v1/instancessince 0.1.0
orchestrator/config
1 feature- orchestrator.bin.openalice-orchestratorsrc/main.rs:13Reads ORCH_PORT (listen, default 8200) and ORCH_BASE_PORT (instance port base, default 8080) from env.bin:openalice-orchestratorroute:/api/v1/*since 0.1.0
orchestrator/lifecycle
4 features- orchestrator.lifecycle.delete-instancesrc/main.rs:875Tears down compose stack, removes compose file, drops registry entry; preserves data dir on disk.route:/api/v1/instances/{id}since 0.1.0
- orchestrator.lifecycle.port-allocatorsrc/main.rs:268Allocates the next free TCP port for a new instance by incrementing the current max.since 0.1.0
- orchestrator.lifecycle.start-instancesrc/main.rs:680Shells out to `docker compose up -d --build` against the instance's compose file; transitions Created→Starting→Running.route:/api/v1/instances/{id}/startsince 0.1.0
- orchestrator.lifecycle.stop-instancesrc/main.rs:795Runs `docker compose down`; marks Stopped even on partial failure so registry stays consistent.route:/api/v1/instances/{id}/stopsince 0.1.0
orchestrator/persistence
1 feature- orchestrator.persistence.instance-filessrc/main.rs:600Materializes the instance's data dir, alice.yaml, and compose file under the orchestrator data dir.since 0.1.0
orchestrator/template
2 features- orchestrator.template.alice-yamlsrc/main.rs:289Emits a fully-formed alice.yaml (router tiers, connectors, browser, rank) per spawned instance.since 0.1.0
- orchestrator.template.docker-composesrc/main.rs:376Renders per-instance docker-compose with Traefik labels, healthcheck, resource limits, and openalice/proxy networks.since 0.1.0
orchestrator/util
1 feature- orchestrator.util.slugsrc/main.rs:462Normalizes instance names into Traefik/Docker-safe slugs (lowercase, alphanumeric + dashes).since 0.1.0