An open-source Jev alternative that runs locally.
Describe your classifier in English. ProgramAsWeights compiles it into a small neural program you can call like a Python function, on your own machine.
pip install programasweightsimport programasweights as paw
classify = paw.function("email-triage")
print(classify("Urgent: server is down!"))
# immediateA ready-made classifier running on the shared 0.6B interpreter. The first call downloads the assets; subsequent calls run locally.
Define your own labels below ↓Describe once. Run on every input.
Define what makes an email urgent once, then apply that definition to thousands of emails.
Describe
Write your categories, extraction rules, or output format in English.
Compile
A larger model generates a task-specific LoRA adapter for the shared 0.6B interpreter.
Run
Download once, then call the function on your own CPU. Save it, reuse it, and compose it with ordinary code.
Build your own classifier
Install the SDK, then describe your task and output labels.
pip install programasweightsimport programasweights as paw
spec = "Classify email urgency. Return only urgent or not_urgent. Outages and requests that need action today are urgent. Newsletters and FYI messages are not_urgent."
program = paw.compile(spec, public=True)
classify = paw.function(program.id)
print(classify("Our production server is down."))Compilation uses the hosted compiler. public=True shares the specification and program, so keep private data out of the spec. After the first download, inference runs locally. Save program.id to reuse your function.
Test on your own examples, inspect mistakes, and refine the spec. For higher accuracy, try the Finetune compiler. See the recommended workflow.
More than classification
Explore all demos →PII detection
Find personal information, highlight entity types, and mask the results.
English to filters
Turn a search request into structured filters for a product catalog.
Question routing
Combine small neural functions with ordinary rules to build a website helper.
These web demos use hosted inference. Use the Python SDK to run the downloaded programs locally.
Coming from Jev?
The shared idea is simple: ordinary code controls the flow, and small models handle fuzzy judgments. PAW lets you build those functions from English descriptions and run them on your own hardware.
Jev’s API provides typed questions with probabilities and confidence information. PAW functions take text and return text, including labels, JSON, and extracted content. The APIs differ; PAW does not provide calibrated confidence scores.
Frequently asked questions
Do I need a GPU?
No. The standard interpreter is Qwen3-0.6B and runs on a CPU. The SDK also supports GPU acceleration.
Do I need training data?
The Standard compiler generates an adapter from your specification. Bring representative examples to evaluate it; you do not need to train a classifier yourself.
Can I use hosted inference instead?
Yes. Call the same public program through POST /api/v1/infer. Hosted inference sends inputs to our service; local inference keeps them on your machine. The agent guide includes a working HTTP example.
How should I evaluate a program?
Use a validation set to refine the specification, then measure the final program on a separate test set. Check accuracy and output format on your actual inputs. The standard runtime has a roughly 2,048-token context shared by the program prompt, input, and output.
Try it on your own task.
ProgramAsWeights is open-source research from the University of Waterloo. The code, model weights, and papers are public.
Open Playground