Skip to main content

aion-engine

Python bindings for Aion — a graph-IR tensor runtime with a Zig core, CPU and GPU. The distribution is aion-engine; the import name is aion.

Install

pip install aion-engine          # CPU
pip install aion-engine[gpu]     # + the GPU (wgpu) runtime

Prebuilt wheels for CPython 3.12/3.13 on Windows x64, Linux x86_64/aarch64 and macOS arm64/x86_64 — no Zig or C toolchain needed. The Aion runtime is static-linked into the extension module, so there is no separate aion.dll/libaion.so to ship or locate.

The GPU backend is compiled into those same wheels but links no wgpu — it dlopens wgpu-native at runtime. [gpu] adds the companion aion-wgpu wheel, which ships that library for every platform the runtime wheels target. Without it, GPU calls raise aion.AionError and CPU is unaffected.

NumPy is optional ([numpy] extra); without it use tensor.tolist() / tensor.item().

Run a model

A .aion file carries graph, weights and metadata, so this is the whole setup:

import aion, numpy as np

model = aion.load_model("model.aion")              # device="gpu" to run on GPU
out = model.run_numpy({"x": np.zeros((1, 4), "f4")})["y"]

In hot loops, bind tensors once (model.bind_input(name, t) + model.run()) instead of creating temporaries per step. KV caches and streaming state are managed by the runtime from the model's input roles — you don't thread them through Python (load_model(..., cache_capacity=, growable=) tunes it).

Build a model

Two handles, and they don't mix. aion.Tensor is data: what you write inputs into, read outputs from, and hand a layer as a weight. aion.TensorRef is a value in a graph: what ops and aion.nn layers take and return.

import aion, numpy as np
from aion import nn

ctx = aion.Context()
w = aion.tensor(np.random.randn(4, 3).astype("f4"))   # data

with aion.Builder(ctx) as b:
    x = b.input((1, 4)).rename("x")                   # TensorRef
    y = nn.Linear(w)(x).relu().rename("y")
    model = b.compile([y])

out = model.run_numpy({"x": np.ones((1, 4), "f4")})["y"]

For a reusable module, aion.compile(MyModule(), aion.spec((None, 4))) traces forward once (None = dynamic axis) and aion.export(..., "mlp.aion") writes the package. compile works on a copy of the graph, so authoring survives it: you can compile twice, and print(y) / y.numpy() evaluates just that value's cone while you keep building.

dtype takes Aion constants (aion.float32, float16, int8, int32, q8_0, q4_0) or NumPy dtypes — not strings.

GPU

ctx = aion.Context.gpu()                                  # first discrete adapter
model = aion.LoadedModel.load(ctx, "model.aion", device="gpu")

Keep feeding CPU input tensors: the model migrates them on run() and flushes outputs back for reading. A standalone tensor.to("gpu") is a move — the host copy is freed, so to("cpu") before reading it. device="gpu:1" (or adapter_index=) picks a physical adapter, power="low"/"high" picks integrated/discrete, and Context(gpus=[...]) registers several.

Examples

Runnable scripts in bindings/python/examples/, all taking --device {cpu,gpu,auto}:

silero_vad_simple.py chunked VAD, reports throughput
harrier_embed.py text embeddings, ranks documents against a query
nemotron_asr_streaming.py, nemotron_asr_mic.py streaming ASR from a wav or the mic
gemma4_e2b_generate_one.py LLM token generation

Models are produced by the converters in scripts/.

Developing from a checkout

uv sync        # environment + native build (dev group: numpy, torch, pytest, aion-wgpu)
uv run pytest

uv run rebuilds and relinks the extension when the Zig core changes — the uv cache key covers src/**/*.zig, the public headers and the build files. uv sync --reinstall-package aion-engine forces a rebuild.

Build knobs: AION_PY_OPTIMIZE (default ReleaseFast), AION_PY_CPU (native), AION_PY_TARGET, AION_PY_GPU (overrides [tool.aion] gpu in pyproject.toml). Building from source needs Zig on PATH plus a C toolchain.

Notes: prefer with for deterministic cleanup (Context.close() closes live tensors/models first); AION_DEFAULT_THREAD_COUNT sets the default context's thread count, and aion.reset_default_context() re-reads it.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

aion_engine-0.0.1-cp313-cp313-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows x86-64

aion_engine-0.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

aion_engine-0.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

aion_engine-0.0.1-cp313-cp313-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

aion_engine-0.0.1-cp312-cp312-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows x86-64

aion_engine-0.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

aion_engine-0.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

aion_engine-0.0.1-cp312-cp312-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file aion_engine-0.0.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e1e6e14e0639efb8f0da3f92da744b6ac6a7b48bbd8cab5f78c889747a209238
MD5 de73998b42f84df828acceeea89444fd
BLAKE2b-256 fda6276a419fcfbbf85688ac3e198032b32adf75145bc957f227705b88a52f35

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 779be2ed9898421360bf79659366c3c97aad37bd9f9a77d26d1b94950e4536f5
MD5 f7af34370e7aebeed2054ea22255b486
BLAKE2b-256 1dc058f0e53cbd864d6dfb2c0f80711c1e5b66e835634548a4672d2d23034bd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 282dd28056e05cbe6039249b14299ac07e440e08f67a01e6e03c34cc53fb96d7
MD5 c4811fff32021f42401e774dfc32bf81
BLAKE2b-256 bbe9ddd393230edbb60edae127c6d9f77883e40453bf65c147b5037fb945f8fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af2561083202a4be587f797b89d443e0c4e138f7143474cec7ef00eede9ef652
MD5 01d0eb919054f2cb3f34fe1240511767
BLAKE2b-256 1791dc639037deaf46801ad528c050b0fafdd3b788151521a425a42dd1263ded

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 13528be2a8c4b5a1e942767bab647f286ce3311717df94f3ca3454a7201675a6
MD5 9f26fe9763559e2395907ff22b134874
BLAKE2b-256 19a3af30acb4af8d8a67a4463ef86db3dffb4880ab117853da717267684d96e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6d66c25b8d90af8e1077049b9caf8d4edece3b3d7c2cedd146b9942795a02a0a
MD5 b2f9f79bb51b5822d5313f10fedca8f4
BLAKE2b-256 8288d0816f8d2808dbe9f0bcc1b2987bec25d70125a5df51fabe5dc3e988576e

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 999e02721471105ade6d61949359640b7e7da71da625dba33e621ebf491f2d02
MD5 85913856553380cce6a9466b3c54de96
BLAKE2b-256 f40c9d46227bb96fbb58e757a6d94e87b660f9336c2c40df6dc1222079162643

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aion_engine-0.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aion_engine-0.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8805ecb9d24437c41e908dc3eecd599b42438a3860b54daadec5b9bb0835ad1d
MD5 783390d3d0ccb000de805974bbda7e31
BLAKE2b-256 3476bf02cbe0618614ac05ca3c77a49383bdd2fb7ddbb5f0c91a6813e1d1c6e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aion_engine-0.0.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on RubyBit/aion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.0.2

8 files

This release

0.0.1 This release

8 files

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