Hi ICP community!
My name is Jose and I wanted to share Basilisk, a Python CDK for the Internet Computer. These are the main highlights:
-
It runs CPython 3.13 — as opposed to Kybra which runs on RustPython — compiled to WASM. This means faster and cheaper applications, smaller WASMs and faster build times.
-
Standard library — As close to the full CPython standard library as the IC architecture allows. Modules like
os,json,re,datetime,hashlib,collectionswork out of the box. -
Remote shell — Execute Python on a live canister, on-chain and without redeploying.
-
Data introspection — Read-only query API to inspect your canister’s data.
-
Persistent filesystem — A simple file system (with limitations, waiting for the WASI filesystem interfaces expected from the upcoming Wasm Component Model support on ICP).
Optionally, basilisk users can add Basilisk Toolkit which includes out-of-the-box:
-
A persistent ORM (ic-python-db) — typed entities with properties, relationships, and versioning.
-
Schema upgrade safety — Motoko-like upgrade protection with pre-deploy CLI and on-chain enforcement in
post_upgradetraps that atomically rolls back if a breaking change is deployed without migration, preventing data loss. -
Task scheduling — run code at specific times and/or periodically.
-
Encryption — convenient use of vetKeys to encrypt data fields, manage per-user keys and group-based access control.
-
ICRC-1 wallet — conveniently manage any ICRC-1 token from the shell or code.
-
An interactive Python shell / REPL
-
SSH/SFTP into your canister’s filesystem — transfer files conveniently.
You can see two deployable full-stack templates at https://ic-basilisk.tech/.
I built Basilisk because I needed more performance and compatibility than what was available to build some serious projects on the IC.
I hope to get some interest from the dev community. Feel free to reach me if you have questions!