MinusPodJev
September 21, 2026 ยท View on GitHub
MinusPodJev
MinusPodJev is a FastAPI proxy that makes TypeSafe Jev available to MinusPod as an OpenAI-compatible ad-detection model. This repository also contains the standalone offline benchmark that measured Jev against 84 chat models on a 14-episode corpus.
Contents
Features
- OpenAI-compatible detection, verification, and review endpoints for MinusPod
- Native Jev segments-in, spans-out endpoint
- Optional sponsor matching from MinusPod's sponsor list, with a gazetteer fallback
- Runtime threshold settings and a status page with process-scoped metrics
- Offline benchmark corpus, caches, reports, and reproduction commands
How it works
Jev scores one transcript segment at a time. The proxy parses MinusPod's window prompt, asks Jev one noul per segment, assembles spans, classifies categories, matches sponsors, and returns MinusPod's expected JSON envelope. The full request flow and component diagram are in How it works.
Jev Proxy does not support chapter generation. Chapter titles still need a secondary chat model.
Jev Proxy is a POC shim. It does not change the MinusPod runtime that controls holds, autoapproval, or verification logs. compat/minuspod_compat is a vendored snapshot used by the production proxy and offline benchmarks. Keep production operations in the existing MinusPod application until Jev is mature.
Requirements
- Docker and Docker Compose for the container deployment
- A TypeSafe key supplied by MinusPod as its OpenAI bearer token
MINUSPOD_BASE_URLandMINUSPOD_PASSWORDfor live sponsor namingMINUSPOD_PASSWORDfor runtime-settings editing
For local development, use Python 3.11+ and uv. See Installation.
Quick start
The included Compose file starts ttlequals0/minuspodjev:latest, persists runtime settings in the jevproxy-data volume, and binds 127.0.0.1:8080 by default.
docker compose up -d
- Set
MINUSPOD_BASE_URLandMINUSPOD_PASSWORDin the Compose environment for live sponsor naming. SetMINUSPOD_PASSWORDfor runtime-settings editing. - Point MinusPod's primary detection and verification provider at
http://<proxy-host>:8080/v1. Useopenai_compatible,typesafe/jev, andtimestampsaddressing. The provider fields table has the full configuration. - Configure an independent secondary chat model for review and chapter titles.
MinusPod supplies the TypeSafe key on each request; do not normally set a fallback key in Compose.
http://localhost:8080/ is the status UI from the Docker host. The default loopback binding requires explicit exposure before a remote MinusPod can call the proxy. For intentional LAN or reverse-proxy exposure, set JEVPROXY_BIND_ADDRESS=0.0.0.0 and provide appropriate network access controls. See Configuration and Installation.
Documentation
| Topic | |
|---|---|
| How it works | Request flow, supported phases, architecture, and repository layout |
| Installation | Local development and Docker Compose setup |
| Web interface | Status page, settings editor, and runtime statistics |
| Configuration | MinusPod routing, thresholds, and runtime behavior |
| Environment variables | Environment variable reference |
| API | OpenAI-compatible, native, status, settings, and documentation endpoints |
| Security and storage | Authentication, secrets, request limits, cache, and persistence |
| Benchmark | Reproduction commands, reports, corpus, and result caveats |
Browse the full documentation index.
License
LLM disclosure
This project was developed using AI agents as a pair programmer. It was NOT vibe coded. For context, I'm a systems engineer who also writes code professionally with 15+ years of experience. The codebase follows engineering best practices, and all architecture and design decisions were made by me, not by AI. All code generated by LLMs was reviewed and tested by me, a human.