# openalice-vision-server

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

## At a glance
| field | value |
|---|---|
| kind | `service` |
| priority | `—` |
| default branch | `mvp` |
| last activity | 2026-06-02T09:08:56+00:00 |
| features catalogued | **1** |
| runtime deps declared | **2** |

## Manifest
`.atlas-deps.yml` — parsed cleanly: **yes**

### Runtime deps
- **`openalice-vision`** · `other` · via `cargo` — The producer crate it wraps — VLM read + consent-gated visual_perception builder + cadence.
- `openrouter` (external) · `http` · 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 declares, code unused (1):**
- `OPENROUTER_API_KEY`

## Features (1)

### agent-vision/server
- **`agent-vision.server.http`** — 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.  
  *src/main.rs:9*

---

*Generated by [openalice-atlas](https://atlas.blal.pro) — single source of truth for the openalicelabs ecosystem.*
