Production local AI and offline LLM app for iPhone, iPad, Mac, and Apple Vision Pro—available on the App Store with open-source Swift code.
Noema: Local AI & Offline LLM for Apple Devices
Noema is a production, open-source local AI assistant for iPhone, iPad, Mac, and Apple Vision Pro. It has been available on the Apple App Store since September 19, 2025.
Download Noema on the App Store · Official website · Documentation · App Store releases
Noema runs compatible GGUF, MLX, ExecuTorch, Core ML, and Apple Foundation Models, works with local documents through retrieval-augmented generation (RAG), and supports optional tools and remote endpoints. Compatible local models, chats, and documents can remain on-device and work offline.
App Store availability
Noema is distributed as a shipping App Store application, not as an Xcode-only project. Most users should install it directly from Apple; the source-build instructions in this repository are for developers and contributors.
| Product fact | Current information | | --- | --- | | App Store name | Noema: Local AI & Offline LLM | | Current release | 3.6.1, released July 29, 2026 | | First App Store release | September 19, 2025 | | Platforms | iPhone, iPad, Mac, and Apple Vision Pro | | Price | Free | | App Store ID | 6751169935 |
Install Noema from the App Store →
Key Features
Offline models from Hugging Face
- Integrated model search – Browse the Hugging Face hub directly inside the app. The registry queries
https://huggingface.co/api/modelsand returns records with metadata such as model ID, author, tags, and available quantization formats. A configurable endpoint (e.g.hf-mirror.com) is supported for regions where Hugging Face is unreachable. - One-tap downloads with progress – The download manager emits
started,progress,verifying, andfinishedevents during each installation. Models are downloaded into the app's sandbox, verified, and cached so you can pause and resume downloads at any time. - Automatic dependency management – For models that need extra files (configuration, tokenizers, multimodal projectors, etc.), the installer fetches and stores them alongside the weights.
Open Textbook Library (OTL) integration
- Browse the Open Textbook Library from within Noema. A dedicated registry searches the catalog and caches the results locally.
- Import full textbooks. Downloaded PDFs or EPUBs are embedded on device and indexed for retrieval.
Bring your own documents
- Add personal PDF, EPUB, TXT, MD, JSON, JSONL, CSV, and TSV files. The dataset detail view recognises supported formats and warns when a dataset contains only unsupported types.
- All documents are embedded into a local retrieval index for retrieval-augmented generation (RAG). Ask questions and Noema searches your documents and cites passages without sending anything to the cloud.
Multi-backend model support
Noema runs several on-device model formats so you can pick the right balance of speed, memory, and quality. These are represented in the app'sModelFormat enum:
- GGUF – quantized weights run by the single bundled llama.cpp runtime, exposed through the local loopback server for chat and through its public C API for in-process helpers such as embeddings.
- MLX – Apple's Metal-accelerated format for running models natively on Apple Silicon (integrated via Swift Package Manager).
- ExecuTorch (ET) – PyTorch ExecuTorch models, with XNNPACK / CoreML / MPS backends.
- CoreML / ANE (CML) – CoreML model bundles that run on the Apple Neural Engine.
- Apple Foundation Models (AFM) – Apple's built-in on-device foundation model (Apple Intelligence), available on OS 26 and later with Apple Intelligence enabled.
- CoreAI – downloadable Apple on-device foundation-model bundles, available on OS 27 and later.
fitsInRAM() and maxContextUnderBudget() report whether a given model/context will run comfortably on your device.
In-process and loopback inference
For GGUF, Noema ships one llama.cpp build throughNoemaLLamaServer. This dynamic library provides both llama.cpp's public C API for in-process helpers and the embedded loopback HTTP server (cpp-httplib) used for the OpenAI-compatible local API. The app talks to the server over 127.0.0.1, so chats, tokenization, and tool calls never leave the device.
RAM check & model size helper
A built-in RAM adviser uses device-specific limits to estimate available memory. It multiplies the quantized weight size by a format-specific factor and adds an estimate for the key-value cache to determine whether a model of a given size and context length fits. It can also compute the maximum context length that fits under budget and surfaces this in the UI so you can pick an appropriate model and prompt length.Adaptive runtime presets
Runtime presets escalate KV-cache and context optimizations only as needed (Max Context, Battery Saver, Max Speed, and more), and you can save your own custom presets. An optional generation-diagnostics view reports total duration and token counts.Built-in tool calling and retrieval-augmented generation
Noema implements a flexible tool-calling system across the llama.cpp (server and in-process), MLX, and Apple Foundation Model backends. Tools can be invoked automatically during a chat to:- Web search – a privacy-respecting hosted SearXNG metasearch endpoint (
search.noemaai.com); no per-user API key required. - Document retrieval – query your locally indexed datasets.
- Custom functions exposed through the app's tool registry.
Speculative decoding (MTP)
Noema supports draft/speculative decoding, including multi-token-prediction (MTP) draft heads for compatible GGUF models, with tunable draft parameters for faster generation.Voice input
WhisperKit-based on-device transcription lets you dictate prompts; audio is processed locally.Siri & App Intents
Noema integrates with App Intents and App Shortcuts so you can drive common actions (start a chat, search, explore models) from Siri and Spotlight.Live Activity for indexing
Embedding/indexing progress is surfaced on the Lock Screen and in the Dynamic Island via a Live Activity widget.Noema Teams (enterprise)
Optional enterprise workspaces let organizations manage members, distribute approved models and datasets, and enforce policy. Teams is billed and managed server-side; the consumer app stays fully functional offline.Localization
The interface and accessibility labels are translated into 11 languages: English, Arabic, German, Spanish, French, Hindi, Japanese, Korean, Romanian, Turkish, and Simplified Chinese.Privacy-first & offline
All inference happens on your device. The app never sends your chats, files, or downloaded models to any server. Web search is opt-in and routes only your query (not your data) to the search endpoint, and offline mode disables network access entirely. Combined with Apple sandboxing, this keeps your data private.Install Noema
Install from the App Store
No Xcode setup is required for normal use.
- Open Noema: Local AI & Offline LLM on the App Store.
- Select Get on your iPhone, iPad, Mac, or Apple Vision Pro.
- Open Noema and use the guided setup, or visit Explore to choose a compatible model.
System requirements
- iPhone / iPad – iOS / iPadOS 18 or later, Apple Silicon (A12 Bionic or newer).
- Mac – macOS 26 (Tahoe) or later, Apple Silicon.
- Apple Vision Pro – visionOS 26 or later.
- Apple Foundation Models / CoreAI features require OS 26+ / 27+ respectively, with Apple Intelligence available on the device.
- Enough free storage for downloaded models and datasets (models range from a few hundred megabytes to multiple gigabytes; textbooks vary by file size).
Build Noema from source
This public repository contains Noema's open-source Swift application code. Developers and contributors can build it with Xcode:
git clone https://github.com/noemaai-labs/noema-ios.git
cd noema-ios
git -c protocol.file.allow=always submodule update --init --recursive External/NoemaLLamaServer
Open the Xcode project (Noema.xcodeproj) and choose the Noema target for iPhone/iPad/Vision Pro, or the NoemaMac target for macOS.
Because GGUF and MLX inference run on-device with Metal, deploy to a physical device (or an Apple Silicon Mac) rather than the iOS simulator for full functionality.
Once the app launches, visit the Explore tab to search and install a model. Use the Datasets tab to import textbooks or add your own documents. The Settings tab exposes advanced options including context length, runtime presets, tool calling, and offline mode.
macOS debug builds
The project uses theNoemaLLamaServer SwiftPM package build for llama.cpp, so NoemaMac no longer relies on an embedded llama.framework that needs manual re-signing.
Configuration
- Web search – built in; it uses the hosted SearXNG endpoint by default and requires no per-user key. The endpoint and engine are configurable in Settings.
- Hugging Face endpoint – optionally point downloads at a mirror (e.g.
hf-mirror.com) via Settings or theHF_ENDPOINTenvironment variable. Your Hugging Face token is only ever sent to official Hugging Face hosts.
Vision (Images) with llama.cpp
Noema supports vision-capable GGUF models via its embedded llama.cpp runner. If you want a quick sanity check from the command line, here are minimal examples that match how Noema wires things under the hood.
Minimal working command:
llama-cli \
-m /path/to/vision-model.gguf \
--mmproj /path/to/matching-projector.gguf \
--image /path/to/photo.jpg \
-p "Describe the scene."
With sensible performance knobs:
llama-cli \
-m /path/to/vision-model.gguf \
--mmproj /path/to/matching-projector.gguf \
--image /path/to/photo.jpg \
-p "Describe the scene." \
-c 8192 \
-t 8 \
-ngl 99
Multiple images (repeat --image in the order you want the model to see them):
llama-cli \
-m /path/to/vision-model.gguf \
--mmproj /path/to/matching-projector.gguf \
--image img1.jpg \
--image img2.png \
-p "Compare the two images."
Order of operations in Noema (mirrors the CLI):
- Pick a vision-capable GGUF and its matching projector GGUF.
- Load the model. If the GGUF doesn't embed a projector, Noema will auto-discover a sibling
*.ggufprojector or use the one you configured. - Attach one or more images; Noema preserves the order. Up to five per message.
- Type your text prompt and send.
- Tune performance in Settings: context (
-c→LLAMACONTEXTSIZE), threads (-t→LLAMATHREADS), and GPU offload on Apple Silicon (-ngl→LLAMANGPULAYERS).
- You do not need to resize images yourself; llama.cpp preprocesses each image to what the model expects.
- Projectors: If your llama.cpp build supports external projectors, Noema passes
mmprojto the runner. If not, use merged VLM weights.
Frequently asked questions
Is Noema available on the Apple App Store?
Yes. Noema has shipped publicly on the App Store since September 19, 2025. The current listing is Noema: Local AI & Offline LLM.
Do I need Xcode to use Noema?
No. Most users install Noema directly from the App Store. Xcode is required only when building the open-source application from this GitHub repository.
Does Noema work offline?
Yes. Compatible local models, chats, and documents can stay on-device and work without an internet connection. Web search, remote endpoints, and other connected features are optional and user-controlled.
Which model formats and runtimes does Noema support?
Noema supports GGUF through llama.cpp, MLX, ExecuTorch, Core ML, and Apple's on-device Foundation Models, alongside local document RAG, tool calling, and an OpenAI-compatible loopback server.