Write Solana programs in typed Python.

PythSol checks a strict Python subset, lowers it to C, and compiles native SBF bytecode plus an Anchor-style IDL and a solders client — from one pythsol build. Nothing here ever runs your code.

You write Python

def handler(ctx: Context, payer: Signer, amount: u64) -> u64:
    vault = make_pda("vault", payer.key)
    require!(amount >= 1000)
    move_lamports(from=vault, to=payer.key, lamports=amount)
    return 0

You get a Solana program

pythsol build program.py
out/program.so        native SBF bytecode
out/idl.json          Anchor-style IDL
out/pythsol_client.py solders client
out/manifest.json     build manifest

What PythSol gives you

Checked, not executed

The parser reads your AST and the type checker proves accounts, seeds, and lamports — your Python never gets executed by the site.

Native, not WASM

clang targets the Solana SBF backend directly, so the artifact is a real deployable program with verifiable bytecode.

Workflow included

LiteSVM tests, deploy, faucet, wallet, verify, and a generated client ship with the CLI — no extra glue to write.

Pick your road

Try ideas in the browser

Open the Playground

Check types, seeds, and lamports flow; view the generated C.

Build locally, deploy to Devnet

Follow the Quickstart

pipx install pythsol, then pythsol init my-program.