nativ
Nativ is a native macOS app that lets you run AI models locally on Apple silicon, offering chat, model management, performance analytics, and an OpenAI/Anthropic-compatible API server.
It bridges Apple's on-device Foundation Models and cloud providers like OpenAI/Anthropic under one Swift-native, Sendable-safe API, and directly speaks the Vercel UI message stream protocol, enabling reuse of existing Vercel AI SDK backends in iOS apps.
Same code, on-device or cloud. swift-ai-sdk is a provider-agnostic AI toolkit for Swift, built on the Vercel AI SDK's design. You get generateText, streamText, and generateObject, tool calling with the agentic loop handled for you, a swappable transport layer that speaks Vercel's UI message stream protocol, and an @Observable chat session for SwiftUI. Swift 6 strict concurrency, Sendable throughout.
On-device and cloud sit behind one API. FoundationModelsModel() is free, private, and works offline; AnthropicModel() and OpenAIModel() are a one-line swap away, and orFallback picks for you based on availability.
If you already run a Vercel AI SDK backend, your Swift app can use it as-is. HTTPChatTransport speaks the UI message stream protocol exactly (text-delta with a delta field, tool-input-delta with inputTextDelta, data: [DONE]), so the same /api/chat route that serves your React app serves your iOS app.
And it's Swift-6-native: everything is Sendable, streaming is AsyncThrowingStream, strict concurrency is on, and there's no @unchecked in the public surface.
Every provider implements a single method:
protocol LanguageModel: Sendable {
func stream(_ request: LanguageModelRequest) async throws -> AsyncThrowingStream
}
generateText, streamText, generateObject, and the chat transports are all just consumers of that stream. One code path, every backend.
let weather = Tool(
name: "weather",
description: "Current weather for a city",
parameters: ["type": "object", "properties": ["city": ["type": "string"]], "required": ["city"]]
) { args in
["tempC": 31, "city": args["city"] ?? .null]
}
let result = try await generateText(
model: model,
prompt: "Weather in Mumbai?",
tools: [weather],
stopWhen: [stepCountIs(4)], // bound the loop (Vercel's stopWhen)
prepareStep: { context in // per-step overrides (model, messages, tools)
context.stepNumber > 2 ? PrepareStepResult(model: cheaperModel) : nil
}
)
result.text // final answer, after the model called the tool
result.steps // every round-trip: text, toolCalls, toolResults, usage
The loop streams too: streamText(...).fullStream yields step boundaries, tool calls, and to
The AI SDK for your iOS and macOS Apps
Similar projects matched by category, topics, and programming language.
Nativ is a native macOS app that lets you run AI models locally on Apple silicon, offering chat, model management, performance analytics, and an OpenAI/Anthropic-compatible API server.

Hermex is a native SwiftUI iPhone app that lets you control a self-hosted Hermes AI agent directly from your phone, with no subscriptions, tracking, or third-party relay.
A macOS command-line tool that uses Apple's on-device speech APIs to transcribe prerecorded audio into plain text, JSON, JSONL, SRT, or WebVTT.