Releases: lykuroai/engine
Release list
v1.0.6 — Lykuro Native Inference Engine (pre-release)
v1.0.6 (2026-08-15)
First-request latency and download integrity
- Model load 16.9s → 3.0s for Qwen2.5-1.5B on an M4 Pro (43.9s → ~18s on a Linux/CUDA host without SHA-NI): the CPU reference build and its CPU smoke forward are skipped when a GPU backend serves (the backend's own pre-warm is the smoke inference), Metal/CUDA weight conversion + quantization + upload runs on a thread pool, and the in-tree SHA-256 gains hardware compression (ARMv8 SHA2 / x86 SHA-NI with runtime dispatch) for multi-GB artifact digest verification.
LYKURO_LOAD_PROF=1prints the load-phase breakdown. pullverifies downloads against the upstream SHA-256 (Hugging Face'sx-linked-etag, the LFS object hash) before conversion. A silently corrupted download previously produced an artifact that generated garbage yet passed every load-time check — the artifact's own checksums are derived from the downloaded bytes. A mismatch now fails the pull loudly.
See docs/RELEASE_NOTES.md for full notes. Same pre-release caveats as v1.0.0 (unsigned macOS binaries pending Developer ID enrollment).
Downloads (SHA-256)
| File | Platform / backend | SHA-256 |
|---|---|---|
lykuro-native-engine-macos-arm64 |
macOS Apple Silicon, Metal (single binary, ad-hoc signed) | 50fa2accdb084a612b876d40d9fbf50c02ef5e92b42c4f9c61e4728299231bac |
lykuro-native-engine-macos-metal-1.0.6.tar.gz |
macOS Apple Silicon, Metal (full package) | fcfc2c957fac16f49910154cea82ecdd81d150ee8345b8f9ec0dbd122fd3f127 |
lykuro-native-engine-linux-cuda-1.0.6.tar.gz |
Linux x86_64 + NVIDIA CUDA (full package) | bbe7c4e0b87e22066ba7a01b9955fbc5874b0df4dadc5eb952cbb5e94132f2b2 |
lykuro-native-engine-linux-amd64 |
Linux x86_64, CPU (single binary) | fca3834b353f2f65db5fc51e9d5b36d120588fe65d7ddd19492452e545522d1b |
lykuro-native-engine-linux-arm64 |
Linux aarch64, CPU (single binary) | f87fbc513093a5b712b9df472f380a2ea4ff5efcc82c9ace976f9968252306d4 |
Runtime requirements: Linux binaries need glibc + system OpenSSL (CUDA package additionally needs the NVIDIA driver/CUDA runtime); macOS binaries need Apple Silicon (arm64) and are ad-hoc signed — browser downloads need xattr -d com.apple.quarantine once.
v1.0.5 — Lykuro Native Inference Engine (pre-release)
v1.0.5 (2026-08-15)
Model-name consistency across every surface
native-engine list,GET /api/tagsandGET /v1/modelsnow report the canonical HF repo id (Qwen/Qwen2.5-0.5B-Instruct) instead of the local directory name, so the listed name is byte-identical to whatpullandruntake.pullrecords the repo id in asource_reposidecar; without one it is derived from the directory name (HF owner names cannot contain_), and a name is only displayed if it resolves back to the same artifact. Directory-name input (Qwen_Qwen2.5-0.5B-Instruct) keeps working everywhere.pull(CLI andPOST /api/pull) treats an already-local model as a no-op success, Ollama-style — previously feeding a listed name back to pull failed with "invalid repo id", which broke UIs that pull the models they listed.
See docs/RELEASE_NOTES.md for full notes (v1.0.4 carried the GPU decode overhaul: Metal 485 tok/s / CUDA 434 tok/s on Qwen2.5-0.5B, ahead of MLX and Ollama). Same pre-release caveats as v1.0.0 (unsigned macOS binaries pending Developer ID enrollment).
Downloads (SHA-256)
| File | Platform / backend | SHA-256 |
|---|---|---|
lykuro-native-engine-macos-arm64 |
macOS Apple Silicon, Metal (single binary, ad-hoc signed) | 1eb9602e461d243a072480f1fdb9a68a4006a24426b2e84043fd9751cf51cda6 |
lykuro-native-engine-macos-metal-1.0.5.tar.gz |
macOS Apple Silicon, Metal (full package) | b0c631eac208a71559ee304f1501fd50bc00881e6420c8e6cee3c57a052c5e94 |
lykuro-native-engine-linux-cuda-1.0.5.tar.gz |
Linux x86_64 + NVIDIA CUDA (full package) | cfe05e651e9a2cf6e4c1f600aac33a7153f2dc8a2e3e9a566701532750a9c343 |
lykuro-native-engine-linux-amd64 |
Linux x86_64, CPU (single binary) | 57a573076be09b2584f23985d34cea934cdff50867f848e253755fe786692760 |
lykuro-native-engine-linux-arm64 |
Linux aarch64, CPU (single binary) | 7df46b3df68584458e3601b95bca46480d0a953d4c4d6becdb76c419b035db27 |
Runtime requirements: Linux binaries need glibc + system OpenSSL (CUDA package additionally needs the NVIDIA driver/CUDA runtime); macOS binaries need Apple Silicon (arm64) and are ad-hoc signed — browser downloads need xattr -d com.apple.quarantine once.
v1.0.4 — Lykuro Native Inference Engine (pre-release)
v1.0.4 (2026-08-15)
GPU decode overhaul — ahead of MLX (Metal) and Ollama (Metal & CUDA)
Metal (Apple Silicon) — greedy generation now runs up to 16 speculative steps per command buffer with on-GPU argmax + embedding gather, one batch always committed ahead of the one being consumed; attention switches to split-row flash decoding (fixed-order merge, deterministic). M4 Pro, 256-token generations, client-side measurement:
| Model | This engine (metal-q4) | MLX 4bit (self-reported) | Ollama 0.32.5 q4_K_M |
|---|---|---|---|
| Qwen2.5-0.5B | 485 tok/s, TTFT 37 ms | 441 tok/s | 246 tok/s, 103 ms |
| Qwen2.5-1.5B | 210 tok/s, TTFT 89 ms | 214 tok/s | 154 tok/s, 101 ms |
CUDA (Linux) — vectorized 8-wide weight loads (per-element nibble reads were an 8x DRAM amplification), warp-per-row B=1 GEMV kernels with shared-memory activations, a quantized lm head in the quantized modes, and GreedyRun as back-to-back decode-graph replays with on-GPU argmax. RTX 3060, host-local measurement:
| Model | This engine (cuda-q4) | Ollama 0.21.0 q4_K_M |
|---|---|---|
| Qwen2.5-0.5B | 434 tok/s, TTFT 45 ms | 246 tok/s, 116 ms |
| Qwen2.5-1.5B | 183 tok/s, TTFT 140 ms | 152 tok/s, 119 ms |
Also: cuda-q8[:N] / cuda-q4[:N] backends exposed on the CLI/HTTP surface; incremental detokenization in the generators; new GenerativeModel API SupportsGreedyRun/GreedyRun (temperature > 0 keeps the per-token Decode + CPU sampler path). Parity gates: GreedyRun matches sequential Decode + greedy argmax bit-exactly on both backends' test suites (187 macOS / 188 Linux, all green); outputs stay bit-exact run-to-run.
See docs/RELEASE_NOTES.md for full notes. Same pre-release caveats as v1.0.0 (unsigned macOS binaries pending Developer ID enrollment).
Downloads (SHA-256)
| File | Platform / backend | SHA-256 |
|---|---|---|
lykuro-native-engine-macos-arm64 |
macOS Apple Silicon, Metal (single binary, ad-hoc signed) | 4741d1fed1cbac97bcbd10f70d45e7e9e8cc5c094978f3a3b31d2e135f68c327 |
lykuro-native-engine-macos-metal-1.0.4.tar.gz |
macOS Apple Silicon, Metal (full package) | b3ed1c47523835db21d0d7db12390b7f1aec8663c921e78e0c09e020cbb97e6b |
lykuro-native-engine-linux-cuda-1.0.4.tar.gz |
Linux x86_64 + NVIDIA CUDA (full package) | 9cfe513d4f9b72d7d507fec5c5fc09614ec7fc3149f1881817d7e4da73d234d6 |
lykuro-native-engine-linux-amd64 |
Linux x86_64, CPU (single binary) | 02e613a907d0f8daad61d99fe4b7e1fb9c6f52156508e3ac2015e9d4a42938ec |
lykuro-native-engine-linux-arm64 |
Linux aarch64, CPU (single binary) | 10586713501e6ad3a33eae45ea7a6473db7871b7d6f94583f4665a29cea39703 |
Runtime requirements: Linux binaries need glibc + system OpenSSL (CUDA package additionally needs the NVIDIA driver/CUDA runtime); macOS binaries need Apple Silicon (arm64) and are ad-hoc signed — browser downloads need xattr -d com.apple.quarantine once.
v1.0.3 — Lykuro Native Inference Engine (pre-release)
v1.0.3 (2026-08-15)
Metal kernel backend — faster than Ollama on Apple Silicon
New hand-written Metal compute-kernel backend (metal-fast FP16, metal-q8 INT8, metal-q4 INT4 weight-only; runtime-compiled MSL, no MPSGraph) replacing per-token graph execution with one fused command buffer per token. INT8/INT4 quantization follows the CUDA backend's scheme; activations stay FP16 with FP32 accumulation everywhere; all reductions are fixed-order, so output remains bit-exact run-to-run.
metal-q4 is now the default backend on macOS for run and the HTTP API. metal (the FP32 MPSGraph parity anchor) and every other backend remain selectable via --backend / hardware.backend (engine.json accepts the new names).
Measured on an M4 Pro (median decode over 256-token generations, identical client-side methodology for both engines) vs Ollama 0.32.5 q4_K_M:
| Model | This engine (metal-q4) | Ollama q4_K_M |
|---|---|---|
| Qwen2.5-0.5B-Instruct | 278 tok/s, TTFT 42 ms | 246 tok/s, 103 ms |
| Qwen2.5-1.5B-Instruct | 163 tok/s, TTFT 90 ms | 154 tok/s, 101 ms |
Quality gates: the FP16 kernel path tracks the CPU reference within tolerance on a teacher-forced trajectory (greedy-identical output on the real checkpoint); quantized modes are gated by quantization-tolerance parity tests; all modes are deterministic across runs (tests/metal/metal_fast_parity_test.cpp).
See docs/RELEASE_NOTES.md for full notes. Same pre-release caveats as v1.0.0 (unsigned macOS binaries pending Developer ID enrollment).
Downloads (SHA-256)
| File | Platform / backend | SHA-256 |
|---|---|---|
lykuro-native-engine-macos-arm64 |
macOS Apple Silicon, Metal (single binary, ad-hoc signed) | ca3de24c0859839d84f08d520b322664e2589722eee0de57cb5d017367040015 |
lykuro-native-engine-macos-metal-1.0.3.tar.gz |
macOS Apple Silicon, Metal (full package) | 23a1c37cc17b0f60549dc1ba4fa371b3c258c289f8ea9664b687259ee97ffdb8 |
lykuro-native-engine-linux-cuda-1.0.3.tar.gz |
Linux x86_64 + NVIDIA CUDA (full package) | 072729741d3bc81b86849f640359097d19a2ce07204030f90d9fd7a758fc602e |
lykuro-native-engine-linux-amd64 |
Linux x86_64, CPU (single binary) | 271313b66b56e903fc10ff2549498f0d8150cea29e1aa15a1698186bcd0d6ab3 |
lykuro-native-engine-linux-arm64 |
Linux aarch64, CPU (single binary) | df168bcf73f02c47cbe58adf3cfae319de586699a331117106c3f1da68903a1e |
Runtime requirements: Linux binaries need glibc + system OpenSSL (CUDA package additionally needs the NVIDIA driver/CUDA runtime); macOS binaries need Apple Silicon (arm64) and are ad-hoc signed — browser downloads need xattr -d com.apple.quarantine once.
v1.0.2 — Lykuro Native Inference Engine (pre-release)
v1.0.2 (2026-08-15)
Robustness fixes for the HTTP compat API (serve) and its CLI clients.
- The server now ignores SIGPIPE, so a client aborting a stream can no longer kill the process.
- Generation stops as soon as a streaming client disconnects instead of running the request to completion.
- The CLI accepts the model names that
/v1/modelsand/api/tagsreport, so listed names can be passed back torun/generateas-is.
See docs/RELEASE_NOTES.md for full notes. Same pre-release caveats as v1.0.0 (unsigned macOS binaries pending Developer ID enrollment).
Downloads (SHA-256)
| File | Platform / backend | SHA-256 |
|---|---|---|
lykuro-native-engine-macos-arm64 |
macOS Apple Silicon, Metal (single binary, ad-hoc signed) | 8d6c429f83561c29bdcc5c2ab4c2870a85b6e15ae49e6582c11c4aae6eebdb13 |
lykuro-native-engine-macos-metal-1.0.2.tar.gz |
macOS Apple Silicon, Metal (full package) | 80e6a908b578e5cebb4764c1ff6f869f078beb0214144c2ee16d0ab89a2a1bf0 |
lykuro-native-engine-linux-cuda-1.0.2.tar.gz |
Linux x86_64 + NVIDIA CUDA (full package) | 461021d4cf5558ff0476a5d423123900418b9715639d5d9b428574906a4b3b99 |
lykuro-native-engine-linux-amd64 |
Linux x86_64, CPU (single binary) | 4a60f1941e3b21dba5b7362c498f4fd482408252a6a1c9574c088b3396ef1879 |
lykuro-native-engine-linux-arm64 |
Linux aarch64, CPU (single binary) | 40f2151efeae2815a83f4aca5c0a8ced842bbc0648906bb8e072c23c48d75266 |
Runtime requirements: Linux binaries need glibc + system OpenSSL (CUDA package additionally needs the NVIDIA driver/CUDA runtime); macOS binaries need Apple Silicon (arm64) and are ad-hoc signed — browser downloads need xattr -d com.apple.quarantine once.
v1.0.1 — Lykuro Native Inference Engine (pre-release)
v1.0.1 (2026-08-12)
GET /api/versionnow identifies the engine: the response gains an"engine":"lykuro-native-engine"field alongside"version".
See docs/RELEASE_NOTES.md for full notes. Same pre-release caveats as v1.0.0 (unsigned macOS binaries pending Developer ID enrollment).
v1.0.0 — Lykuro Native Inference Engine (pre-release)
Release Notes
v1.0.0 (2026-08-11)
First release of the Lykuro Native Inference Engine — a from-scratch
local LLM inference engine with no third-party inference runtime, per
LYK-NIE-SD-001 and the Metal addendum LYK-NIE-ADD-METAL-001.
Highlights
- Own engine, end to end. In-tree JSON parser, SHA-256, safetensors
reader, byte-level BPE tokenizer, chat template, sampler, scheduler,
KV cache, and all inference kernels. No Ollama / llama.cpp / vLLM /
TGI / mlx-lm in source, binary, or transitive form (AT-01 / AT-M03,
enforced bytools/check_no_forbidden_runtime.sh). - Correctness first. CPU FP32 reference as the oracle; every backend
is verified against the real Qwen2.5-0.5B-Instruct checkpoint using an
HF-transformers reference (logits + greedy agreement), and is
bit-exact run-to-run. - Two GPU backends behind one interface.
- CUDA (Linux): BF16-resident weights, fused decode kernels, CUDA
Graphs, paged KV + scoped prefix cache, INT8/INT4 weight-only
quantization, and a 2-way tensor-parallel PoC. ~150 tok/s single /
~450 tok/s at batch 16 on an RTX 3060 (dev figures). - Metal (macOS, Apple Silicon): MPSGraph forward with resident
unified-memory buffers, chunked prefill, graph pre-warm, and FP16
(weights/activations/KV, FP32-safe reductions) halving resident VRAM.
- CUDA (Linux): BF16-resident weights, fused decode kernels, CUDA
- Security & serving. mTLS gRPC with Control/Data identity
separation, Ed25519 manifest signature verification (fail-closed),
content-free logs/metrics, loopback metrics endpoint, and a strict
fail-closed JSON config. - Stability — both 24h soaks passed. CUDA: 237,009 requests, 0 failed,
RSS bit-identical, 100 reload cycles leak-free. Metal: 137,440 completed,
0 failed, phys_footprint flat (~2656MB over 24h) after fixing a
per-request autorelease leak; 100 reload cycles leak 11.7MB. Per-request
bookkeeping is bounded by in-flight work. - Unified Memory admission (Metal). Load-time weight admission plus
runtime staged watermarks — soft sheds new sequences, hard caps KV
growth — with committed-KV accounting. - Supply-chain gate.
tools/scan_vulnerabilities.shcross-checks the
SBOM against a VEX ledger and OSV, fails closed on unreviewed deps or
un-waived CRITICAL/HIGH; emitsvulnerability-report.jsonin CI.
Ollama-style unified commands
Every operation is a native-engine <subcommand>:
pull <hf_repo> [out]— download a HF checkpoint and convert it to a
Lykuro artifact natively (no Python).run <model_or_repo> ["prompt"] [--backend … --max-tokens N --temperature T --system "…"]— config-less inference. Accepts a local artifact dir OR a
HF repo id, which auto-pulls if not already local (single-command run).
Streams output, or starts an interactive chat with no prompt.serve --config <path>— the gRPC engine server (legacy--configstill
works).convert <hf_dir> <out_dir>— HF checkpoint → artifact.serve --http [--port 11434]— Ollama- and OpenAI-compatible HTTP API
(/api/generate, /api/chat, /api/tags, /api/pull; /v1/chat/completions,
/v1/completions, /v1/models). Models given by HF repo id auto-pull.
Packaging
linux-cudaandmacos-metalprofiles viatools/make_package.sh:
staged tree, sorted checksums, provenance manifest, Ed25519-signed
manifest, deterministic tarball. SBOM (SPDX 2.3) and full license
texts included.- Single self-contained binary. gRPC/protobuf/abseil/OpenSSL are
statically linked (release-staticpreset,third_party/build_grpc_static.sh);
macOS links only/usr/lib+ Apple frameworks, Linux the C/C++ runtime- system OpenSSL + CUDA. A cross-platform gate
(tools/check_selfcontained.sh) fails the build on any forbidden dynamic
dependency.
- system OpenSSL + CUDA. A cross-platform gate
- macOS install (§24). pre/postinstall prechecks,
enable_service.sh
(non-root_lykuroLaunchDaemon), anduninstall.sh. Two-phase signing:
Phase 1--devad-hoc (internal test), Phase 2 Developer ID + notarize. - Operations runbook (
docs/operations/runbook.md): deploy, monitor,
Drain/Resume update, versioned-package rollback, recovery.
Known limitations / not certified
- This is a pre-release. Public signed binaries are not attached:
macOS Developer ID signing + Apple notarization (Phase 2,
downloads.lykuro.ai) await Apple Developer Program enrollment. The
sign/notarize/staple pipeline is implemented and self-skipping until the
certificate is present. Build from source with therelease-static
preset, or use the internal Phase 1--devad-hoc package. - Certified Profiles are dev-measured, not production-certified:
formal security review, signed-artifact-only measurement, and
cross-host variance data are pending (the 24h soaks themselves passed). - Custom Metal kernels (precompiled
metallib) require an Xcode CI
runner — the MVP is MPSGraph-only. - Hardware/OS coverage is limited to the entries in
docs/compatibility-matrix.md. Sharded weights, MoE, embeddings,
vision, and NCCL-based multi-GPU are out of scope for this release. - Quantized (INT8/INT4/FP16) models change greedy output relative to the
FP32 oracle by design; per-model quality gating belongs to the offline
evaluation pipeline.
See docs/DEFINITION_OF_DONE.md for the full per-item status against
both specifications.
Quick start
curl -fsSL https://raw.githubusercontent.com/lykuroai/engine/main/deploy/macos/install.sh | bash # macOS, no cert
native-engine pull Qwen/Qwen2.5-1.5B-Instruct
native-engine list
native-engine run Qwen/Qwen2.5-1.5B-Instruct "What is 2+2?"
native-engine serve # HTTP API (Ollama /api/* + OpenAI /v1/*) on 127.0.0.1:11434
native-engine serve --host 0.0.0.0 # expose on the internal LAN (unauthenticated — firewall it)
Downloads
| File | Platform | Backend | SHA-256 |
|---|---|---|---|
lykuro-native-engine-linux-cuda-1.0.0.tar.gz |
Linux x86_64 + NVIDIA | CUDA GPU | 58da75f91e25e800f30062a08849b6b294ece714ee403c76c5d2df214c9f6d3a |
lykuro-native-engine-linux-amd64 |
Linux x86_64 (AMD/Intel) | CPU | 1d05c55c3f076a1a65ba748fd49f815de661a44fa7a497a1d4f04043c7d9ad20 |
lykuro-native-engine-linux-arm64 |
Linux aarch64 | CPU | 620203dc0882d6c0213d086a5fa25e1d82d9a826a6d61d84aac52f2efbdf18e9 |
lykuro-native-engine-macos-arm64 |
macOS Apple Silicon | Metal (Mac GPU) | 239de55524d5ba5031bbaff1afb56200de26d3e68d3a64e1fe2cb0c708828abd |
- macOS ad-hoc signed (not notarized); browser downloads need
xattr -d com.apple.quarantine <file>once, or use the curl installer. - The HTTP API is unauthenticated — bind non-loopback (
--host) only on a
trusted network; use the gRPC mTLS server (serve --config) for auth. - All binaries are single self-contained (static gRPC/protobuf/abseil).