Sign In

Sign in to publish packages and pin them by sha256.


By continuing, you accept our Terms and Conditions.

@

Connect an agent

Copy and paste this into your agent session.

Edge Python is sandboxed Python that compiles to bytecode and runs on a VM, in the browser as WebAssembly or through the edge CLI.
Install the CLI with curl -fsSL https://cdn.edgepython.com/cli/install.sh | sh
Read https://edgepython.com/SKILL.md first, it is the full reference and every example in it is executable.
Nothing resolves unless edge.json declares it, so run edge add <name> before importing and grant what it asks under permissions for each scope.
Run the entry point with edge run main.py and every *_test.py with edge test.
Search the docs, people, services and packages with GET https://edgepython.com/api/search?q=<term>
Read what it finds by putting /api before the href, so /package/<name>, /package/<name>/<slug>, /@<handle>, /service/<name> and /docs/<path> all answer as data, and GET /api/docs lists the reference.
Pack and ship with edge build, then edge publish app.edge
Onboard your service to Edge Python in a minute

Your Python, unchanged, faster and safe by default

Your code and its wheels, compiled to one small binary where every package reaches only what it was granted.

uv tool install edge-python

macOS, Linux and Windows, or try it once with uvx edge-python.

Compiled in a single pass and run natively, in the browser or at the edge, from one engine.

None of these could have shipped here

Backdoors, poisoned releases and native overflows, each stopped at a scope it was never granted.

HereNative code runs in a unikernel of its own with only its package’s scopes, so a backdoor there opens no socket and reads no key.

Nothing leaves the sandbox unless you say so

A grant names a module and the one scope it reaches, and a call outside it never leaves the program.

{
  "imports": { "http": "0.2.0" },
  "permissions": {
    "main": ["time:wall", "net:api.github.com"]
  }
}
time.now()ok
net.request("GET", "https://api.github.com/repos")ok
net.request("GET", "https://evil.example/")PermissionError

Written in Rust, read in the open

273 stars onGitHub

A single pass turns source into bytecode, with no AST and no IR, and a register VM runs it, lowering each chunk once it runs hot. The engine is about twenty thousand lines of Rust under the Apache licence.

View more

Questions

Is this Python?

Yes, all of it. Your code runs as CPython 3.14 runs it, and the wheels you already install load unchanged, numpy and pandas included, because the engine speaks the same C API they were built against.

What can a program reach?

Only what it is granted. A program touches no file, no network and no environment unless edge.json names it, imports resolve at compile time through the host, and every call checks its scope again while it runs.

Where does it run?

Natively on macOS, Linux and Windows, as one binary edge build makes for any of them, in the browser, and at the edge, from the same engine and the same grants.

How does a package get in?

edge add writes the version into edge.json and edge lock resolves it into an edge.lock beside it, recording the URL and the sha256 digest it resolves to, so a run never asks a registry for a name.

Can I embed the engine?

Yes. It builds as compiler.wasm and as a Rust library, and driving either from your own host needs nothing from anyone, a closed product included. The lang crate, a smaller embedding API over the same engine, is licensed apart.

Not on the list? Ask , or maybe... a human?