NGK
NGK is the Nales Geometry Kernel: an experiment in building a geometry kernel around generalized maps, or GMaps.
The project explores how geometric modeling operations can be represented by a combinatorial topological structure first, with geometry attached as payload data. In a GMap, shapes are decomposed into small topological elements called darts. Involutions link those darts across dimensions, so vertices, edges, faces, shells, and higher-dimensional cells are described by traversal through the map rather than by ad hoc mesh records. This makes operations such as sewing, unsewing, extrusion, and cell traversal explicit in the topology, while coordinates and geometric data stay layered on top.
This repository currently contains:
- A Rust kernel under
src/. - Python bindings built with Maturin.
- WebAssembly bindings for browser experiments.
- A React Three Fiber visualization app under
visualization/.
NGK is pre-alpha software. The public API, file compatibility, and modeling coverage will change as the kernel evolves.
Python package
Install the minimal native package with:
pip install ngk
The optional OCP viewer bridge is kept out of the core dependency set. Install
it when you want to display shapes through ocp_vscode:
pip install "ngk[ocp]"
The Python API follows the kernel's domain structure. ngk.modeling exposes
edge, profile, face, sheet, and solid construction and operations: sweep,
revolve, loft, rigid motion, blending, healing, edge splitting, and face and
solid Booleans. Face Booleans and edge splits return one model together with
all result handles. ngk.measurement exposes length, area, volume, centroid,
and inertia. STEP text exchange is available under ngk.exchange.step.
The WASM binding exposes the same modeling, measurement, rigid-motion, and STEP text capabilities. Its browser API uses camel-case exports and omits filesystem-only STEP functions.
from ngk.geometry import Frame, Point, Vector
from ngk.modeling import booleans, solids
from ngk.viz import ocp
frame = Frame.from_xy(
Point(0, 0, 0),
Vector(1, 0, 0),
Vector(0, 1, 0),
)
base = solids.block(40, 30, 20, frame=frame)
tool = solids.cylinder(8, 30)
result = booleans.cut(base, tool)
ocp.show(result)
ngk.viz.debug.show can send objects to the NGK debug viewer, but the viewer is
not bundled with the wheel: start it separately from an NGK checkout before
using that bridge.
The bindings are experimental and the kernel is not yet a complete build123d or OCCT replacement.
Experiments
The visualization playground is published with GitHub Pages:
The NGK Sandbox is published from the same Pages site:
https://jojain.github.io/ngk/sandbox/
It displays small interactive experiments for inspecting generated geometry and topology-backed modeling operations. The app is intentionally a playground: it is useful for trying ideas, checking behavior visually, and making the kernel's internal structures easier to reason about.
Local Development
From the repository root, the Rust checks are:
cargo fmt
cargo clippy --all-targets --all-features
cargo test --all-targets --all-features
To run the visualization app locally:
cd visualization
npm install
npm run dev
See visualization/README.md for details about adding new experiments.
Python releases
Prepare the next version with the repository helper:
uv tool install --editable ./release
bump
To let the tool create the commit and annotated tag from a clean master
checkout, use --release directly:
bump patch --release
git push origin master --follow-tags
The --release command changes Cargo.toml and pyproject.toml, refreshes
uv.lock, commits those files, and creates vX.Y.Z; it never pushes or uploads
to PyPI itself.
Architecture Notes
License
NGK is licensed under the MIT License. See LICENSE.
Metadata
Release files for ngk 0.0.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ngk-0.0.12.tar.gz | 1.5 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| ngk-0.0.12-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| ngk-0.0.12-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| ngk-0.0.12-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| ngk-0.0.12-cp312-abi3-macosx_11_0_arm64.whl | CPython 3.12 | abi3 | macOS 11.0+ ARM64 | Details |
| ngk-0.0.12-cp312-abi3-macosx_10_12_x86_64.whl | CPython 3.12 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 12.1 MB
Release files / ngk-0.0.12.tar.gz
| Download URL | ngk-0.0.12.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3b025091a304a6ab9d406a4c250f9a6a96435a6acee70f76451015d0c486ea6
|
|
BLAKE2b-256 checksum How to use checksums |
d43b9cfb2da6c34d49d9d8511823d6bf47941166563e78305375264fa5f364e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / ngk-0.0.12-cp312-abi3-win_amd64.whl
| Download URL | ngk-0.0.12-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7482a824152aa4014c604d3cc3aed6aa3c4f3459ce86beb3121bf85911397de9
|
|
BLAKE2b-256 checksum How to use checksums |
e07b0e68a4f88a04496fbe75aa20e60682b9a6aa4897d660e31845eab72b430d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / ngk-0.0.12-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | ngk-0.0.12-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c1c90fafa8dce256abd5ab7fa84bf688ee2f555ee01c5b77499cebe621ecca2d
|
|
BLAKE2b-256 checksum How to use checksums |
db4e8e1306a533695c9b8e0e21337b500b583146ccf4ef4d98d04b6fe1cb375d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / ngk-0.0.12-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | ngk-0.0.12-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
59e2dcd6ba7aad53e87104ffd6cc3cb9679e6a5116f2831137f66f722e69e9b9
|
|
BLAKE2b-256 checksum How to use checksums |
4769c4336740be27bb66f6f965d355b307ede1814e8d0c2fd9277301ce188ff5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / ngk-0.0.12-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | ngk-0.0.12-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f33b28266bf24260ce5dc4be6b59513413dce2c8097f494955b4afc1932e13ea
|
|
BLAKE2b-256 checksum How to use checksums |
9005ccb07fd5d115e5fbc31e3d43f24ca3cfbdbef77db3c24fab4d9ad77876e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / ngk-0.0.12-cp312-abi3-macosx_10_12_x86_64.whl
| Download URL | ngk-0.0.12-cp312-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | CPython 3.12 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
62cc0a35bce56057311e9f85460c31bd4ced0db94b55726f074bed4d02899711
|
|
BLAKE2b-256 checksum How to use checksums |
a32392da2a4cd81185258d76bf5b878dbe5189ab806997e561fbd8853d761b96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log