Skip to main content
Inference Engine

The fastest inference runtime for iPhone, iPad and Mac.

Optimize and run your model on every Apple device. Up to 38% faster prompt processing vs MLX.

uzu by mirai labs
user %

Run your model on 2 billion Apple devices.
Perfect for:

Model companies.

You train and ship models. Mirai optimizes them for Apple Silicon, benchmarks on real hardware, and distributes.

AI researchers & labs.

Mirai converts your model and puts it in front of real users on Apple devices, not just leaderboards.

Independent makers.

You're fine-tuning or training from scratch. Mirai gives your model the same device reach as OpenAI and DeepSeek.

What Apple Silicon delivers today with Mirai.

on

142 tok/s

Output

higher is better ↑

1665 tok/s

Input

higher is better ↑

15.63 GB

Resident memory

lower is better ↓

Explore all metrics →

Convert. Integrate. Run.

1
Choose framework
2
Run the following command to install Mirai SDK
https://github.com/trymirai/uzu
3
Apply code
1import Foundation2import Uzu3​4public func runChat() async throws {5    let engineConfig = EngineConfig.create()6    let engine = try await Engine.create(config: engineConfig)7    8    guard let model = try await engine.model(identifier: "trymirai/Qwen3.6-27B-M") else {9        return10    }11    for try await update in try await engine.download(model: model).iterator() {12        print(String(format: "\r\u{001B}[2KDownload progress: %.2f%%", update.progress() * 100), terminator: "")13        fflush(stdout)14    }15    print()16    17    let messages = [18        ChatMessage.system().withText(text: "You are a helpful assistant"),19        ChatMessage.user().withText(text: "Tell me a short, funny story about a robot")20    ]21    let session = try await engine.chat(model: model, config: .create())22    let stream = await session.replyWithStream(input: messages, config: .create())23    var message: ChatMessage? = nil24    for try await update in stream.iterator() {25        switch update {26        case .replies(let replies):27            let reply = replies.last28            message = reply?.message29            print("Generated tokens: \(reply?.stats.tokensCountOutput ?? 0)")30        case .error(let error):31            print("Error: \(error)")32        case .toolResults:33            break34        }35    }36    print("Reasoning: \(message?.reasoning() ?? "empty")")37    print("Text: \(message?.text() ?? "empty")")38}

One inference engine. Integrate from any language.

RustCargo
cargo add uzu --git https://github.com/trymirai/uzu
SwiftSwift Package Manager
https://github.com/trymirai/uzu.git
TypeScriptNPM (Node.js)
pnpm add @trymirai/uzu
PythonPyPI
uv add uzu
KotlinComing Soon
Learn more

Built-in features every model gets automatically:

Speculative decoding
Structured output
Task-specific sessions
Built-in performance metrics
swift

Common questions:

terminal — mirai