m5/org/openalice-vision-server

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.

Features
1
Status
·unknown
Last activity
1mo ago
Branch
mvp

Architecture rating

D1mo ago
consistencyB-

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.

docsC+

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.

securityC-

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).

reliabilityD

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.

data layerD

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.

observabilityD

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.

testingF

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.yml

Deployable 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.

Runtime deps
  • via cargo
    The producer crate it wraps — VLM read + consent-gated visual_perception builder + cadence.
  • openrouterhttp
    via OPENROUTER_API_KEY
    EU VLM (mistral-small-3.2) endpoint (HTTPS) via the wrapped producer.
Consumed env
  • OPENROUTER_API_KEY
  • VISION_PORT
Exposes
  • http_endpoint: openalice-vision-server
Env drift · manifest ⇄ code

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.

Manifest declares, code unused
  • OPENROUTER_API_KEY
Observed reads: 1 · declared: 2

Code composition

tokei · loc
161loc
  • Rust89.4%
  • TOML10.6%
  • Rust89.4%· 144
  • TOML10.6%· 17
Language% codecodecommentsblanksfiles
Rust89.4%1444181
TOML10.6%17011
Markdown0.0%02651

Telemetry ribbon · last 90 days

1 event
MAYJUNJUL2026-06-10 · lifecycle · first scan — repo indexedNOW
commitmanifestlifecyclekind

agent-vision/server

1 feature
  • agent-vision.server.http
    src/main.rs:9
    Axum service over openalice-vision: /v1/vision/read (frame → consent-gated visual_perception event) + /health. Camera origin without granted consent → 403, enforced by the producer.