nobodywho README

The project's README from github.com/nobodywho-ooo/nobodywho. As one markdown file: README.md.

Discord Matrix Mastodon Pub.dev Version PyPI Version npm Version Godot Engine Contributor Covenant Docs

NobodyWho

On-device AI for any device.
NobodyWho is an inference engine that lets you run LLMs locally and efficiently.


Features

Under the Hood

flowchart TD
    FL["Flutter"]:::lang
    PY["Python"]:::lang
    GO["Godot"]:::lang
    K["Kotlin"]:::lang
    S["Swift"]:::lang
    RN["React Native"]:::lang

    FRB["flutter_rust_bridge"]:::glue
    P3["PyO3"]:::glue
    GX["gdext"]:::glue
    U["UniFFI"]:::glue

    FL --> FRB
    PY --> P3
    GO --> GX
    K --> U
    S --> U
    RN --> U

    CORE["NobodyWho · Rust<br/>chat · templates · grammars · sampling · context shifting"]:::core

    FRB --> CORE
    P3 --> CORE
    GX --> CORE
    U --> CORE

    CORE --> LCPP["llama.cpp<br/>text · vision · embeddings · reranking"]:::engine
    CORE --> ORT["ONNX Runtime<br/>speech-to-text · text-to-speech · VAD"]:::engine

    LCPP --> HW["Hardware<br/>Vulkan · Metal · CUDA · GPU · CPU"]:::hw
    ORT --> HW

    classDef lang fill:#e8eefc,stroke:#5b7bd5,color:#11204a
    classDef glue fill:#f3f0fb,stroke:#8b7bd5,color:#2a1f4a
    classDef core fill:#eaf6ee,stroke:#4fa46a,color:#0f3b1f
    classDef engine fill:#fdf0e3,stroke:#d58f3b,color:#4a2d0b
    classDef hw fill:#f0eeea,stroke:#a09a90,color:#3a352e

You can test our inference engine on iOS, Android, Vision Pro and Apple Watch.


Platforms

Binding Install Runs on Documentation
Kotlin Maven Central Desktop, Android docs.nobodywho.ooo/kotlin
Swift SPM macOS, iOS, visionOS, watchOS docs.nobodywho.ooo/swift
React Native / Expo npm Desktop, Android, iOS docs.nobodywho.ooo/react-native
Flutter pub.dev Desktop, Android, iOS docs.nobodywho.ooo/flutter
Python PyPI Desktop docs.nobodywho.ooo/python
Godot AssetLib Desktop, Android docs.nobodywho.ooo/godot

Desktop means Linux, macOS and Windows throughout. Three gaps worth knowing before you start:

⭐ Useful to you? Star the repo, it's the easiest way to say thanks.

Requirements

Inference uses the GPU where available and CPU where not. The real constraint is memory.

Desktop

Mobile

Models

Any model in the GGUF format works. Pass a hf:owner/repo:QUANT reference, an HTTPS URL, or a local path anywhere a model path is expected; remote models are downloaded and cached on first use. Pass "auto" to fit one to available memory.

Start with Qwen3 0.6B: at ~330 MB it is small enough for any phone and good enough to tell whether the integration works.


Quick Start

Python
pip install nobodywho
from nobodywho import Chat

chat = Chat('hf:NobodyWho/Qwen_Qwen3-0.6B-GGUF:Q4_K_M')
response = chat.ask('What is the capital of Denmark?')
print(response.completed()) # The capital of Denmark is Copenhagen.

Python documentation · PyPI

Kotlin
// Android
implementation("ai.nobodywho:nobodywho-android:<version>")

// Desktop JVM (Linux, macOS, Windows)
implementation("ai.nobodywho:nobodywho:<version>")

Use the version from the Maven Central badge above.

import ai.nobodywho.Chat

val chat = Chat.fromPath(
    modelPath = "hf:NobodyWho/Qwen_Qwen3-0.6B-GGUF:Q4_K_M"
)

val response = chat.ask("What is the capital of Denmark?").completed()
println(response) // The capital of Denmark is Copenhagen.

Kotlin documentation

Swift

Add via Swift Package Manager:

https://github.com/nobodywho-ooo/nobodywho-swift.git
import NobodyWho

let chat = try await Chat.fromPath(
    modelPath: "hf:NobodyWho/Qwen_Qwen3-0.6B-GGUF:Q4_K_M"
)

let response = try await chat.ask("What is the capital of Denmark?").completed()
print(response) // The capital of Denmark is Copenhagen.

Swift documentation · GitHub · starter app

React Native / Expo
# React Native
npm install react-native-nobodywho

# Expo
npx expo install react-native-nobodywho
import { Chat } from "react-native-nobodywho";

const chat = await Chat.fromPath({
  modelPath: "hf:NobodyWho/Qwen_Qwen3-0.6B-GGUF:Q4_K_M",
});

const msg = await chat.ask("What is the capital of Denmark?").completed();
console.log(msg); // The capital of Denmark is Copenhagen.

RN / Expo documentation · NPM · RN starter app · Expo starter app

Flutter
flutter pub add nobodywho
import 'package:nobodywho/nobodywho.dart' as nobodywho;

