mrkeyoor.com_
Fri 16 Oct 19:43 UTC
LLM Toolsevaluationupdated 08 Oct 2026

rizzo-flow review

Rizzo Flow is a local decision server that turns text or JSON state into booleans, choices, scores, and numeric estimates with probabilities. It reads the model's next-token scores instead of generating prose, which removes JSON repair from the path but does not make the decisions automatically correct or calibrated.

+22stars / 7d
Verdict

Our run passed 75 tests with 0 failures in 14 seconds after a 53-package install, making Rizzo Flow unusually inspectable for a project created in September 2026. Use it for local, bounded decisions when you can calibrate on your own labels and keep the service behind a trusted boundary. Do not expose commit b9ba007 publicly until the native endpoint shares the API-key check and the open hardening work lands.

We ran it

Lab card: what happened when we ran rizzo-flowScreenshot of rizzo-flow (rizzo-ai-academy.github.io/rizzo-flow)
Install✓ · 21s53 packages · 73 MB
Build✓ · 7s
Tests✓ · 14s75 passed · 0 failed · 13 skipped of 75 (pytest)
Known vulns0(pip-audit)
Repo193 files~7,933 lines of source · 12.6 MB · 0 CI workflows · tests dir

Answers from our run

Does rizzo-flow build from source?

Dependencies installed in 21 seconds (53 packages), and the build succeeded in 7 seconds. We cloned commit b9ba007 into a clean Debian container with 3 CPUs and no project-specific setup.

Do rizzo-flow's tests pass?

Yes: 75 of 75 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does rizzo-flow have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use rizzo-flow?

Workflows that need explanations or free-form answers: Rizzo Flow returns fixed typed decisions and probabilities, not generated reasoning.

What are the alternatives to rizzo-flow?

SemIf OpenJev, Jev, Outlines. Our run passed 75 tests with 0 failures in 14 seconds after a 53-package install, making Rizzo Flow unusually inspectable for a project created in September 2026.

Setup3/5Small Python setup, followed by 1.8 GB to 8.2 GB weights
Docs5/5Specific limits, caveats, hardware notes, and calibration guidance
Community3/5852 stars and useful reports, but 21 open issues and PRs
Maturity2/5Tests pass, yet there is no release tag, CI, or public hardening

Who it’s for

Python teams that need repeated typed judgments over one shared document or record.
Developers replacing a hosted Jev-style endpoint with local Apache-2.0 code and weights.
Evaluators who can label domain data and fit probability calibration before setting thresholds.
Desktop or internal-tool builders with a supported llama.cpp runtime and room for a 1.8 GB to 8.2 GB model file.

Who it’s NOT for

Workflows that need explanations or free-form answers: Rizzo Flow returns fixed typed decisions and probabilities, not generated reasoning.
Public Internet services in its current form: the README says there is no rate limiting, and commit b9ba007 leaves /v1/decisions outside API-key protection while PR 16 remains open.
Teams treating probability as truth: the README says probabilities are uncalibrated by default and reports confident answers when evidence is missing.
Windows Intel users who cannot absorb runtime debugging: open issue 18 reports an access violation on both Vulkan and CPU with the 4B and 1.7B downloads.
Buyers requiring a settled release train: there is no GitHub release, 0 CI workflow files, and 21 open issues and pull requests.

Setup reality

Our sandbox installed commit b9ba007 in 21 seconds: 53 packages occupied 73 MB. The build passed in 7 seconds. Pytest finished in 14 seconds with 75 passed, 0 failed, and 13 skipped; pip-audit reported 0 known vulnerabilities.

A real decision run adds the heavy part. The default Q8_0 model is 4.4 GB, plus a prebuilt llama.cpp runtime that the README sizes at about 570 MB for CUDA, 30 MB for Vulkan, or 11 MB on a Mac. Python 3.11 or newer, git, uv, and the relevant GPU driver are required; a 1.8 GB model is available for a smaller first run.

Local use needs no hosted-model credential. RIZZO_API_KEY protects the Jev-compatible routes when configured, but not the native decisions route at the reviewed commit. There is no Dockerfile or CI workflow, and the project warns that it is not hardened for public exposure.

Version 0.1.0 returns typed probabilities instead of prose

Rizzo Flow 0.1.0 accepts a shared state and asks a local model to judge boolean, choice, score, or numeric questions about it. Each candidate answer becomes a letter, and the server reads the model's score for those letters after one forward pass. There is no text decoding loop and no generated JSON to repair. The response shape is controlled by Python rather than by a model following formatting instructions.

That design is narrow on purpose. A support ticket can become an urgency boolean, a department choice, and a frustration score in one request. Questions share the state's KV cache instead of processing the same document again. The native endpoint can also abstain or mark a numeric estimate outside its supplied anchors. It cannot explain the choice in prose, discover an option you forgot to include, or prove that its highest probability is correct.

