Compile natural language specifications into neural programs that run locally via llama.cpp.
Project description
ProgramAsWeights
Compile natural language specs into tiny neural functions that run locally.
Define what a function should do in plain English. PAW compiles it into a small neural program that runs on your machine — no API keys at runtime, no internet needed after setup, fully deterministic.
Install
pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
Quick Start
import programasweights as paw
# Use a pre-compiled function (downloads once, runs locally forever)
fn = paw.function("email-triage")
fn("Urgent: the server is down!") # "immediate"
fn("Newsletter: spring picnic") # "wait"
# Compile your own from a description
program = paw.compile(
"Fix malformed JSON: repair missing quotes and trailing commas",
compiler="paw-4b-qwen3-0.6b", # or "paw-4b-gpt2" for smaller/faster
slug="json-fixer" # optional: creates username/json-fixer handle
)
fn = paw.function(program.slug) # or paw.function(program.id)
fn("{name: 'Alice',}") # '{"name": "Alice"}'
Two Compilers
| Standard (Qwen3 0.6B) | Compact (GPT-2 124M) | |
|---|---|---|
| Compiler name | paw-4b-qwen3-0.6b |
paw-4b-gpt2 |
| Accuracy | Higher | Lower |
| Base model size | 594 MB | 105 MB |
| Program size | ~22 MB | ~5 MB |
| Inference speed | ~90ms (server) | ~50ms (server) |
| Runs in browser | No | Yes |
Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
Browser SDK
Programs compiled with GPT-2 also run entirely in the browser via WebAssembly — no server needed, data never leaves the user's device.
npm install @programasweights/web
import paw from '@programasweights/web';
const fn = await paw.function('programasweights/email-triage');
const result = await fn('Urgent: the server is down!');
// result: "immediate"
See the browser SDK repo for full documentation.
Use with AI Agents
PAW works with Cursor, Claude, Codex, and other AI coding assistants. Paste this into your agent's chat:
I want to use ProgramAsWeights (PAW) to create fuzzy text functions that run locally. Read the instructions at https://programasweights.com/agents and help me integrate it.
Or save AGENTS.md to your project root — agents read it automatically.
When to Use PAW
- Fuzzy search — typo-tolerant matching, semantic search, near-duplicate detection
- Format repair — fix broken JSON, normalize dates, repair malformed inputs
- Classification — sentiment, urgency, categories defined in your own words
- Extraction — emails, names, dates from messy unstructured text
- Log triage — extract errors from verbose output, filter noise
- Intent routing — map user descriptions to the closest URL, menu item, or setting
- Agent preprocessing — parse tool calls, validate outputs, route tasks
Authentication
# Option 1: environment variable (recommended)
export PAW_API_KEY=paw_sk_...
# Option 2: CLI login (opens browser to generate key)
paw login
Generate API keys at programasweights.com/settings. Authenticated users get higher rate limits.
CLI
paw compile --spec "Extract error lines from logs" --json
paw run --program <program_id> --input "[ERROR] timeout" --json
paw login
--json gives structured output for programmatic use.
Links
- Website: programasweights.com
- Documentation: programasweights.readthedocs.io
- Python SDK: github.com/programasweights/programasweights-python
- Browser SDK: github.com/programasweights/programasweights-js
- Program Hub: programasweights.com/hub
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file programasweights-0.2.1.tar.gz.
File metadata
- Download URL: programasweights-0.2.1.tar.gz
- Upload date:
- Size: 9.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
157cfca831df745e0f357b868509b50f0979751447c89924eee81e1df42725e1
|
|
| MD5 |
4c1ed9fe1bf85f393b6ecee00ef7d0d4
|
|
| BLAKE2b-256 |
cca9d9f2eb8626ec5660eda29b80b5ab4b2f1341eb55c9efaf1733aa66506817
|
File details
Details for the file programasweights-0.2.1-py3-none-any.whl.
File metadata
- Download URL: programasweights-0.2.1-py3-none-any.whl
- Upload date:
- Size: 36.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0745b0a06aeb4ccc049583180318c26eceb5a94218369100d7ed1ac47acce45
|
|
| MD5 |
107d33a40fd65bb3b637f3ab64e8955b
|
|
| BLAKE2b-256 |
ec73645fb18e814fd9092129c909f199af27d88a4dac2527554b459c2d1fb26c
|