A workbench for models that decide.
Noullama runs native decision models on llama.cpp, on your machine. Give it a state and a set of typed questions. It answers with chosen options and probabilities, not paragraphs.
Public source. No release yet.
No result yet. Run the decision to see the answers.
A rebuilt copy of the playground, with example answers. No inference runs on this page.
Local inference
llama.cpp loads the model and answers on your
machine. The gateway listens on loopback, at
127.0.0.1:11435.
Typed answers
Each question has a type: choice,
noul or score. Results
carry probabilities you can act on.
HTTP when you need it
A native decision endpoint and an OpenAI-compatible adapter, so other programs can ask the same model.
Questions are the interface
There is no chat box. You describe the case, then ask specific questions with a known shape. Presets keep the questions, the state and its format across restarts.
choice
Picks one option from a named set, using the criteria you give it.
Returns one option with a probability for each.
noul
Answers yes or no to a single question about the state.
Returns yes and no, with probabilities.
score
Rates the state against an ordered set of levels.
Returns a distribution across the levels.
State can be plain text or JSON. Switching the editor between modes converts the representation without losing the content.
The questions are JSON, and the editors lint as you type. A preset can hold several questions, so one run can route a ticket and judge its urgency at the same time.
{
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Charges and refunds",
"technical": "App errors"
}
},
"refund": {
"type": "noul",
"instructions": "Is the customer asking for a refund?"
}
}
A local gateway with two faces
While the app is open, the gateway serves native
decision requests and an OpenAI-compatible chat adapter.
Both bind to localhost. The managed llama-server uses
port 11436.
/v1/systemone
Native request: a state and typed questions.
/v1/chat/completions
OpenAI adapter. One user message holding the JSON request.
/v1/models
Lists the model the gateway is serving.
/health
Health check for the gateway.
curl http://127.0.0.1:11435/v1/systemone \
-H 'Content-Type: application/json' \
-d '{
"state": "I was charged twice. Please refund the duplicate payment.",
"questions": {
"refund": {
"type": "noul",
"instructions": "Is the customer asking for a refund?"
}
}
}'
The adapter does not support chat history, tools, streaming or arbitrary chat prompts. Multi-select, extraction, estimates, boxes and video are not part of this integration. Native clients can send image data URLs when the model, runtime and projector support them.
Build it from source
There is no installer to download yet. The repository builds the desktop app for your own machine.
-
Install the toolchain
Node.js 22 or newer, Rust, Blaze, the Hugging Face CLI, and a llama.cpp build that includes PR #31275 for Liquid d1-2B. On Linux, the Tauri prerequisites include GTK 3 and WebKitGTK 4.1 development packages.
-
Clone, install, run
shell git clone \ https://github.com/parasite6/noullama.git cd noullama npm install npm run desktop -
Load a model
In Models, download a GGUF or browse for one you already have. In Runtime, point at your llama-server and set GPU layers, using 0 for CPU inference. Select the model, click Load selected, then open Playground.
A standalone binary can be built with
npm run desktop:build. On Linux it
lands in
src-tauri/target/release/noullama.
Packaging is not configured.
Where the project stands
Noullama has not had an official release. The source is public under GPL-3.0, but there is no installer, no bundled runtime, and packaging is not configured. Builds currently come from the repository.
The prototype loads one model and runs one download at a time. Downloads cannot be cancelled from the interface, and the playground does not keep a history. Named custom presets do persist.