标准版 DMG 不含模型,需在引导流程中自行下载;完整版(约 4 GB)首次启动会把 Raptor 0.6 安装到 ~/MLXModels;从源码构建需 Xcode 16+ 并打开 osaurus.xcworkspace 构建 osaurus target。
osaurus
osaurus-aiMIT活跃维护用 Swift 写的原生 macOS AI 智能体运行环境,可接入任意模型,支持持久记忆、自主执行和加密身份,全程离线运行。
Own your AI. The native macOS harness for AI agents -- any model, persistent memory, autonomous execution, cryptographic identity. Built in Swift. Fully offline. Open source.
brew install --cask osaurus
osaurus ui仅支持 Apple Silicon Mac,需 macOS 15.5+;Linux VM 沙箱需 macOS 26+(Tahoe),旧版本回退到 macOS Seatbelt 沙箱。README 未说明具体显存或内存要求。
macOS 上的原生 AI 智能体运行框架,让模型、记忆、工具和身份都留在你自己的 Mac 上
用 Swift 写的原生 macOS AI 智能体运行环境,可接入任意模型,支持持久记忆、自主执行和加密身份,全程离线运行。
核心能力
- 为每个智能体配置独立提示词、记忆和主题
- 用 RAG 按任务自动挑选工具与技能
- 在隔离 Linux VM 沙箱中执行代码和 shell
- 兼容 OpenAI、Anthropic、Ollama 三种 API
- 内置 MCP 服务端与插件注册表扩展工具
容易踩的坑
- 0.25.33Osaurus 0.25.33最新正式版2026-11-09 · 2026-11-09 16:25 UTC
What's Changed
🐛 Bug Fixes
- Upload release assets before publishing an existing draft (#3356) by @tpae
- Preserve measured Activity and budget usage on tool-choice rejection (#3353) by @jjang-ai
- Avoid per-event preferences IPC in the telemetry consent gate (#3352) by @jjang-ai
- Persist retained Activity tabs off main and keep canonical titles synchronized (#3351) by @jjang-ai
- Keep text picker readiness independent of local media discovery (#3350) by @jjang-ai
- Synchronize watchdog attribution faults with persisted records (#3349) by @jjang-ai
- Fix concurrent analytics queue corruption (#3346) by @jjang-ai
- Pass proof app environment directly to LaunchServices (#3348) by @jjang-ai
- Keep large tool results recoverable and separate compaction deadlines (#3336) by @jjang-ai
Full Changelog: https://github.com/osaurus-ai/osaurus/compare/0.25.32...0.25.33
Downloads
- Osaurus-0.25.33.dmg — standard build. Pick a model during onboarding.
- Osaurus-0.25.33-full.dmg — 3.7 GB, Raptor 0.6 bundled. Chat offline right after install; no model download.
sha256 8eddc5f99881c2c0b9cdb23328fe3b6bfc38e036c6893f96b9121ee1647e7eb7
- 0.25.32Osaurus 0.25.32 (no downloads, use 0.25.33)2026-11-06 · 2026-11-06 23:07 UTC
查看更新说明
[!WARNING] No downloads for this release. Install 0.25.33 instead. It has the same app code.
0.25.32 was published without its DMGs because of a release-script bug: the release was published before its files were uploaded, and immutable releases reject uploads after publishing. The build and notarization succeeded, but the files could never be attached, so the same code was republished as 0.25.33. The fix is in #3356.
In-app updates were not affected and never offered 0.25.32. The original notes are kept below for history.
Highlights
- Add Ripple-65B Preview support for JANGH2 and JANG_4D bundles, including bundled DFlash2 speculative decoding.
- Improve SSD prefix reuse across tool calls, model reloads and growing conversations, with more compact Ripple sliding-window cache storage.
- Correct model download and running-memory estimates for SSD-backed n-gram tables and mixed JANG formats.
- Strengthen generation-limit, sampler, image-processing and model-specific reasoning correctness.
Performance and known limitations
On the qualified M5 Max app runs, Ripple code generation with DFlash2 was about 2.8× faster than AR on JANGH2 and 2.4× on JANG_4D. Results depend on the model and task: JANGH2 prose was close to AR, and a degraded long-lived process showed a small prose slowdown. An intermittent whole-process slowdown remains under investigation; these measurements are not a guarantee for every workload or Mac.
Adaptive decoding preserves sampling choices. Requests with ineligible sampling options can use AR even while Adaptive is selected; the selector explains this fallback. When switching models, reset unsupported saved reasoning choices to the model default or Inherit. See the runtime qualification and remaining limitations.
What's Changed
- Preserve agent Max Tokens with the merged runtime output-limit fix by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3292
- Honor native generation settings and preserve agent control applicability by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3294
- fix(claude-code): hide ungranted tools, explain refusals, add effort to picker by @tpae in https://github.com/osaurus-ai/osaurus/pull/3293
- Pin merged K2 grouped-normalization fusion by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3297
- Pin merged Spark projection input-cast fusion by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3299
- Align workspace mutation line counts with file reads by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3301
- Measure SSD table storage and RAM estimates from bundle data by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3303
- Keep installed model header totals consistent when filtering by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3304
- Count host reclaimable RAM without oversized internal aggregates by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3306
- keep every agent on the relay after re-pairing the phone and keep a phone run's stopped reply on the mac by @RaajeevChandran in https://github.com/osaurus-ai/osaurus/pull/3305
- Preserve inherited output-limit provenance in Insights by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3308
- Consume merged Gemma unified vision LayerNorm correction by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3311
- Consume merged unified Gemma stored RGB correction by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3312
- Consume ordinary Gemma stored-RGB and white-alpha correction by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3313
- Lean agent-run tool surface, batch file reads, and opt-in specialist tools by @tpae in https://github.com/osaurus-ai/osaurus/pull/3307
- Consume loaded tied-head precision and strengthen cache qualification by @jjang-ai i
- 0.25.31Osaurus 0.25.312026-11-02 · 2026-11-02 18:57 UTC
查看更新说明
What's Changed
- Validate compaction output and use supported thinking-off summaries by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3249
- Update MLX kernels and fix native tool-result templates by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3254
- Add per-agent opt-in response metrics in Advanced Settings by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3255
- Consume authoritative Gemma template rendering by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3256
- Consume Gemma 4 reasoning and tool transport isolation by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3257
- Compact growing chat tool chains between completed batches by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3258
- Count tool-result display mirrors once in context estimates by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3259
- Consume Metal command-buffer byte-budget fix by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3260
- Keep saved agent reasoning mismatches visible in the model picker by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3261
- Preserve complete tool schemas through local template rendering by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3262
- Isolate release notes and preserve qualified artifacts before Sentry by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3264
- Coalesce failed tool indexing and recover queued registrations by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3263
- Bound captured Insights bodies by UTF-8 bytes by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3265
- Recover missing knowledge vectors after embedding failures by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3273
- Consume SSM companion evaluation error propagation by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3274
- fix follow-ups showing mid-turn and restore auto-scroll while streaming by @RaajeevChandran in https://github.com/osaurus-ai/osaurus/pull/3275
- add collapse long pastes toggle and labeled insert as text button by @RaajeevChandran in https://github.com/osaurus-ai/osaurus/pull/3276
- Consume request-sized terminal SSM replay by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3279
- Preserve body capture truncation in activity exports by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3284
- Distinguish reported and estimated activity token counts by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3286
- Clarify German server-runtime wording by @jjang-ai in https://github.com/osaurus-ai/osaurus/pull/3288
- Bundle the potion-base-4M embedder and hide embedding models from model lists by @tpae in https://github.com/osaurus-ai/osaurus/pull/3285
- Declare connector configuration URLs as non-directories to avoid main-thread stat hangs by @sentry[bot] in https://github.com/osaurus-ai/osaurus/pull/3238
- Cache observed management badge counts in memory to avoid main thread hangs by @sentry[bot] in https://github.com/osaurus-ai/osaurus/pull/3283
- Defer toast overlay panel creation until first presentation by @sentry[bot] in https://github.com/osaurus-ai/osaurus/pull/3268
- Memoize blank content checks and skip seeded reasoning blocks during stream sync by @sentry[bot] in https://github.com/osaurus-ai/osaurus/pull/3267
- Check bridged presentation intent numbers before struct casts in chat styling by @sentry[bot] in https://github.com/osaurus-ai/osaurus/pull/3266
- Cache composer placeholder lookups and drop blocking attachment disk reads by @sentry[bot] in https://github.com/osaurus-ai/osaurus/pull/3253
- ci(i18n): report referenced-but-untranslated UI strings in the job summary (non-blocking) by @mimeding in https://github.com/osaurus-ai/osaurus/pull/3281
- i18n: give the Thinking mode label its own key, separate from the streaming status by @mimeding in https://github.com/osaurus-ai/osaurus/pull/3280
- fix(PluginTestKit): only the owning MockHost may clear the install s
- 0.25.29Osaurus 0.25.292026-10-30 · 2026-10-30 04:20 UTC
查看更新说明
What's Changed
- Save model-aware adaptive speculation defaults per agent (#3247) by @jjang-ai
- Redesign agent generation overrides with inherited defaults and stop chips (#3246) by @jjang-ai
- Reuse compiled dependencies in PR CI and save caches only from main (#3234) by @tpae
- serve phone chats' context usage and make local-model phone calls faster (#3209) by @RaajeevChandran
- Archive Release builds without whole-module optimization (#3235) by @tpae
🐛 Bug Fixes
- Initialize custom agent JSON fields and clarify inheritance (#3245) by @jjang-ai
- Preserve captured generation settings in queued chat (#3244) by @jjang-ai
- Consume checked prefill and serialized tokenizer fixes (#3243) by @jjang-ai
- Honor bundle sampling defaults for thinking turns (#3241) by @jjang-ai
- Detect bundled DSpark and honor declared reasoning defaults (#3236) by @jjang-ai
Full Changelog: https://github.com/osaurus-ai/osaurus/compare/0.25.28...0.25.29
Downloads
- Osaurus-0.25.29.dmg — standard build. Pick a model during onboarding.
- Osaurus-0.25.29-full.dmg — 3.6 GB, Raptor 0.6 bundled. Chat offline right after install; no model download.
sha256 0a667a2292f686ce375053fb0c27ffbec4e3bc5dc80db58eb18054a368f2a4bf
- 0.25.28Osaurus 0.25.282026-10-28 · 2026-10-28 06:19 UTC
查看更新说明
What's Changed
- Add LFM3 media capabilities and consume the family runtime (#3230) by @jjang-ai
- Let bundle agents stay out of the Orchestrator's delegation list (#3227) by @tpae
- deps: vmlx-swift 085c1c57 — DeepSeek-V4.1 F32 control parameters for every bundle (#3214) by @jjang-ai
- deps: pin vmlx-swift 1410c6f4 (DeepSeek-V4.1 JANGHT keeps F32 control parameters) (#3213) by @jjang-ai
🐛 Bug Fixes
- Save generation defaults per custom agent (#3233) by @jjang-ai
- Remove the Next turn control from the composer (#3232) by @jjang-ai
- Turn on reasoning for Anthropic, Claude Code, and OpenAI models from their live contracts (#3229) by @tpae
- Coalesce chat preview composition and memoize agent routing JSON (#3198) by @sentry[bot]
- Avoid main thread hang parsing router activity timestamps in Credits (#3177) by @sentry[bot]
- Fix AppHang during system appearance changes in ThemeManager.isDarkMode (#3183) by @sentry[bot]
- Move phone chat handoff system readings off main thread (#3221) by @sentry[bot]
- Offload isGitRepository filesystem probe from main actor in KnowledgeManager (#3222) by @sentry[bot]
- Use Foundation character-set search for newline checks in agent descriptions (#3197) by @sentry[bot]
- Preserve template variables and per-turn generation controls (#3226) by @jjang-ai
- Preserve saved settings and external model availability (#3228) by @jjang-ai
- Reflow source-wrapped paragraphs in model cards (#3219) by @jjang-ai
- Keep message content order through image preprocessing (#3224) by @jjang-ai
- DeepSeek-V4.1 alignment: dSpark solo lease, full effort ladder, model_type detection, cached-token usage (#3216) by @jjang-ai
- Track preparation failures and connect resident cache fixes (#3218) by @jjang-ai
- Unify installed model inventory and correct capacity estimates (#3217) by @jjang-ai
- Own allocator cleanup per request and retain failed MTP diagnostics (#3215) by @jjang-ai
🧰 Maintenance
- Pin vmlx-swift c6fee283: DeepSeek-V4.1 decode attention, dSpark governor fix, SSD restore past 16K tokens (#3223) by @jjang-ai
Full Changelog: https://github.com/osaurus-ai/osaurus/compare/0.25.27...0.25.28
Downloads
- Osaurus-0.25.28.dmg — standard build. Pick a model during onboarding.
- Osaurus-0.25.28-full.dmg — 3.6 GB, Raptor 0.6 bundled. Chat offline right after install; no model download.
sha256 cb23748f86bf77ff156e9680e6de70c7b58fed8beac5456a67fa7a3349b09fb2
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Inference is all you need. Everything else can be owned by you.
Models are getting cheaper and more interchangeable by the day. What's irreplaceable is the layer around them -- your context, your memory, your tools, your identity. Others keep that layer on their servers. Osaurus keeps it on your machine.
Osaurus is the AI harness for macOS. It sits between you and any model -- local or cloud -- and provides the continuity that makes AI personal: agents that remember, execute autonomously, run real code, and stay reachable from anywhere. The models are interchangeable. The harness is what compounds.
Works fully offline with local models. Connect to any cloud provider when you want more power. Nothing leaves your Mac unless you choose.
Native Swift on Apple Silicon. No Electron. No compromises. MIT licensed.
Install
brew install --cask osaurus
Or download the latest .dmg from Releases. Two builds ship per release:
Osaurus-<version>.dmg(~70 MB) — the standard build. Pick and download a model during onboarding. This is what Homebrew and in-app updates use.Osaurus-<version>-full.dmg(~4 GB, linked from each release's notes and hosted on Hugging Face) — the same app with Raptor 0.6 bundled. First launch installs the model into~/MLXModelsand onboarding skips the download, so you can chat offline immediately. Updates afterwards are the small build.
After installing, launch from Spotlight (⌘ Space → "Osaurus") or the CLI:
osaurus ui # Open the chat UI
osaurus serve # Start the server
osaurus status # Check status
Requires macOS 15.5+ and Apple Silicon.
Agents
Agents are the core of Osaurus. Each one gets its own prompts, memory, and visual theme -- a research assistant, a coding partner, a file organizer, whatever you need. Tools and skills are automatically selected via RAG search based on the task at hand -- no manual configuration needed. Everything else in the harness exists to make agents smarter, faster, and more capable over time.
Agents can also opt into a private local database and a single self-scheduled next run -- see Agent DB & Self-Scheduling. Local storage is plaintext by default (protected by FileVault) with opt-in SQLCipher encryption -- see Storage.
Agent Loop
Custom agents run an agent loop. Pick a working folder and the agent gets file, search, and git tools. Toggle the sandbox and it gets shell access in an isolated sandbox. The model writes a markdown todo list, executes against it, and closes out with a verified summary -- all in the same chat window. The built-in Orchestrator is the exception: it has no working folder, sandbox, browser, or computer use. For filesystem work, create or switch to a custom agent, then pick the folder there. See the Agent Loop Guide and Orchestrator Guide.
Sandbox
Agents execute code in an isolated Linux VM powered by Apple's Containerization framework. Full dev environment -- shell, Python, Node.js, compilers, package managers -- with zero risk to your Mac.
Each agent gets its own Linux user and home directory. The VM connects back to Osaurus (inference, memory, secrets) via a vsock bridge -- sandboxed but not disconnected. Extend with simple JSON plugin recipes, no Xcode or code signing required.
┌────────────────┐ ┌────────────────────────────┐
│ Osaurus │ │ Linux VM (Alpine) │
│ │ │ │
│ Sandbox Mgr ──┼───────┤→ /workspace (VirtioFS) │
│ Host API ←──┼─vsock─┤→ osaurus-host bridge │
│ │ │ │
│ │ │ agent-alice (Linux user) │
│ │ │ agent-bob (Linux user) │
└────────────────┘ └────────────────────────────┘
The Linux VM requires macOS 26+ (Tahoe). On earlier versions Osaurus falls back to a native macOS Seatbelt sandbox: commands run on your Mac under
sandbox-execconfinement, with writes limited to the sandbox workspace,pip/npminstalls (noapk), and all-or-nothing network access instead of per-domain allowlists. See the Sandbox Guide for configuration, built-in tools, and plugin authoring.
Memory
Three layers -- identity, pinned facts, and per-session episodes -- plus a transcript fallback. Agents distill conversations once at session end (not on every turn), score what matters by salience, and surface at most one compact slice per request based on what you're actually asking. A background consolidator decays, merges, and evicts so memory stays sharp instead of bloating. Most turns inject ~800 tokens or less; many inject zero. See the Memory Guide.
Privacy Filter
When you send to a cloud model, an on-device classifier — OpenAI's openai/privacy-filter (Apache-2.0, 1.5B params / 50M active sparse-MoE), served via the MLX conversion mlx-community/openai-privacy-filter-bf16 (~2.8 GB) — detects names, emails, phones, URLs, addresses, dates, account numbers, and free-form secrets, alongside deterministic regex for SSN, credit cards, IBAN, AWS keys, GitHub tokens, and your own custom patterns. Each detection is shown in a review sheet with a scrubbed preview before sending; approved entities are swapped for stable [PERSON_1] / [EMAIL_2] placeholders, and streaming replies are unscrubbed back on the fly so the chat reads naturally. Fail-closed: if the post-scrub scan finds anything that leaked, the send is blocked. Verify wire-level redaction in the Insights panel — it captures the exact bytes the cloud saw. See the Privacy Filter Guide.
Identity
Every participant -- human, agent, device -- gets a secp256k1 cryptographic address. Authority flows from your master key (iCloud Keychain) down to each agent in a verifiable chain of trust. Create portable access keys (osk-v1), scope per-agent, revoke anytime. See Identity docs.
Relay
Expose agents to the internet via secure WebSocket tunnels through agent.osaurus.ai. Unique URL per agent based on its crypto address. No port forwarding, no ngrok, no configuration.
Secure Channel
When two Osaurus agents talk -- across your LAN or across the world through the relay -- the conversation is end-to-end encrypted: a forward-secret X25519 handshake authenticated by each agent's crypto identity, with every request, streamed token, and access key sealed in ChaCha20-Poly1305. The relay becomes a blind pipe that forwards ciphertext it cannot open; a man-in-the-middle cannot complete a handshake; replayed or truncated traffic is detected and refused; and there is no plaintext fallback an attacker can force. Zero configuration -- pairing is all it takes. See the Secure Channel docs.
Orchestrator
The built-in Osaurus agent is the default Orchestrator. New chat windows open on it unless you start a chat on a custom agent. Ask it anything about the app and it answers from live state; ask it to change a setting and it plans the change, shows an approval card, and applies only after you confirm. It also delegates work: spawn your custom agents and allowed local/cloud models as subagents -- in parallel, within budgets you set -- and get their results woven back into the conversation. It deliberately does no hands-on work itself -- no sandbox, working folder, browser, or computer use; those belong to custom agents -- which keeps it safe and predictable. The chat composer does not offer a working-folder chip on the Orchestrator; picking a folder there would not grant file tools. For filesystem work, create or switch to a custom agent, then pick the working folder on that agent. Rename the Orchestrator, give it a persona, and control exactly what it may delegate to in Settings → Orchestrator. See the Orchestrator Guide.
Subagents (Spawn)
Let a chat -- the Orchestrator or any custom agent -- delegate a bounded task to another model -- local or remote -- or to one of your saved agents, and get a compact result back without cluttering the conversation. Perfect for offloading research, coding, or analysis to a specialist mid-turn. When the subagent runs on a different local model, Osaurus normally does a single-residency handoff: it unloads your chat model, runs the job, then reloads and continues, so two large models never fight for memory. Same-model children reuse the resident model; experimental RAM-safe coexistence can keep both resident when enabled and admitted. Custom agents are added to the Orchestrator's spawn pool automatically (you can remove them in Settings → Orchestrator). First use still asks for approval; budgets and permission mode are configured per agent.
Browser Use
Give an agent its own browser. browser_use runs a self-contained subagent that navigates, reads pages, clicks, types, and verifies each step against a persistent per-agent WebKit session — cookies and sign-ins survive between chats, isolated from other agents and your regular browser. Reads and navigation run automatically; typing and anything consequential pause for your approval, and sign-ins happen in a secure window you type into directly (agents never see credentials). Off by default, enabled per agent, sessions managed in Settings → Browser. See the Browser Use Guide.
Image Generation
Create images on your Mac, fully offline. Install a local image model -- z-image-turbo, FLUX, Qwen-Image, or Ideogram -- and generate from a text prompt with control over size, seed, and negative prompts; hand it a source image to edit instead of starting from scratch. Your chat model can also call the built-in image tool to generate or edit a picture and render it inline in the conversation. Nothing is sent to a server.
Models
The harness is model-agnostic. Swap freely -- your agents, memory, and tools stay intact.
Local
Run Gemma 4, Qwen3.6, GPT-OSS, Llama, and more on Apple Silicon with optimized MLX inference. Osaurus maintains its own optimized model library on Hugging Face with curated quantizations for the best quality-to-size ratio on Apple Silicon. Models stored at ~/MLXModels (override with OSU_MODELS_DIR). Fully private, fully offline.
Liquid Foundation Models
Osaurus supports Liquid AI's LFM family -- on-device models built on a non-transformer architecture optimized for edge deployment. Fast decode, low memory footprint, and strong tool calling out of the box.
Apple Foundation Models
On macOS 26+, use Apple's on-device model as a first-class provider. Pass model: "foundation" in API requests. Tool calling maps through Apple's native interface automatically. Zero inference cost, fully private.
Cloud
Connect to OpenAI, Anthropic, Gemini, xAI/Grok, Venice AI, OpenRouter, Ollama, LM Studio, or Osaurus Router. Osaurus Router is the hosted path — pay-as-you-go with credits and no separate provider account; Osaurus doesn't store your prompt or response content (only the usage metadata needed for billing), and upstream providers process requests under their own policies. Context and memory persist across all providers. See Remote Providers and Osaurus Router.
MCP
Osaurus is a full MCP (Model Context Protocol) server. Give any MCP-compatible client access to your tools with the command-based stdio bridge:
{
"mcpServers": {
"osaurus": {
"command": "osaurus",
"args": ["mcp"]
}
}
}
osaurus mcp starts a stdio MCP server for the client and proxies tool discovery/calls to your local Osaurus HTTP server. Local-only servers can rely on loopback trust. If Server > Network exposure is enabled, add an access key to the client environment:
{
"mcpServers": {
"osaurus": {
"command": "osaurus",
"args": ["mcp"],
"env": {
"OSAURUS_MCP_ACCESS_KEY": "osk-v1..."
}
}
}
}
In the other direction, Osaurus can also act as an MCP client and aggregate tools from URL-based remote MCP providers. One-tap connect to ~25 well-known providers (Linear, Notion, GitHub, Vercel, Supabase, Sentry, Stripe, Cloudflare, ...) with auto OAuth 2.1 + Dynamic Client Registration, or paste an API key. The Remote MCP Providers UI is for HTTP/SSE MCP endpoints; it does not launch third-party command/args stdio providers. See the Remote MCP Providers Guide for details.
Tools & Plugins
osaurus tools install osaurus.xlsx # Install from registry
osaurus tools list # List installed
osaurus tools create MyPlugin --swift # Create a plugin
osaurus tools dev com.acme.my-plugin # Dev with hot reload
Apple apps are built in. Calendar, Reminders, Contacts, Notes, Mail, Messages, Maps & Location, Music, and Shortcuts ship as native tools you turn on per custom agent under Agents → Abilities → Tools — off by default, with the macOS permission prompt on enable and an approval card for every send or delete. See the Apple Apps guide.
Native plugins cover the rest: Vision, XLSX, PPTX, Images, Telegram, Resend, Fetch, and more. (Web search, browsing, macOS control, and the Apple apps are core Osaurus capabilities now — no plugin needed.) Plugins target the v3 host API surface — register HTTP routes, serve web apps, persist data in SQLite, dispatch agent tasks, and call inference through any model. Older v1/v2 plugins continue to load unchanged. See the Plugin Authoring Guide.
Document attachments keep structure where the file format exposes it: CSV/TSV tables, XLSX workbooks, PPTX decks, PDF page anchors, and rich document sections are parsed through the document adapter registry before they reach the agent.
More
Skills & Methods -- Skills import reusable AI capabilities from GitHub repos or files, compatible with Agent Skills. Full Claude plugins (skills, scheduled agents, slash commands, MCP providers, and CLAUDE.md context) can be imported from any GitHub repo and managed as a single bundle. Methods are learned workflows that agents save and reuse over time. All are automatically selected via RAG search -- no manual configuration needed. See Skills Guide and Claude Plugins.
Automation -- Schedules run recurring tasks in the background. Watchers monitor folders and trigger agents on file changes.
Voice -- On-device transcription via FluidAudio on Apple's Neural Engine. Voice input in chat, VAD mode with wake-word activation, and a global hotkey to transcribe into any app. No audio leaves your Mac. See Voice Input Guide.
Shortcuts, Spotlight & Siri -- Osaurus ships App Intents, so "Ask Osaurus" and "Run Osaurus Agent" are available system-wide the moment you install -- no setup. Ask your active agent and get the reply inline, or kick off a custom agent in the background. See App Intents Guide.
Developer Tools -- Server explorer, MCP tool inspector, inference monitoring, plugin debugging. See Developer Tools Guide. For the inference scheduler, model leases, continuous-batching engine, and feature flags that tune them, see Inference Runtime.
Telemetry
Osaurus collects anonymous, aggregated usage analytics via Aptabase, an open-source, privacy-first analytics project. We collect this only to understand broad user trends and preferences (how the app is used and where people run into friction) so we can make it better. It never includes your chats, prompts, files, model outputs, or keys. There are no accounts or device profiles, so events aren't tied to you.
For the exact, exhaustive list of every event and property we capture — and an explicit list of what we never collect — see Telemetry & KPIs.
Crash reporting
Crash and app-hang reporting via Sentry is a separate, independent switch from usage analytics. Unlike analytics it's opt-out — on by default and active from launch — because crash reports carry no personal information and are what let us fix real bugs; you can turn it off anytime in Settings → Privacy → Send Crash Reports. It's limited to crash and hang diagnostics — no performance tracing, profiling, failed-request capture, network breadcrumbs, screenshots, or personal information; we drop the user object and device hostname from every event, on top of disabling PII. It needs a DSN to be configured, so like analytics it's off by default in source builds.
Local development
Telemetry is off by default in source builds: with no key, the SDK is never initialized and every event is a silent no-op, so you can build and contribute without any of this. To enable it locally:
-
Create
App/osaurus/Secrets.xcconfig(gitignored — never commit it) with the keys you want:-
APTABASE_APP_KEY = A-XX-...— your Aptabase app key (analytics). -
SENTRY_DSN— your Sentry project DSN (crash reporting). Optional; omit it to leave crash reporting off. Escape the scheme slashes: an.xcconfigtreats//as a comment, so a rawhttps://…DSN gets silently truncated tohttps:. Add a slash variable and reference it:SENTRY_SLASH = / SENTRY_DSN = https:$(SENTRY_SLASH)$(SENTRY_SLASH)[email protected]/456
-
-
In Xcode, add
Secrets.xcconfigto the project (no target membership), then under Project → Info → Configurations → Debug → osaurus set "Based on Configuration File" to Secrets. -
Clean build (⇧⌘K) and relaunch.
The keys flow Secrets.xcconfig → $(APTABASE_APP_KEY) / $(SENTRY_DSN) build settings → AptabaseAppKey / SentryDSN in Info.plist. Debug builds report to Aptabase's Debug bucket (enable the Debug view on the dashboard to see them) and to Sentry's debug environment, so local testing never pollutes production data.
Compatible APIs
Drop-in endpoints for existing tools:
| API | Endpoint |
|---|---|
| OpenAI | http://127.0.0.1:1337/v1/chat/completions |
| Anthropic | http://127.0.0.1:1337/anthropic/v1/messages |
| Ollama | http://127.0.0.1:1337/api/chat |
All prefixes supported (/v1, /api, /v1/api). Full function calling with streaming tool call deltas. /chat/completions keeps strict OpenAI semantics -- it returns tool_calls and the client executes them, so Osaurus drops in cleanly behind harnesses that already manage their own tool loop. For server-side autonomous loops use POST /agents/{id}/run; to expose Osaurus tools to remote MCP harnesses use /mcp/tools + /mcp/call. See OpenAI API Guide for tool calling, streaming, and SDK examples. Building a macOS app that connects to Osaurus? See the Shared Configuration Guide. Shipping Osaurus with your own agents, skills, and MCP servers pre-installed? See Osaurus Bundles (osaurus import).
CLI
osaurus serve --port 1337 # Start on localhost
osaurus serve --port 1337 --expose # Expose on LAN
osaurus ui # Open the chat UI
osaurus status # Check status
osaurus stop # Stop the server
Homebrew auto-links the CLI, or symlink manually:
ln -sf "/Applications/Osaurus.app/Contents/MacOS/osaurus" "$(brew --prefix)/bin/osaurus"
Architecture
┌─────────────────────────────────────────────────────┐
│ The Harness │
├──────────┬──────────┬────────────┬──────────────────┤
│ Agents │ Memory │ Agent Loop │ Automation │
├──────────┴──────────┴────────────┴──────────────────┤
│ MCP Server + Client │
├──────────┬──────────┬───────────┬───────────────────┤
│ MLX │ OpenAI │ Anthropic │ Ollama / Others │
│ Runtime │ API │ API │ │
├──────────┴──────────┴───────────┴───────────────────┤
│ Plugin System (v1 / v2 ABI) · Native Plugins │
├──────────┬──────────┬───────────┬───────────────────┤
│ Identity │ Relay │ Tools │ Skills · Methods │
├──────────┴──────────┴───────────┴───────────────────┤
│ Sandbox VM (Alpine · Apple Containerization) │
│ vsock bridge · VirtioFS · per-agent isolation │
└─────────────────────────────────────────────────────┘
Most features are accessible through the Management window (⌘ ⇧ M).
Build from Source
git clone https://github.com/osaurus-ai/osaurus.git
cd osaurus
open osaurus.xcworkspace
Build and run the osaurus target. Requires Xcode 16+ and macOS 15.5+.
Git Hooks (lefthook)
Install lefthook to set up the hooks that verify quality of the code:
brew install lefthook
lefthook install
This installs a pre-push hook that runs swift-format over the Packages/ directory before each push.
Project Structure
osaurus/
├── App/ # macOS app target (SwiftUI entry point, assets, entitlements)
├── Packages/
│ ├── OsaurusCore/ # Core library — all app logic
│ │ ├── Models/ # Data types, DTOs, configuration stores
│ │ ├── Services/ # Business logic (actors and stateless types)
│ │ ├── Managers/ # UI-facing state holders (@MainActor, observable)
│ │ ├── Views/ # SwiftUI views, organized by feature
│ │ ├── Networking/ # HTTP server, routing, relay
│ │ ├── Storage/ # SQLite databases
│ │ ├── Identity/ # Cryptographic identity and access keys
│ │ ├── Tools/ # MCP tools, plugin ABI, tool registry
│ │ ├── Folder/ # Working-folder context, file ops, batch tool
│ │ ├── Utils/ # Cross-cutting utilities
│ │ └── Tests/ # Unit and integration tests
│ ├── OsaurusCLI/ # CLI (osaurus command)
│ └── OsaurusRepository/ # Plugin registry and installation
├── docs/ # Feature guides and documentation
├── scripts/ # Build, release, and benchmark scripts
├── sandbox/ # Sandbox VM Dockerfile
└── assets/ # DMG packaging assets
See CONTRIBUTING.md for the architecture guide and layer definitions.
Contributing
Osaurus is actively developed and we welcome contributions: bug fixes, new plugins, documentation, UI/UX improvements, and testing.
Check out Good First Issues, read the Contributing Guide, or join Discord. See docs/FEATURES.md for the full feature inventory.
[!NOTE] 🌐 Help translate Osaurus. We're looking for contributors to localize the app into Spanish and Japanese -- these locales are already wired up in Xcode, so you can start translating right away. See docs/TRANSLATORS.md for how to contribute and the contributor leaderboard.
Community
- Discord -- chat, feedback, show-and-tell
- Twitter -- updates and demos
- Hugging Face -- optimized models for Apple Silicon
- Community Calls -- bi-weekly, open to everyone
- Blog -- long-form thinking on personal AI
- Docs -- guides and tutorials
- Plugin Registry -- browse and contribute tools