Phase 4a of the BTE refactor (audit 2026-05-24 §3 V). svrnty-vision is a sovereign HTTP gateway in front of four vision capabilities — VLM (Spark 2 Qwen3-VL), FLUX image gen (Spark 1 ComfyUI), palette extraction, and background removal. This commit lays only the scaffold: FastAPI app, /healthz, four 501-stub routers, pydantic-settings config, pytest smoke. Real implementations land in Phase 4b. BTE code is untouched in 4a. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
68 lines
2.1 KiB
Markdown
68 lines
2.1 KiB
Markdown
# svrnty-vision
|
|
|
|
Sovereign vision HTTP gateway. FastAPI shell that exposes four endpoints:
|
|
|
|
| Endpoint | Purpose | Implementation |
|
|
|---|---|---|
|
|
| `POST /vlm/analyze` | Vision-language model evaluation | Proxies to Spark 2 (Qwen3-VL via vLLM) |
|
|
| `POST /flux/render` | Image generation | Proxies to Spark 1 (FLUX on ComfyUI) |
|
|
| `POST /palette/extract` | Dominant-color palette | In-process (Pillow + colorthief) |
|
|
| `POST /rembg/cutout` | Background removal | In-process (rembg) |
|
|
|
|
Plus `GET /healthz` for liveness.
|
|
|
|
## Why it exists
|
|
|
|
Brand Truth Engine (BTE) is a .NET 10 + Svrnty.CQRS service. Vision tooling
|
|
(VLM, image gen, palette, rembg) was originally embedded in BTE with cloud
|
|
provider SDKs (Anthropic, OpenAI, Google, Higgsfield). Per the
|
|
2026-05-24 refactor audit, that surface is extracted into this sibling repo
|
|
so BTE stays narrow and sovereign-first.
|
|
|
|
## Architecture invariant
|
|
|
|
**svrnty-vision is a thin HTTP gateway — it does NOT run heavy ML models
|
|
in-process.** Qwen3-VL runs on Spark 2 (vLLM). FLUX runs on Spark 1
|
|
(ComfyUI). svrnty-vision orchestrates HTTP calls to those services and
|
|
normalises the responses for BTE.
|
|
|
|
The two in-process exceptions (palette, rembg) are CPU-light Python
|
|
libraries — Pillow/colorthief and rembg respectively. They land in 4b.
|
|
|
|
## Status
|
|
|
|
**Phase 4a (this commit):** scaffold only. All four endpoints return
|
|
HTTP 501 Not Implemented. `/healthz` returns 200.
|
|
|
|
Phase 4b will port the real logic. Phase 4c deletes the corresponding
|
|
.NET code from BTE. Phase 4d wires BTE to call svrnty-vision over HTTP.
|
|
See `/home/svrnty/workspaces/hermes/sot/01-ROADMAP/BTE-REFACTOR-EXECUTION-PLAN.md`.
|
|
|
|
## Run
|
|
|
|
```sh
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
pip install -e . # required: src/ layout
|
|
|
|
# either:
|
|
python -m svrnty_vision.server
|
|
# or:
|
|
uvicorn svrnty_vision.server:app --port 8090
|
|
|
|
curl http://localhost:8090/healthz
|
|
# {"status":"ok","version":"0.1.0"}
|
|
```
|
|
|
|
## Test
|
|
|
|
```sh
|
|
pytest tests/
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Copy `.env.example` to `.env` and edit. All settings have safe defaults
|
|
for local development (Spark 1/2 hostnames are placeholders).
|