ByteNoteByteNote

字节笔记本

2026年8月28日

osaurus:Apple Silicon 上的边缘运行时

API中转
¥120

Ollama 和 LM Studio 都能在 Mac 上跑本地模型,但它们主要是把模型伺候起来。Osaurus 想当的是整层 harness:本地 MLX 推理、云端模型、MCP 工具、记忆、沙箱、定时任务,全放在本机。原生 Swift,只吃 Apple Silicon,默认不联网。

它到底管哪一层

官方的说法是:模型越来越便宜、也越来越能换,真正值钱的是模型外面那一层,上下文、记忆、工具、身份。别人把这层放在自己的服务器上,Osaurus 把它放在你的 Mac 上。

装完之后大致是这几块:

  • 本地推理:用 MLX 在 Apple Silicon 上跑 Gemma、Qwen、Llama、GPT-OSS 等,模型默认落在 ~/MLXModels
  • 兼容口:同一端口同时讲 OpenAI、Anthropic、Ollama 三种 API,现成 SDK 改个 base URL 就能打。
  • MCP:自己当 MCP 服务端,也能当客户端去聚合 Linear、GitHub 这类远程工具。
  • Agent:每个 agent 有独立 prompt、记忆和主题。选一个工作目录就有文件、搜索、git;打开沙箱就能在隔离环境里跑 shell、Python、Node。
  • 自动化:定时任务和文件夹 watcher,日记、截图整理、下班提交这类活可以挂在后台。

许可证是 MIT。仓库:https://github.com/osaurus-ai/osaurus ,文档:https://docs.osaurus.ai

机器要求

芯片必须是 Apple Silicon(M1 及以后),系统 macOS 15.5 及以上。Apple Foundation Models 和完整的 Linux 沙箱 VM 都要 macOS 26(Tahoe);15.x 上沙箱会退回 Seatbelt。Intel Mac 别装。内存 8 GB 能转小模型,16 GB 以上才比较舒服。

安装

Homebrew 最省事:

text
brew install --cask osaurus
osaurus --version

也可以去 Releases 下 dmg:https://github.com/osaurus-ai/osaurus/releases/latest

CLI 打在 App bundle 里,brew 会自动链上。DMG 装完如果终端找不到 osaurus,把 /Applications/Osaurus.app/Contents/Helpers/osaurus 链到 ~/.local/bin(没有 Helpers 就用 Contents/MacOS/osaurus)。不要往 Homebrew 的 bin 目录里手写软链。

Spotlight 搜 Osaurus 也能直接打开。终端里常用:

text
osaurus ui          # 打开菜单栏聊天
osaurus serve       # 起本地服务,默认 127.0.0.1:1337
osaurus status      # running 或 stopped
osaurus doctor      # 装坏了先跑这个
osaurus stop

osaurus serve 是一次性的:把 App 拉起来、服务开好就退出。后面 App 崩了不会自己回来。要挂着跑,加 --supervise,它会隔几秒打 /health,挂了再拉。

拉一个本地模型

模型走 Hugging Face 上的 MLX 量化,官方维护一份针对 Apple Silicon 调过的库:https://huggingface.co/OsaurusAI

text
osaurus pull mlx-community/Llama-3.2-1B-4bit
osaurus list
osaurus run gemma-4-e2b-it-4bit

pull 中断了再跑一次会续传。模型目录默认 ~/MLXModels,硬盘不够可以设 OSU_MODELS_DIR 指到外置盘,再 osaurus serve

macOS 26 上还可以直接用系统自带的 Foundation Models,请求里把 model 写成 foundation,不用另下权重。

当本地 LLM 服务用

服务起来之后,三个兼容口都在 1337:

  • 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

/v1/api/v1/api 这些前缀都认。/v1/chat/completions 走严格的 OpenAI 语义:返回 tool_calls,由客户端自己执行。已经有工具循环的 harness 可以直接垫在后面。

curl http://127.0.0.1:1337/v1/models

Python 里改两行就能打本地:

text
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:1337/v1", api_key="not-needed")
resp = client.chat.completions.create(
    model="gemma-4-e2b-it-4bit",
    messages=[{"role": "user", "content": "用三句话说清楚 MLX 是干什么的。"}],
)
print(resp.choices[0].message.content)

端口冲突就 osaurus serve --port 8080,或设环境变量 OSU_PORT。只给局域网用时加 --expose。暴露出去之后不要再靠本机 loopback 就安全,给客户端配 access key。

要让 agent 在服务端自己跑工具循环,走 POST /agents/{id}/run,不要指望 /chat/completions 替你干这件事。

接到 Cursor 或 Claude Desktop

Osaurus 是完整的 MCP 服务端。在 MCP 客户端里加一条 osaurus,参数是 mcp,例如:

json
{
  "mcpServers": {
    "osaurus": {
      "command": "osaurus",
      "args": ["mcp"]
    }
  }
}

osaurus mcp 走 stdio,把工具发现和调用转到本机 HTTP 服务;服务没起来的话它会自己拉。本机 loopback 可以靠本地信任。如果在设置里打开了 Server 的 Network exposure,客户端环境变量里加上 OSAURUS_MCP_ACCESS_KEY。

反过来,Osaurus 也能当 MCP 客户端,去连 HTTP/SSE 的远程 MCP。UI 里大约二十来个常见服务(Linear、Notion、GitHub、Vercel、Supabase 等)可以一键接,走 OAuth 2.1。那一页不管第三方 stdio 服务,stdio 还是用 osaurus mcp。

装官方插件用 osaurus tools install osaurus.calendarosaurus tools list 看已装的,osaurus tools search git 搜注册表。日历、邮件、Vision、XLSX、PPTX、Git、文件系统都在里面。网页搜索、浏览、控 macOS 已经是核心能力,不用再装插件。

沙箱

打开沙箱后,agent 能在隔离环境里跑命令和脚本。macOS 26 上走 Apple Containerization 的 Alpine 虚拟机,每个 agent 一个 Linux 用户,工作区用 VirtioFS,推理走 vsock 回到宿主。

macOS 15.x 没有这套虚拟机,会退到 Seatbelt 后端,隔离边界弱很多。

工作目录模式和沙箱互斥。选了文件夹,沙箱会关;打开沙箱,当前聊天里的文件夹选择会被清掉。内置 Orchestrator 不碰文件系统、沙箱、浏览器、Computer Use,这些活交给你自己建的 agent。

几个容易踩的坑

  1. 命令找不到。先确认 Applications 里有 Osaurus.app,再 which osaurus。DMG 安装不要去改 Homebrew 的 bin。
  2. 端口被占。osaurus status 看是不是已经在跑;换端口比硬杀干净。
  3. 把 chat completions 当成 agent 循环。这个口只返回 tool_calls。要服务端自己跑工具,用 agents 的 run 接口或 MCP。
  4. 局域网暴露没配 key。打开 expose 之后,MCP 客户端必须带 access key。
  5. 沙箱预期和系统版本对不上。想要完整 Linux 虚拟机,先看是不是 macOS 26。
  6. Intel 或太老的系统。没有 x86 构建,15.5 以下也不支持。

装得乱七八糟时跑 osaurus doctor,加上 redact 参数会抹掉用户名和路径,方便贴到 issue 里。

文档和仓库

只想本机跑模型、给现有脚本一个 OpenAI 兼容口,brew 装上再 osaurus serve 就够。要把 Cursor 或 Claude Desktop 接到同一套工具和记忆上,再加一条 osaurus mcp。

分享: