Skip to main content

northcel — The AI-Drawn Video Programming Language (.ncel)

NorthCel (.ncel) is North Noir's domain-specific programming language for AI-drawn images and frame-by-frame animation.

It combines the best properties of three complementary execution models into a single compact, deterministic format:

  1. MoonBit-style typed, declarative scene structure — algebraic scene layers (paper, def/use, layer/wash, stroke, ribbon, bend_swarm), compact relative contour encodings (0.25px quarter-pixel deltas and 1px Base-63 deltas), and strict line:column diagnostics that an AI coding agent can read and fix.
  2. Bend-style deterministic parallel evaluation — repetitive organic marks (water droplets, beard bristles, wet hair strands, rain streaks, and line boil) are modeled as stateless agents whose output is a pure function of (seed, frame_index, agent_id), independent of evaluation order.
  3. GLSL-style per-pixel supersampled rendering — every frame is a pure function of (time, seed, coordinates) evaluated with even-odd winding parity on an N×N subpixel grid (default 4×4, i.e., 0.25px resolution) and box-integrated to 8-bit RGB/greyscale.

The reference implementation in this package (northcel) is a pure-Python + NumPy renderer requiring no GPU or external language compilers at user install time. MoonBit, Bend, and OpenGL/EGL GLSL remain optional documented backends.

Install

pipx install northcel
# or
pip install northcel

Both northcel and the short alias ncel are installed on your PATH.

CLI Commands

northcel check scene.ncel [--json]          # Parse and validate with line:column diagnostics
northcel fmt scene.ncel [-w] [--check]      # Canonical formatter
northcel info scene.ncel                    # JSON summary of layers, rings, vertices, and bytes
northcel render scene.ncel -o frame0.png    # Render a single frame (--frame N, --seed S)
northcel film film.ncel -o frames/ --mp4 out.mp4  # Render frame sequence + optional MP4 via ffmpeg

Example (lantern_film.ncel)

northcel "0.1.0-draft"

film LanternFilm(width: 512, height: 512, fps: 12, frames: 6, precision: 0.25px, seed: 108) {
  paper { color: #101824, antialias_grid: 4, grain: 0.012 }

  def SeaWave(dx: 0, dy: 0) {
    stroke crest(color: #6CCFF6, taper: (4.5, 1.5), boil: 0.75px) {
      (40 + dx, 410 + dy), (180 + dx, 398 + dy), (330 + dx, 412 + dy), (470 + dx, 402 + dy)
    }
  }

  layer sea_base(color: #1B3B5A, rings: 1) { "0,1520 2048,0 0,528 -2048,0" }
  layer lantern_halo(color: #F4A261, rings: 1, boil: 0.6px, translate: (sin(t * 6.28318) * 14, 0)) {
    "920,640 208,0 40,120 -40,120 -208,0 -40,-120"
  }
  ribbon post_ink(color: #F8F9FA, boil: 0.4px) {
    (256, 480, 12), (256 + sin(t * 6.28318) * 6, 320, 9), (256 + sin(t * 6.28318) * 14, 190, 6)
  }
  bend_swarm rain_streaks(agents: 4, color: #E0FBFC, boil: 0.35px, translate: (lerp(-18, 18, t), lerp(0, 48, t))) {
    "320,240 24,72 -8,4 -24,-72|840,300 24,72 -8,4 -24,-72|1420,220 24,72 -8,4 -24,-72|1760,340 24,72 -8,4 -24,-72"
  }

  use SeaWave(dx: sin(t * 6.28318) * 10, dy: 0)
  use SeaWave(dx: cos(t * 6.28318) * -12, dy: 42)
}

Documentation

Full language specification (0.1.0-draft), AI-agent guide, benchmarks, and tutorials live at:

Metadata

Release files for northcel 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for northcel 0.1.0
File Size Uploaded Provenance Actions
northcel-0.1.0.tar.gz 131.1 kB Without provenance Details for northcel-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for northcel 0.1.0
File Interpreter ABI Platform Actions
northcel-0.1.0-py3-none-any.whl Python 3 none any Details for northcel-0.1.0-py3-none-any.whl

Total release size: 261.7 kB

Release files / northcel-0.1.0.tar.gz

Download URL northcel-0.1.0.tar.gz
Size 131.1 kB
Tags Source
SHA-256 checksum
How to use checksums
fc5fdd8517298f998928405d65bcf0c28a062c48c461d460230364a05c4d2dca
BLAKE2b-256 checksum
How to use checksums
001e30391adfc064ea4f7682e52fc1c5770349d0f3466db016b65c48c15f3089
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.1.0-py3-none-any.whl

Download URL northcel-0.1.0-py3-none-any.whl
Size 130.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4990497a3041b6ab8dbd8494000752c6ef84c521ad7b25ab1c958e9fa738cb29
BLAKE2b-256 checksum
How to use checksums
0b7d046d867b3ef3e7b5ea1b17121d2facf4a9143bb567fc4e5dd5f4774f27c5
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.1.0

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page