The default first run downloads 4.4 GB of weights

The code setup needs Python 3.11 or newer, git, and uv. After that, rizzo download fetches a machine-specific llama.cpp build and the fine-tuned Spark-X2.5 model. The default 4B Q8_0 file is 4.4 GB. Smaller choices include a 2.6 GB 4B quantization and 1.8 GB or 1.1 GB variants of the 1.7B model, though the README says the smaller model is much less accurate.

Hardware selection covers CUDA, Vulkan, Metal, ROCm, SYCL, and CPU builds, with the project pinning llama.cpp release b11081. That breadth comes with boundaries. The maintainers say their own complete measurements cover one Windows and NVIDIA machine, while other hardware evidence comes from community reports. Open issue 18 describes a Windows 11 Intel system that crashed on startup with both CPU and Vulkan paths across 2 model sizes.

What happened when we ran it

Our measurement setup used a fresh Debian container with 3 CPUs, 8 GB of RAM, no secrets, and no elevated privileges. Installing commit b9ba007 took 21 seconds, pulled 53 packages, and used 73 MB on disk. The build completed in 7 seconds. Pip-audit found 0 known vulnerabilities in the installed Python environment.

Pytest completed in 14 seconds with 75 passed, 0 failed, and 13 skipped. The repository had 193 files, about 7,933 lines of source, and a 12.6 MB checkout. It includes a tests directory but 0 CI workflow files and no Dockerfile. Our run validates the package and available unit suite; it does not validate the downloaded 4.4 GB model on a GPU or reproduce the project's decision benchmarks.

A 0.648 project score still needs domain calibration

The README reports 0.648 accuracy for its 4B fine-tune on the typed-decisions test split, compared with 0.574 for the base model on the same machine. It also reproduces Jev's published 0.727 figure from that dataset card, rather than presenting it as a local rerun. The authors spell out another limitation: the gold labels came from a model, not human judges. These are useful internal comparisons, not permission to reuse a threshold in your application.

Rizzo Flow includes temperature scaling because probability quality changes with weights, quantization, backend, and workload. A calibration file is tied to that fingerprint so a CUDA fit does not quietly load on Vulkan. You still need labeled domain data, a separate calibration split, and a held-out test. The known-limitations section says the model underuses abstention and can answer confidently when evidence is absent.

Jev compatibility ends at 26 answer options

The compatibility route accepts Jev-shaped boolean, choice, and score requests, and clients can point at localhost by changing a base URL. Rizzo always reports its local model identity. It allows at most 26 options per choice, compared with the hosted API's documented 255, and the compatibility format disables abstention. The README also says official SDK compatibility was designed but not tested against the real SDKs.

Security differs between the 2 route families at commit b9ba007. /v1/systemone and /v1/models use the Bearer authorization dependency when RIZZO_API_KEY is set. /v1/decisions does not. Open PR 16 adds the same check and tests to the native endpoint, but it was still unmerged on October 8. Combined with no rate limiting and serialized concurrent requests, that makes localhost or a protected internal network the sensible boundary.

The 21-item open queue contains production fixes

GitHub showed 852 stars, 58 forks, 10 open issues, and 11 open pull requests on October 8. The repository was created on September 21 and last pushed on September 25, while issue discussion continued through October 7. There is no tagged GitHub release. Several merged September fixes came from hardware reports, including Metal device detection, cleanup on exit, and CUDA device probing.

The queue is more than feature requests. Issue 29 offers an external audit with 28 proposed bug fixes, CI, and a much larger test suite; those branches are contributor work, not merged project behavior. PR 16 addresses the native endpoint's missing auth check, and issue 18 records the Windows access violation. The passing 75-test lab run is a good base. It is not a substitute for resolving the deployment-specific faults that the current queue makes visible.

Alternatives

ProjectWhat it isPick it when
SemIf OpenJev gh↗An MIT-licensed local implementation of semantic decisions from open models.pick this instead when you want the earlier open option-logit baseline that inspired Rizzo Flow.
JevTypeSafe's hosted typed-decision service and the API pattern Rizzo Flow mirrors.pick this instead when a managed service and its published accuracy matter more than local weights.
OutlinesA Python library for constraining generated model output to structured forms.pick this instead when you need structured generated text rather than fixed option probabilities.

What people are saying

  1. [velocity-scout] Rizzo-AI-Academy/rizzo-flow

Sources

  1. Rizzo Flow README at commit b9ba007
  2. Project package configuration
  3. Native endpoint API-key pull request
  4. Windows access violation report
  5. External bug-fix and CI audit proposal
  6. Repository issues and pull requests

More llm tools reviews

IQuest-Q1 · iCode · tokenspeed · Naive-N0.5-Flash · Strata · AnyJev · the whole board →