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.
Free software, GPL-3.0. Packages for 64-bit Linux.
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.
Find models in the Hub
Search Hugging Face for decision models and download a GGUF, using an existing login or a session token. Each file shows a rough memory-fit estimate for your machine before you download.
Bring a llama.cpp
Point at your own llama-server, or have
Noullama download an official llama.cpp build. It
checks the archive against GitHub's SHA-256 digest
before installing it.
Stays running in the tray
With a system tray, closing the window keeps the model and the local API running. Quitting asks first and shuts everything down cleanly.
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 gateway prefers port
11435; if another program holds it,
Noullama picks a nearby free port and shows the real
endpoint in the app. 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. Local clients need no API key, and the gateway rejects foreign browser origins.
Build it from source
Prefer a package? The download page has a .deb and an .rpm. Otherwise 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 Hub, download a GGUF, or open Models and browse for one you already have. In Runtime, point at your llama-server, or download a llama.cpp build, 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.
Standalone builds include the frontend and need no
Vite server.
Where the project stands
Noullama is a prototype. The source is public under GPL-3.0, and tagged releases publish .deb and .rpm packages for Linux. There is no bundled runtime.
It loads one model, runs one model download and one runtime installation at a time. Downloads cannot be cancelled from the interface, and the playground does not keep a history. Named custom presets do persist.