northcel — the reference implementation and the one-command CLI
This directory is one Python distribution: the normative reference implementation (parser, semantic validator, formatter, CPU renderer) and the launcher that runs the native runtime whenever the platform supports it.
pip install northcel # installs this package + the northcel-native bundle
northcel doctor # stages, exact versions, platform verdict
northcel verify # real renders + determinism, from bundled fixtures
ncel doctor # short alias, same program
Two implementations, one command
northcel dispatches, in this order:
- Native runtime — MoonBit parses the typed scene/film AST, decodes every
contour chain, expands
def/use, applies frame deltas and the deterministic boil hash; Bend 0.2.38 / HVM 2.0.22 evaluates everybend_swarmagent; GLSL 4.30, compiled by the Mesa/EGL driver (llvmpipe, no GPU), rasterises the normativeaa×aaeven-odd integration. - Python reference — this package's own renderer, used only where the native
stages cannot run. It prints one line to stderr and labels the result
python-reference. Nothing is ever silently substituted. checkonly: the zero-dependency JS pre-check in the npm package, clearly labelledPARTIAL. It never reports a document as valid.
Install and use
pip install northcel
northcel render scene.ncel -o frame.png --frame 0 --json
northcel film film.ncel -o out/ --frames 0..5 --mp4 out.mp4 --json
northcel check scene.ncel --json
northcel info scene.ncel --json
northcel fmt scene.ncel --check
northcel guide # offline authoring guide
northcel doctor --json # machine-readable stage report
northcel toolchain status|install # MoonBit compiler, only needed to rebuild
--json receipts from the native runtime include language, northcel_version,
spec_version, size/fps/frames, source bytes, per-frame sha256, stage timings,
geometry, swarm counts and "stage": "MoonBit+Bend+GLSL".
Platforms
Supported natively today: Linux x86_64, glibc ≥ 2.39, Mesa libegl1 +
libgl1 + mesa-libgallium (Ubuntu 24.04+, Debian 13, Fedora 40+, RHEL 10).
Everything else installs and is honest: macOS (Apple's OpenGL caps at 4.1; the
4.30 shader cannot compile there — macOS needs Vulkan/MoltenVK or a tested GL 4.1
path), Windows and non-x86_64 Linux get northcel doctor exit 3 with the exact
reason, and render/film/check run the Python reference, marked
python-reference — never "native".
What doctor prints
northcel 0.3.1 (native runtime 0.2.0, spec 0.2.0-draft, native)
platform linux-x86_64 glibc 2.39
supported yes
native 0.2.0 (bundle checksums 13 verified, stage MoonBit+Bend+GLSL)
MoonBit stage present: yes binary ncel-ast compiled with MoonBit 0.1.20261102 (ea07287 2026-11-02)
Bend bend-lang 0.2.38 …/bin/bend
HVM2 hvm 2.0.22 …/bin/hvm
GL runtime 4.5 (Core Profile) Mesa 25.2.8 llvmpipe (LLVM 20.1.2, 256 bits) GLSL 4.50
GLSL draw430 14829a3cbb6c… compiles draw410 fe4d0c4fe4e0… compiles
ffmpeg present (optional, --mp4)
What verify proves
- a starter scene renders to a 320×180 PNG;
- the shower
f0001frame reproduces the pinned conformance hash (be0eb036…), which the Python reference reproduces pixel-for-pixel; - a 6-frame film renders 6 distinct frames;
- both renders repeat with identical sha256 (determinism).
Toolchain notes
A runtime needs no downloads: the MoonBit-compiled stage, Bend and HVM2 ship inside
northcel-native, with every file sha256-pinned in bundle-manifest.json and
checked against native/toolchain.lock. The MoonBit compiler (101 MB) is only
needed to rebuild the native tree — northcel toolchain install fetches and
verifies it into ~/.local/share/ncel/toolchain (the directory name is historical).
GLSL is not installed; it is compiled by the GL driver. That is why the installer
provisions the Mesa/EGL runtime, and why doctor compiles and links both
shaders as proof.
Python API
from northcel import parse_ncel, validate_document, format_document
from northcel.renderer import render_document_frame, render_film_frames
doc = parse_ncel(open("scene.ncel").read())
print([d.format() for d in validate_document(doc) if d.level == "error"])
rgb = render_document_frame(doc, frame_index=0) # numpy uint8 (H, W, 3)
Uninstall
pip uninstall northcel northcel-native
rm -rf ~/.local/share/ncel # only if you ran `northcel toolchain install`
Licence
Dual licensed under MIT OR Apache-2.0 — see LICENSE-MIT and LICENSE-APACHE in
the repository root.
Metadata
Release files for northcel 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| northcel-0.3.1.tar.gz | 164.4 kB | Without provenance | Details for northcel-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| northcel-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for northcel-0.3.1-py3-none-any.whl |
Total release size: 330.0 kB
Release files / northcel-0.3.1.tar.gz
| Download URL | northcel-0.3.1.tar.gz |
|---|---|
| Size | 164.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57a90003b005864bdf033d686a89b33a3577a81be623a8ca4b6388c9566aeca5
|
|
BLAKE2b-256 checksum How to use checksums |
0fc56642d40caa9df78d2addbafc42faa1a96722fd17d79833d1b86de2d56a0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / northcel-0.3.1-py3-none-any.whl
| Download URL | northcel-0.3.1-py3-none-any.whl |
|---|---|
| Size | 165.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
836e36f66c907317f0f6da44bb5eae0101ce0e8af652b3b36a369ef9b3b5afd8
|
|
BLAKE2b-256 checksum How to use checksums |
4273fdf9b97744d36a60c98cd2d139842a9dba5713ce97fe271fc193edc9f523
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for northcel 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.