The engineering approach
How the experience connects to the application, data, and processing behind it.
- 3 answer typesunder an explicit contract
- Yes/no (noul), choice, and ordered score questions return bounded probability-based answers.
- 4 backendsbehind native Swift interfaces
- Verdict and Laya on Core ML; DiffusionGemma and JevK5 on MLX.
- Apache-2.0for the open-source implementation
- Public source, compatibility records, tests, documentation, and model attribution.
The first boundary is between a decision contract and the inference implementation. OpenJevCore contains the request and answer types, schema validation, prompt and template construction, probability processing, and engine policies. It depends on Foundation and builds on macOS, iOS, and Linux. Applications can link the core and a backend without pulling the HTTP server into an iPhone build.
The model adapters serve different readout strategies. Verdict and Laya run through Core ML. DiffusionGemma and JevK5 use MLX on Apple silicon. Protocols isolate those model-specific paths from the public contract. Swift 6 strict concurrency and actor-isolated engines make ownership and concurrent work explicit, while server admission and runtime limits bound the work a deployment accepts.
Compatibility is tested in layers. Upstream Python produces golden fixtures for wire responses, validation errors, prompts, tokenization, seeded canvases, and decision policies. Model-free tests can check those contracts without downloading weights. Live checkpoint tests then compare inference behavior, using exact equality only where the reference conditions support it and measured bounds for native kernels.
The application experience is part of the engineering. TriageDemo uses the public library API, debounces input, cancels outdated reads, and presents each option’s probability. Its model store verifies downloads before keeping them. Tests cover request bytes, answers against a Mac reference, and accessible labels in the interface. Package documentation, dependency pins, and recorded compatibility decisions make those boundaries available to other developers.