Skip to main content
Universal AI runtime

Install NeuroBrix

One runtime, every model, every chip. Download .nbx models from the Hub and run them anywhere.

Latest stable: v0.6.4 · published 11/9/2026 · upstream notes

pip (recommended)
stable
Python 3.10+. Drops a neurobrix CLI on your $PATH.
pip install neurobrix

Light: the Triton engine, no PyTorch. 1.48 GiB installed.

pip install "neurobrix[pytorch]"

Adds the PyTorch engine (install PyTorch for your hardware first). 6.82 GiB installed.

Sizes measured on a clean python:3.10-slim container, 2026-11-06.

View on PyPI
Standalone ZIP
For air-gapped environments. SHA-256 verified.
Download neurobrix-0.6.4.zip

SHA-256: 929f851573a48969f77c506ee61cfa35a98ab3e12dfbb1c8c353d313275a5c62

Where it runs
Linux, Windows and macOS. NVIDIA, AMD, Intel and Apple GPUs.

Check your machine at any time with neurobrix doctor.

Hardware details: nbxtensor, the library the Triton engine runs on.

On a Mac
Apple silicon: macOS 15+ with Python 3.12, or macOS 14 with Python 3.10–3.13, both through install-metal. An Intel Mac runs on its CPU.
pip install neurobrix
python -m nbxtensor install-metal

PyPI has no Triton for macOS; this installs NeuroBrix's Triton build for Apple GPUs (triton-ext).

Certify your GPU and share it. Kernel settings are certified per GPU class; certify yours and nobody with the same card tunes it again. The four steps in the README.