void main() async {
  await nobodywho.NobodyWho.init();

  final chat = await nobodywho.Chat.fromPath(
    modelPath: 'hf:NobodyWho/Qwen_Qwen3-0.6B-GGUF:Q4_K_M',
  );

  final msg = await chat.ask('What is the capital of Denmark?').completed();
  print(msg); // The capital of Denmark is Copenhagen.
}

Flutter documentation · pub.dev · starter app

Godot

Install NobodyWho from inside the editor:

  1. In Godot 4.5+, open the AssetLib tab and search for NobodyWho.
  2. Download and import it, making sure Ignore asset root is ticked in the import dialogue.
  3. Reload the project.

You can also grab a specific version from the releases page and import the zip the same way.

Godot documentation

Local Server

NobodyWho provides an experimental local server that implements the OpenAI Chat Completions API.

Start the server :

uvx --from 'git+https://github.com/nobodywho-ooo/nobodywho.git#subdirectory=nobodywho/server' nobodywho-server --model hf:NobodyWho/Qwen_Qwen3-0.6B-GGUF:Q4_K_M --name qwen

It listens on http://127.0.0.1:8888 and serves /v1/models and /v1/chat/completions. See the docs for more info.


Documentation

The documentation has everything you might want to know: https://docs.nobodywho.ooo/

Working with a coding agent? Point it at llms.txt or llms-full.txt, or install the NobodyWho skill so your agent can look up the current APIs and documentation:

npx skills add https://github.com/nobodywho-ooo/nobodywho --skill nobodywho

Community

⭐ Star the repo if NobodyWho is useful to you. It is how people find us.

License

NobodyWho is licensed under the EUPL-1.2. You may use it in proprietary and commercial projects, free of charge. There has been some confusion about this, so to be precise:

Linking two programs or linking an existing software with your own work does not – at least under European law – produce a derivative or extend the coverage of the linked software licence to your own work. [1]

If you distribute modified versions of the code in this repo, you must open source those changes.

Feel free to make proprietary projects using NobodyWho, but don't make a proprietary fork of NobodyWho.

nobodywho (nobodywho-ooo/nobodywho)

Searching Database…

这是什么?NobodyWho 是一个开源推理引擎,可以在手机、桌面电脑甚至 Apple Watch 上本地离线运行大语言模型——不需要 API 密钥,也不调用云端。它底层由 llama.cpp 驱动,并通过 Vulkan 或 Metal 利用 GPU 加速。
它是一个独立应用,还是要嵌入到我自己的项目里用?你需要嵌入它:它以 Kotlin、Swift、React Native/Expo、Flutter、Python 和 Godot 绑定的形式发布,聊天、语音和工具调用功能都运行在你自己的应用或游戏里。每个绑定在 docs.nobodywho.ooo 下都有各自的文档。
我怎么把它加到我的项目里?通过你所用技术栈常用的包管理器:Python 用 PyPI,React Native/Expo 用 npm,Flutter 用 pub.dev,Kotlin 用 Maven Central,Swift 用 Swift Package Manager。在 Godot 4.5+ 中,打开 AssetLib 标签页,搜索 NobodyWho,勾选 'Ignore asset root' 导入,然后重新加载项目。
运行它需要 API 密钥或者很强的 GPU 吗?不需要密钥也不用注册账号——所有内容都在本地离线运行。有 GPU 时它会使用 GPU(macOS 上是 Metal,Linux 和 Windows 上是 Vulkan,并支持 CPU 回退),它的分层卸载会把模型层分摊到显存和内存里;真正的限制是内存,大约需要模型文件大小 1.5 倍的空闲内存。
它目前有哪些不支持的场合?已知有三个缺口:Godot 绑定不支持 iOS 导出(在那个平台上请用 Flutter、React Native 或 Swift 绑定)、不支持 Windows ARM64(仅支持 x86_64),另外还没有网页端导出。
我能把它用在一个闭源的商业应用里吗?可以。它采用 EUPL-1.2 协议,README 明确说明链接使用它不会使你的作品成为衍生作品——闭源和商业使用都是免费的。唯一的条件是:如果你分发 NobodyWho 本身的修改版,这些改动必须开源。
除了普通的聊天补全,它还能做什么?能做的很多:类型安全的工具调用,可以根据你的函数签名自动生成结构化语法;支持图片和音频的多模态输入;通过 Kokoro、Pocket TTS 和 Supertonic 实现文字转语音;用 Whisper 做语音识别;还有基于 Silero 的语音活动检测,让它知道你什么时候说完了。
我能不能把现有的 OpenAI 格式工具接到它上面?可以——它有一个实验性的本地服务器,实现了 OpenAI Chat Completions API,提供 /v1/models 和 /v1/chat/completions 接口,所以原本为 OpenAI 构建的客户端可以直接对接你的本地模型。
怎么让我的编程智能体熟悉它的 API?让它去读 llms.txt 或 llms-full.txt,或者用 'npx skills add --skill nobodywho' 安装 NobodyWho 技能,这样智能体就能自己查询最新的 API 和文档。
它真的能在 Apple Watch 和 Vision Pro 上运行吗?Swift 绑定面向 macOS、iOS、visionOS 和 watchOS,而且 README 说你可以在 iOS、Android、Vision Pro 和 Apple Watch 上测试这个引擎——记得带一个小一点的模型。
Size
184.2 MB
Stars
1.6K
Age
2y
Commits · 90 Days