openalice-vision-server
The **deployable** [`openalice-vision`](../openalice-vision) producer — an HTTP service the TS product frontends (Persona camera, Live render, World scene) call to turn a frame into a consent-gated `visual_perception` event from the EU VLM (Mistral over OpenRouter). Same role as the tts/stt services for audio.
Architecture rating
Strong substrate adoption — deliberately mirrors the tts/stt audio services as an HTTP producer, valid manifest (100), 0 circular deps and uniform low-complexity modules; minor god-module flag (1) the only blemish.
Detailed valid manifest (100) and a clear README explaining the producer role + privacy gate, 1 @feature annotation; held back by 12 missing docstrings and roadmap at 30/100.
Privacy-by-design consent gate is the standout — camera-without-consent returns 403 and the frame is never sent to the VLM; but no endpoint authn/rate-limit/security-headers evidenced, and OPENROUTER_API_KEY is declared-but-unused env drift (secret path unclear).
Clean AST (avg complexity 2.71, max 5, 0 cycles, 0 dead imports, 0 broad excepts) and a /health route, but no evidence of request timeouts, retries, graceful SIGTERM shutdown, or idempotency on the OpenRouter VLM call — unverified failure handling.
Stateless producer by design — owns zero tables, no migrations dir, no DB/RLS/FK/GDPR surface; scored low because there is no data layer to evaluate, not because of a defect.
Only a GET /health probe exists and it currently fails (Atlas: up=false, 'no https endpoint in manifest exposes'); no metrics, tracing, or structured-log signal — observability is essentially a single broken probe.
No tests present — no tests dir, inspector reports no test signal, features axis 28/100; the consent/403 privacy gate (its most security-critical path) has zero regression coverage.
source · auto-grader-2026-06-16
Ecosystem manifest
.atlas-deps.ymlDeployable vision PRODUCER — Axum HTTP service wrapping openalice-vision. POST /v1/vision/read (frame → consent-gated visual_perception event from the EU VLM) + GET /health. The TS product frontends (Persona camera / Live render / World scene) call this instead of embedding the Rust crate, like the tts/stt services for audio. Camera-without-consent → 403, the frame is never sent to the model (privacy gate before the VLM call). Live-proven over HTTP. Deploy (Dockerfile + compose + Traefik vision.blal.pro) is the next step.
- openalice-visionothervia cargoThe producer crate it wraps — VLM read + consent-gated visual_perception builder + cadence.
- openrouterhttpvia OPENROUTER_API_KEYEU VLM (mistral-small-3.2) endpoint (HTTPS) via the wrapped producer.
- OPENROUTER_API_KEY
- VISION_PORT
- http_endpoint: openalice-vision-server
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.
- OPENROUTER_API_KEY
Code composition
tokei · loc- Rust89.4%
- TOML10.6%
- Rust89.4%
- TOML10.6%
- Rust89.4%· 144
- TOML10.6%· 17
| Language | % code | code | comments | blanks | files |
|---|---|---|---|---|---|
| Rust | 89.4% | 144 | 4 | 18 | 1 |
| TOML | 10.6% | 17 | 0 | 1 | 1 |
| Markdown | 0.0% | 0 | 26 | 5 | 1 |
Telemetry ribbon · last 90 days
1 eventagent-vision/server
1 feature- agent-vision.server.httpsrc/main.rs:9Axum service over openalice-vision: /v1/vision/read (frame → consent-gated visual_perception event) + /health. Camera origin without granted consent → 403, enforced by the producer.