NeuroBrix 0.6.4 in short
  • 0.6.4: python -m nbxtensor install-metal installs the macOS 14 wheels with Python 3.10–3.13, and the Triton engine runs on macOS 14. The library is nbxtensor 0.0.9.
  • 0.6.4: the first launch with the Triton engine no longer stops on a zero-size constant (Sana 1024's text encoder on a fresh machine with 0.6.3 from PyPI).
  • Known limit: no macOS 14 machine has run this release yet; the evidence is macOS 14's BLAS simulated on a newer macOS, with TinyLlama, whisper and Sana outputs equal, and every Metal kernel of those three models compiled for macOS 14.
  • neurobrix serve keeps a model warm in a daemon and neurobrix chat talks to it. A conversation keeps its KV cache between turns, so each turn prefills only its new tokens; run --turns does the same from the command line.
  • The same daemon answers an OpenAI-compatible HTTP API: serve --http (default 127.0.0.1:8765) serves /v1/models, /v1/chat/completions (streaming, tool calls), /v1/completions, /v1/images/generations, /v1/audio/transcriptions and /v1/audio/speech, each when the model's family has that flow. A parameter the engine does not honour is refused by name, never ignored.
  • Every model has one name, its hub name (TinyLlama/TinyLlama-1.1B-Chat-v1.0), recorded at import.
  • The terminal shows what the user needs (-v / -vv for the rest), and the user-path failures of 0.6.2 are fixed or said in one line.
  • Integrated GPUs are read from what the operating system ships and planned as unified memory; a GPU no backend drives is refused by name and the machine runs on its CPU.
  • A run that meets a device out-of-memory in a component re-plans once and goes on.
  • Known limits: an Intel Mac runs on its CPU (its GPU is not driven); the HTTP API does no constrained decoding and serves no embeddings; a daemon holds one model and one conversation.
  • The Triton engine runs on nbxtensor, Triton and NumPy: PyTorch is no longer a required dependency.
  • pip install neurobrix is the light install; neurobrix[pytorch] adds the PyTorch engine.
  • Kernel settings are certified per launch key and per GPU class, and shipped.
  • Linux, Windows and macOS; NVIDIA, AMD, Intel and Apple GPUs.
  • A first run on a new machine never ends in a Traceback; the documentation says where it runs and how to start.

The full detail follows, from the project's CHANGELOG, for 0.6.4, 0.6.3, 0.6.2, 0.6.1, 0.6.0.

What's new in v0.6.4
via github
Auto-imported from the upstream release page. View on upstream

NeuroBrix 0.6.4

NeuroBrix 0.6.4 is a corrective release of 0.6.3, with nbxtensor 0.0.9.

  • macOS 14 and CPython 3.10–3.13 on Apple GPUs. The macOS 14 Metal wheels (Python 3.10–3.13) are published (triton-ext release); python -m nbxtensor install-metal now selects them: on macOS 14 every covered Python gets the macOS 14 build, and Python 3.12 on macOS 15 or later keeps the macOS 15 build. The Triton engine runs on macOS 14: its CPU pool no longer needs Accelerate's thread API of macOS 15, and python -m nbxtensor doctor says when Accelerate's threads are not controlled (VECLIB_MAXIMUM_THREADS=1, set before Python starts, is the user's choice).
  • A first launch with the Triton engine no longer stops when the reload it times holds a zero-size constant (Sana 1024's text encoder on a fresh machine with 0.6.3).

Known limit: no macOS 14 machine has run this release: the evidence is Accelerate's macOS 14 BLAS simulated on a newer macOS (TinyLlama, whisper and Sana outputs equal by sha) and all 238 Metal kernels of those three models compiled for macOS 14's Metal language (Metal 3.1, -mmacosx-version-min=14.0) without an error.

Install: pip install neurobrix (the Triton engine, no PyTorch) or pip install "neurobrix[pytorch]"; on a Mac, python -m nbxtensor install-metal. The library is nbxtensor 0.0.9.

The full list is in the CHANGELOG.

What's new in v0.6.3

NeuroBrix 0.6.3

NeuroBrix 0.6.3 serves models: neurobrix serve keeps a model warm in a daemon, neurobrix chat talks to it, and the same daemon now answers an OpenAI-compatible HTTP API (serve --http, default 127.0.0.1:8765: /v1/models, /v1/chat/completions with streaming and tool calls, /v1/completions, /v1/images/generations, /v1/audio/transcriptions, /v1/audio/speech). A conversation keeps its KV cache between turns, so each turn prefills only its new tokens (run --turns does the same from the command line). Every model has one name, its hub name (TinyLlama/TinyLlama-1.1B-Chat-v1.0), recorded at import.

The terminal shows what the user needs (-v / -vv for the rest), and the user-path failures of 0.6.2 are fixed or said in one line. Laptops with an integrated GPU are detected from what the operating system ships: an integrated GPU is planned as unified memory, and a GPU no backend drives is refused by name while the machine runs on its CPU. On Apple GPUs, a first run that meets an out-of-memory now re-plans and continues. The macOS 14 Metal wheels (Python 3.10–3.13) are published and install by hand (triton-ext release); install-metal installs macOS 15 / Python 3.12 only, and chooses the macOS 14 wheels from nbxtensor 0.0.9 / engine 0.6.4.

Install: pip install neurobrix (the Triton engine, no PyTorch) or pip install "neurobrix[pytorch]"; on a Mac, python -m nbxtensor install-metal. The library is nbxtensor 0.0.8.

The full list, the fixes and the known limits of this release are in the CHANGELOG.

What's new in v0.6.2

The Apple certified directory is complete under the published Triton build for Apple GPUs: 18 552 kernel settings are certified, among them the settings 0.6.1 left to a first-run tuning, and the arena probe never tunes a kernel. The kernels that compute a model on NVIDIA are 0.6.1's.

Eight Apple kernel settings stay refused by size on an 18 GB Mac (the certifier's synthetic draw and its oracle do not fit beside each other there): Real-ESRGAN x8's fp32 convolution at 8192 x 8192, Sana 4K's VAE convolutions, an RMS norm of 16M x 128 rows, softmaxes of 25M x 1024 and 25M x 256 rows, and one bf16 convolution (48, 192, 480, 832). A model that launches one of them tunes it once at its first run and keeps the setting; of the models the release trial runs, Sana 4K is the one that does.

The Triton arena factor stays declared per hardware family (vendors/family_facts.yml): a measure on a user's machine holds a fixed part and a part proportional to the activations, which one factor does not describe, so no measured factor is written into a profile.

Fixed
  • The kernel certifier prices the size it draws: on a unified-memory device (Apple) a key is drawn at the size its phase price fits, but the door before any draw priced it at its recorded top — the open element-wise class (its label, 68 719 476 736 elements) asked 2.2 TB of an 18 GB Mac and was refused at every re-proof, so a new Mac tuned it once at its first Sana run.
  • The kernel certifier holds only what its oracle reads: a row-windowed oracle (softmax, layer and RMS norms, group norm) reads three windows of rows, but the certifier kept the whole host draw for it and uploaded it again at every call; on a unified-memory Mac the draw and its device copy share one pool, and the largest keys of HAT-L, HAT-S and mochi were refused (20-33 GB asked of 18). The draw is now uploaded once and only its windows' rows stay on the host.
  • The Apple certified directory holds every setting the reference models launch on an 18 GB Mac but eight: the 22 settings the certifier's price refused at its re-proof under the published Triton build for Apple GPUs (0.6.1 tuned them once at a first run) and the second pass's are certified, 18 552 in all, with two of chatterbox's attention settings the census listed in fp32 where its run launches them in bf16.
  • The arena probe never tunes a kernel: run as a tool, it reads only certified kernel settings; a request that would need a setting the directory does not serve is the measure's bound, never a tuning at run time.
What's new in v0.6.1

A first run never ends in a Traceback, the package names none of the project's machines, and the documentation says where NeuroBrix runs and how to start. The kernels that compute a model are 0.6.0's: its final gate is carried, and five reference models through the entry point give the same outputs; what changed is how a new machine starts (its first-run measures, its arena factor, its home), what the packages carry, and Windows.

The Apple certified directory is proven again under the published Triton build for Apple GPUs (18 352 kernel settings);

Changed
  • The README and the documentation say where it runs and how to start: Linux, Windows and macOS; on a Mac, NeuroBrix's Triton build for Apple GPUs (NeuroBrix/triton-ext); every neurobrix import example carries --accept-license, which the import asks of a model with a license (the README's first run stopped there).
Fixed
  • A first run on a new machine never ends in a Traceback because its arena probe ran out of memory: the first launch measures the Triton arena's hold on the cache's smallest model by doubling its request while a prediction says the next fits; on an Apple GPU the prediction let a request through that the device could not hold, the probe's process ran out of memory, and its error came back as the interpreter's shutdown noise ("UNEXPECTED ERROR" at the first neurobrix run). The device's refusal is now the measure's bound (the largest request that fitted is kept), and the probe's own error is said by name.
  • A new machine's first run does not measure the Triton arena: the first launch probed what the Triton arena holds over a component's activations on the cache's smallest model, and that probe scaled its inputs unlike the request Prism prices: on a fresh Mac it measured 28 where the machine's value is about 1.5, so Prism reserved some 19 times the activation memory, and once corrected it still depended on the model imported (2.4 on a VAE) and swept uncertified kernels for 40 minutes. The factor is now declared — by the device's vendor file, else by its family (Apple 1.477, measured on an M4 Pro; NVIDIA 1.35, measured on Volta; AMD and Intel the NVIDIA value until measured) — and a first run never probes it; a value an earlier first launch wrote into a profile is no longer read. The probe scales only what the priced request scales (a tool, until it is bounded to certified shapes).
  • A run starts on Windows: the plan's resident term is read from the process's working set (GetProcessMemoryInfo) where it needed /proc or libproc, and a first-launch read-rate measure Windows cannot make (no way to read past its page cache) is declared unmeasured and the run reads serially, said on its launch line. Written and tested with Windows simulated: the project has no Windows machine yet.
  • Text in UTF-8 on every platform: a generated text written to a file, the vendor tokenizer files read at load, the agent's file edits and transcript, and the console output now use UTF-8 where the platform's default code page is another (Windows' cp1252: a wrong vocabulary read silently, or a run ended by UnicodeEncodeError); a debug dump's file name drops every character a file name refuses on some system; a stale install lock is asked of the kernel on Windows instead of signalling the process (signal 0 is Ctrl+C there).
  • The engine depends on nbxtensor 0.0.5: a certified setting the library does not serve says why (another code generator, or another memory class).
  • A configured home is followed everywhere: with NEUROBRIX_HOME set, the replay cache, the license acceptances, the hardware profiles, the calibration records, the render checkpoints and the serving daemon's files still went to ~/.neurobrix; they now follow the configured home.
  • neurobrix doctor on a Mac without PyTorch told the user to pick a CUDA build of PyTorch; it now says pip install torch, PyTorch's own macOS wheel.
  • The package names none of the project's machines: the snapshots root it shipped was a path of the project's own machine (wrong on every other machine) and is now ~/hf_snapshots (NEUROBRIX_HF_SNAPSHOTS overrides it); the census input records name the files they read relative to the engine's home (home:) instead of a user's home directory; the certified directory's proofs no longer record the host name of the machine that certified them (85 723 removed, and the certifier no longer writes it).
  • A first run on a busy storage is never a Traceback: at its first launch the engine measures how many parallel reads the machine's model cache serves best; where no stable read rate was found (a storage another reader was using — a clean container whose cache was a network mount), the run ended in "UNEXPECTED ERROR: ZERO FALLBACK: no stable read-rate measure" and a Traceback. The run now reads serially, its launch line says so ("io workers: 1 for this run — ...; measured again at the next run"), and the profile keeps no count, so the next run measures again.

Install: pip install neurobrix — the Triton engine, no PyTorch. With the PyTorch engine as well: the PyTorch build for your hardware, then pip install "neurobrix[pytorch]". On an Apple-silicon Mac (macOS 15 or later, Python 3.12): pip install neurobrix, then python -m nbxtensor install-metal. neurobrix doctor says what each engine needs on your machine.

What's new in v0.6.0

The release that moves NeuroBrix's Triton engine onto nbxtensor (0.0.4). Its final gate ran the 49 catalogue models through the entry point in both engines on both V100 card classes, every output judged by eye and every time in the gate register; that gate is this release's benchmark, per model. In short:

  • The Triton engine imports nbxtensor, not PyTorch: --triton runs on nbxtensor, Triton and NumPy, and PyTorch is no longer a required dependency; the engine, the library and five reference models run in an environment where torch is not installed, with no attempt to import it.
  • Every kernel setting is certified per launch key and per card class: the keys a model forms are derived from its graph without running it, certified once against a float64 oracle, and served certified-only — a missing key is an error naming its census row, never a sweep in the middle of a run.
  • The V100's tensor cores (m8n8k4) carry the matrix products where certified faster: GEMMs, the mixture-of-experts prefill projections, fp32 1 x 1 convolutions and transposed 1-D convolutions.
  • The replay fixes: a replayed component returns its views in order, a long video's encoding no longer runs the card out of memory at its replay, a replay plan recorded against an old KV cache is retired, a layer-streamed piece that frees its inputs is not replayed, and the replay's check says what it observed — a match with the normal path on one step, not a proof of the output.
  • Apple Metal on the Triton engine: nbxtensor's Metal driver runs the engine on Apple GPUs, with its own certified directory and a vendor file of measured facts (the conv3d workspace, the arena factor, the reload rate); Triton for Metal is installed by python -m nbxtensor install-metal (nbxtensor 0.0.4).
  • The TilingEngine cuts only where the graph proves the cut exact, refuses what it cannot place instead of falling back, and no longer reads host switches.
  • The light install runs as installed: pip install neurobrix is the Triton engine alone (1.48 GiB installed), pip install "neurobrix[pytorch]" adds the PyTorch engine; a run with no mode flag takes the engine that is installed and says which on its launch line.
  • Prism plans from the machine's facts: the hardware profile and vendor files carry what it prices (measured reserves, reload rates, workspaces), a busy machine is re-planned on the memory really free with a clear warning, and a model is refused from one place only when no plan fits.
  • Prism prices a PyTorch-engine load as the loader performs it: one tensor at a time per worker, the pinned host cache emptied after each component, a host-held component loaded unpinned then copied into one registered block — where it priced every component read and pinned whole (Qwen3-Coder-30B: 115 GB of loading priced, 62.5 GB measured).
  • Certify your GPU and share it: the README's four steps and the certificate pull request template.
  • AMD and Intel GPUs in the Triton engine (nbxtensor's HIP and Level Zero drivers, written, not yet run on a card): vendor files for AMD CDNA4, RDNA3 and RDNA4 and Intel Data Center GPU Max, Arc A and B and Lunar Lake, and neurobrix doctor names, for every GPU on the PCI bus, the runtime library and Triton backend it lacks and the vendor's commands that install them.

Install: pip install neurobrix — the Triton engine, no PyTorch (1.48 GiB installed on a clean python:3.10-slim). With the PyTorch engine as well: the PyTorch build for your hardware, then pip install "neurobrix[pytorch]" (6.82 GiB with torch 2.14.1+cu126). On an Apple-silicon Mac (macOS 15 or later, Python 3.12): pip install neurobrix, then python -m nbxtensor install-metal, which installs Triton for Metal from NeuroBrix/triton-ext (the AppleGPU backend by imperatormk, triton-lang/triton-ext#126). neurobrix doctor says what each engine needs on your machine.

The full list of changes (75 added, 97 changed, 2 removed, 330 fixed) is in the changelog.

NeuroBrix GUI
Coming soon
Cross-platform desktop app for Windows, macOS, Linux. Drag and drop a .nbx, run it locally — no terminal required.

Quick start

# 1. install
pip install neurobrix

# 2. import a model from the hub
neurobrix import NVlabs/Sana-1600M-MultiLing

# 3. serve it locally
neurobrix serve --model NVlabs/Sana-1600M-MultiLing

# 4. or run a one-shot inference
neurobrix run --model NVlabs/Sana-1600M-MultiLing --prompt "a cyberpunk cat"

Full reference at docs.neurobrix.org.

Also from NeuroBrix: nbxtensor, the torch-free tensor library for inference (pip install nbxtensor). Release notes.

Release history

All 22 versions auto-mirrored from GitHub, GitLab, and PyPI. Each entry carries the upstream release notes when available.

  • NeuroBrix 0.6.4

    NeuroBrix 0.6.4 is a corrective release of 0.6.3, with nbxtensor 0.0.9.

    • macOS 14 and CPython 3.10–3.13 on Apple GPUs. The macOS 14 Metal wheels (Python 3.10–3.13) are published (triton-ext release); python -m nbxtensor install-metal now selects them: on macOS 14 every covered Python gets the macOS 14 build, and Python 3.12 on macOS 15 or later keeps the macOS 15 build. The Triton engine runs on macOS 14: its CPU pool no longer needs Accelerate's thread API of macOS 15, and python -m nbxtensor doctor says when Accelerate's threads are not controlled (VECLIB_MAXIMUM_THREADS=1, set before Python starts, is the user's choice).
    • A first launch with the Triton engine no longer stops when the reload it times holds a zero-size constant (Sana 1024's text encoder on a fresh machine with 0.6.3).

    Known limit: no macOS 14 machine has run this release: the evidence is Accelerate's macOS 14 BLAS simulated on a newer macOS (TinyLlama, whisper and Sana outputs equal by sha) and all 238 Metal kernels of those three models compiled for macOS 14's Metal language (Metal 3.1, -mmacosx-version-min=14.0) without an error.

    Install: pip install neurobrix (the Triton engine, no PyTorch) or pip install "neurobrix[pytorch]"; on a Mac, python -m nbxtensor install-metal. The library is nbxtensor 0.0.9.

    The full list is in the CHANGELOG.