Skip to content

Jet

Local structured decisions

Local decisions, structured answers

Give a local language model context and fixed candidates. Jet scores them and returns a result you can use directly.

What Jet does

Score candidates. Keep the schema. Stay local.

Fixed candidates

Choose, confirm, or rate.

Ask a choice, yes/no, or score question over a fixed answer set. Candidate keys and score indexes come from your schema, so downstream code does not need an output parser.

Local inference

Run where the data already is.

Use GGUF models on CPU by default, or offload to CUDA, Metal, or Vulkan. With vision enabled, score the same structured questions against PNG or JPEG inputs—including the Doom demo’s screenshot-driven controls.

CLI and Rust API

Stream JSONL or call from Rust.

Send one request per line and receive ordered, machine-readable results from the CLI, or embed the decision engine with typed requests, responses, configuration, and error handling.

Why Jet

Structured answers.

Fixed candidates in. Predictable JSON out.

  • Fixed candidate scoring

    Choose an answer, make a yes/no decision, or rate an item without parsing free-form model output.

  • Local inference

    Run GGUF models on CPU, CUDA, Metal, or Vulkan without standing up an HTTP service.

  • Streaming JSONL

    Process one request per line and receive ordered, machine-readable results from the CLI.

  • Rust API

    Embed the decision engine directly with typed requests, responses, configuration, and error handling.

Multimodal · Doom demo

Score actions from what the agent can see.

The Doom controller in demos/doom shows Jet’s multimodal path: choose among nine controls from a screenshot plus visible status, while the game keeps running. It is a visual control demo, not a trained Doom policy, and visual decision accuracy has not been quantitatively evaluated.

  • Nine admissible controls

    Forward, backward, strafe, turn, fire, use door, and wait—scored as fixed candidates on every observation.

  • 160×100 RGB screenshots

    The controller downsamples the live 640×400 view to an exact 160×100 PNG before Jet scores the image.

  • Visible state only

    HUD health and ammo, the previous action, and recent motion cues are included. Hidden enemy positions and map geometry are not.

  • Vision path, thinking off

    The demo uses Jet’s multimodal judge with a vision-language model and projector. The current implementation requires reasoning disabled.

Model comparison

Full MMLU on consumer GPUs.

Accuracy versus complete-process throughput on RTX 4090, from the Jet technical report. Hover or focus a point for exact values. Peak accuracy: Qwen3.5-27B (Vulkan) at 85.01%.

Accuracy vs throughput

Each point is one RTX 4090 full-MMLU run (best accuracy per model across Vulkan and CUDA). Source: paper/figures/rtx4090-results.tex.

304560759008162432 MMLU % Req./s on RTX 4090

Get Jet

Build it once. Run it locally.

Pick your OS and backend. Commands below match the repository getting-started and advanced guides—clone with submodules first, then install mise 2026.10.0 or newer.

Build and run the CPU CLI
mise install./scripts/download-test-model.shmise exec -- cargo build --release -p jet-cli./target/release/jet judge --model-path models/Qwen3-0.6B-Q8_0.gguf --input tests/fixtures/decisions.jsonl --output -

CPU is the default backend. Clone with --recurse-submodules so the pinned llama.cpp submodule is present.

Released under the Apache-2.0 License.