Skip to content
Open source · Local-first

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 programasweights
email_triage.py
import programasweights as paw

classify = paw.function("email-triage")
print(classify("Urgent: server is down!"))
# immediate

A 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.

1

Describe

Write your categories, extraction rules, or output format in English.

2

Compile

A larger model generates a task-specific LoRA adapter for the shared 0.6B interpreter.

3

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 programasweights
my_classifier.py
import 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 →

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