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.2.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.2.0
File Size Uploaded Provenance Actions
northcel-0.2.0.tar.gz 135.9 kB Without provenance Details for northcel-0.2.0.tar.gz

Built distribution (wheel)

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

Total release size: 270.6 kB

Release files / northcel-0.2.0.tar.gz

Download URL northcel-0.2.0.tar.gz
Size 135.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3dc808d975cf9c6890ac76456146d476c6a8fe7e9a23603f9fcf0cc23b38216b
BLAKE2b-256 checksum
How to use checksums
2b0beb0db215fb98d5bce7c28897e8ac013d29702a8cc84ca84e4d4c4af67ad4
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.2.0-py3-none-any.whl

Download URL northcel-0.2.0-py3-none-any.whl
Size 134.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
309f65a1aca24bf49f09ba585f620840d904a5509bf492c95784d154f17b408d
BLAKE2b-256 checksum
How to use checksums
61ef4c4be2384bdee6660febe193b94417fbdb52a01db9aa28275ec4f0f1dd70
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.2.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