kiwi is a tiny k-like array language implementation that can lower to mlx and webgpu.
Download CLI binaries for macOS and Linux from GitHub Releases.
Apple apps for iOS, iPadOS, macOS, and watchOS are available on the App Store.
Try Kiwi in the browser at kiwilang.com/repl.
With the CLI installed:
kiwi
kiwi path/to/file.kRunning kiwi without a file starts the local REPL.
The Jupyter kernel lives in python/jupyter/. It uses the shared
libkiwi_bridge session API and can display Vega-Lite output emitted as JSON
through Kiwi's `j@ encoder.
In a fresh public checkout, bootstrap MLX first with
KIWI_MLX_BACKEND=cpu scripts/bootstrap_deps.sh unless .deps/mlx and
.deps/mlx-c already exist.
cd python/jupyter
uv sync --managed-python --python 3.14.2 --group dev
uv run --managed-python python -m kiwi_jupyter_kernel.install --user- Zig on
PATHorZIG_BINset explicitly - CMake for MLX dependency builds
- a supported host toolchain for Zig and MLX
Build the standalone host CLI:
scripts/bootstrap_duckdb.sh
zig build -Dpublic-cli=true -Druntime-backend=host -Dstrip-instrumentation=true -Doptimize=ReleaseFastBootstrap MLX and build with the native MLX backend:
KIWI_MLX_BACKEND=cpu scripts/bootstrap_deps.sh
zig build -Druntime-backend=mlxscripts/bootstrap_deps.sh now also bootstraps a repo-local DuckDB into
.deps/duckdb. Host-matching builds prefer that install automatically so
DuckDB-backed CSV, Parquet, and HTTP(S) scans work without runtime extension
installation.
Pinned dependency revisions live in deps.lock.toml.
See THIRD_PARTY_NOTICES.md for dependency notices.