Looks like Python.
Compiles like Rust.

Frontier coding models score highest on Python (HumanEval, LiveCodeBench, SWE-bench Verified). lpy looks like Python so they can write it, and rustc compiles it. You get LLVM, crates.io, and about 31% less output than the same programs in Rust.

.lpy rustc LLVM native

Install

The toolchain is the lpy CLI plus rustc. This page serves it:

$ curl -sSf HOST/install.sh | sh -s -- --new ./myapp
$ lpy doctor
$ lpy check ./myapp/main.lpy
$ lpy build ./myapp/main.lpy -o ./myapp/app --opt size

That writes lpy.toml, main.lpy, AGENTS.md, and lpy.json. rustc (and cargo if you add crates) still need to be on PATH — rustup, or nix shell nixpkgs#rustc nixpkgs#cargo.

What you actually spend

At $15 per million output tokens, ten agents writing 8k tokens of Rust twenty times a task, forty tasks a day, is about $21k/month. The same work in lpy is about $15k. Edit the fields if your usage is different.


            

Playground

Same routes an agent uses. Check = rustc. Expand = generated Rust. Run needs def main().

Output from check / expand / run / tokens shows up here.

Give this to your agent

No training. Tell it to write .lpy, GET /llms.txt, and POST source at HOST. Models are already good at Python. rustc does the checking.


        

Same CLI as Install. After curl … | sh -s -- --new ./myapp, point the agent at that folder.

$ curl -sS HOST/llms.txt
$ curl -sS -X POST HOST/api/check --data-binary @hello.lpy
$ curl -sS -X POST HOST/api/run --data-binary @hello.lpy

tack

A reasoning format for any coding agent. Separate from lpy — use one, the other, or both.

Give the agent /tack.md. English in, English out. Internal notes use short sequent marks instead of paragraphs. That is the save: thinking tokens, not the files it writes. Replies stay English. Code stays whatever the repo already uses.

$ curl -sS HOST/tack.md
? rain
wet
wet <- rain | sprinkler | leak
~ sprinkler
~ leak
|- rain
.

Paste the spec into Claude, Cursor, Grok, or any agent. It only shortens thinking if the agent actually follows it — a project rule, system prompt, or paste of /tack.md.

What you get

It uses Python syntax so models can write it. rustc builds a native binary. Libraries come from crates.io. Compile with lpy build.