Tater is a local-first AI platform that can run local models through llama.cpp, Hugging Face Transformers, and MLX, or connect to local OpenAI-compatible APIs. It supports voice satellites like VoicePE, Sat1, S3Box, and ReSpeaker XVF3800, plus portals for Discord, Home Assistant, HomeKit, IRC, macOS, Matrix, Meshtastic, Telegram, and XBMC4Xbox.
Little Spud connects to your Tater Spud Hub for chat, TTS, STT, and notifications from your iOS or Android device.
Tater Bench compares local models using repeatable Tater-style accuracy and performance tests across engines, speculative decoding modes, and hardware.
Tater is built around a modular system:
- Cores → core systems that extend Tater's capabilities
- Portals → integrations with platforms like Discord, Home Assistant, and more
- Verbas → AI-driven tools and actions Tater can perform
- Integrations → modular provider packages for devices, services, search providers, and external APIs
Tater Shop manages the catalogs, versions, metadata, and updates for Tater Cores, Portals, and Verbas.
Core-owned Redis keys must use the Core's canonical namespace: <core_id>: or
<module_key>:. Standard <module_key>_settings and running-state keys are
handled separately. The Delete data uninstall option removes those
namespaces automatically. Shared platform namespaces such as tater: are not
inferred from a downloaded Core;
historical official exceptions are explicitly audited in tateros/core_store.py.
Tater Integrations provides modular packages for devices, services, search providers, and external APIs.
Choose the installation that matches your system:
- macOS app, Unraid, and Home Assistant provide guided installation options.
- Docker is the easiest choice for most other Linux servers.
- Local installation is best when you want direct access to the hardware and Python environment.
Model note: Tater is designed around local models and local OpenAI-compatible servers such as Ollama, LM Studio, LocalAI, and Lemonade.
-
Download the latest macOS installer
-
Install Tater
Open the DMG, then drag Tater.app into Applications.
-
Launch Tater
Open Tater from Applications. On first launch, the app prepares its private runtime under:
~/.taterassistant/The app stores its managed Python runtime, virtual environment, runtime settings, logs, updates, and
agent_labdata there. It does not use this source checkout's.venv,.runtime, oragent_labfolders. The app also includes the pinned AirPlay sender and receiver, and its startup environment check repairs any missing Python-side AirPlay support automatically. -
Finish setup in TaterOS
The app listens on
0.0.0.0:8501and opens127.0.0.1:8501in the native window. If Python 3.11 is not already available, the launcher downloads a standalone CPython 3.11 runtime into~/.taterassistant/python/and uses it to build the private venv.
Closing the window keeps Tater running in the menu bar. Use the menu bar item to reopen Tater, open it in a browser, stop, restart, show logs, check for updates, install available updates, or quit.
Once the WebUI is up, continue to Post-Install Setup below.
Tater is available in the Unraid Community Apps store.
You can install Tater directly from the Unraid App Store with a one-click template.
Unraid note:
- Add container path mappings for
/app/agent_laband/app/.runtimeto persistent, preferably cache-backed storage. - Also set
TZand map/etc/localtimeplus/etc/timezoneif you want local time inside the container.
Once the Unraid containers are installed and running, continue to Post-Install Setup below.
A dedicated Home Assistant add-on repository is available here:
https://github.com/TaterTotterson/hassio-addons-tater
Click the button below to add the repository to Home Assistant:
Once added, the Tater AI Assistant add-on will appear in the Home Assistant Add-on Store.
Install order:
- Install Tater AI Assistant.
- Configure your LLM settings in the Tater add-on.
- Start Tater.
Once the add-ons are running, continue to Post-Install Setup below.
The Reachy Tater Satellite app turns Reachy Mini Wireless into a native voice satellite for an existing Tater server. Microphone, speaker, local wake-word detection, user tracking, expressive motion, and optional vision snapshots remain on Reachy, while the robot connects to Tater through its authenticated native satellite connection.
Install path:
- Install Reachy Tater Satellite from the Reachy Mini app store and start it.
- Open the app settings from Reachy's web interface and enter the address of your running Tater server.
- Create a satellite pairing code in Tater, enter it once in the Reachy settings, and save the connection.
- Optionally enable Allow vision snapshots for the Reachy Vision Verba, then say Hey Reachy.
Use this method on a Linux server with Docker installed.
Run these commands from the directory where you want to keep Tater's data:
mkdir -p tater-data/agent_lab tater-data/runtimeagent_labstores models, documents, logs, and Tater's internal Redis data.runtimestores settings and native satellite pairing credentials.
Keep both directories when you update or recreate the container. Fast local storage is recommended; avoid network-mounted or unusually slow storage for agent_lab.
docker pull ghcr.io/tatertotterson/tater:latest
docker run -d --name tater_webui \
--restart unless-stopped \
--network host \
--cap-add NET_BIND_SERVICE \
-e TZ=America/Chicago \
-e HTMLUI_PORT=8501 \
-v "$(pwd)/tater-data/agent_lab:/app/agent_lab" \
-v "$(pwd)/tater-data/runtime:/app/.runtime" \
ghcr.io/tatertotterson/tater:latestChange TZ if needed. Tater uses host networking for WebUI, voice, discovery, and media services.
Open one of these addresses:
- http://localhost:8501 on the server
http://<server-ip>:8501from another device on the same network
If port 8501 is already in use, change HTMLUI_PORT in the command. Continue to Post-Install Setup after TaterOS opens.
The NVIDIA image is available for amd64 systems with an NVIDIA driver and NVIDIA Container Toolkit installed:
docker pull ghcr.io/tatertotterson/tater:nvidiaUse the Docker command above, add --gpus all, and replace the final image name with ghcr.io/tatertotterson/tater:nvidia.
Use this method on Linux or macOS when you want Tater to run directly on the host.
git clone https://github.com/TaterTotterson/Tater.git
cd Tatersh setup_tater.shThe setup menu asks which runtime fits your system, creates .venv, installs dependencies, and saves the selected profile. Tater supports Python 3.11 through 3.13; on supported Linux systems, setup can install a private Python runtime when the system version is unsuitable.
| Profile | Choose it for |
|---|---|
| CPU | Most Linux PCs and generic ARM systems |
| macOS | Apple Silicon Macs |
| NVIDIA | Linux PCs and servers with NVIDIA GPUs |
| AMD ROCm | Supported Linux systems with AMD GPUs or Ryzen AI |
| Jetson | NVIDIA Jetson systems |
| Thor | Jetson Thor systems |
| Edge | Pi-class or remote-only systems that connect to a Spud Hub |
To skip the menu, pass the profile name directly—for example:
sh setup_tater.sh cpuThe Edge profile requires the operating system's redis-server package. If macOS setup reports missing build tools, install ffmpeg and cmake with Homebrew and rerun setup.
sh run_ui.shTater listens on 0.0.0.0:8501 by default. Open http://localhost:8501, or use http://<computer-ip>:8501 from another device. To use a different port:
HTMLUI_PORT=8601 sh run_ui.shContinue to Post-Install Setup after TaterOS opens. Model downloads and voice acceleration are configured inside TaterOS under Settings -> Models and Settings -> Voice Pipeline.
After Tater is running, open TaterOS and finish the first-run setup:
- Configure your base model in Settings -> Models -> LLM / Vision:
- choose
OpenAI-Compatible APIfor a local server such as Ollama, LM Studio, LocalAI, Lemonade, or vLLM - choose
Hugging Face Transformersto load a local model directly inside Tater - choose
llama.cpp GGUFto load a GGUF model through Tater's native llama.cpp engine - choose
MLX LM (Apple Silicon)to load an MLX model directly on an Apple Silicon Mac - for built-in local providers, download models from the Hugging Face mini-tab first, then select the downloaded model from the Settings mini-tab
- for OpenAI-compatible providers, set the endpoint host/port and model name
- choose
- Optional:
- add more Base servers for round-robin regular AI calls
- enable
Beast Modeand set per-head model settings for Astraeus/Hermes
Hydra model settings are saved by TaterOS and used at runtime. Base, Spudex, Beast Mode routing, and Vision can each use the selected built-in local providers or OpenAI-compatible providers.
- Download local Hugging Face Transformers, llama.cpp GGUF, or MLX models from the Hugging Face mini-tab first, then select them from Settings.
- Model caches live under
agent_lab/models/llm/by default:huggingfacefor Transformersllama-cppfor GGUF models and matchingmmproj*.ggufvision projectorsmlxfor MLX text and vision models
- The Hugging Face browser uses the token saved in Integration Manager -> Hugging Face for private/gated models and better Hub rate limits.
- llama.cpp uses the native
llama-serverengine built by setup. It uses GPU offload by default when the installed build supports it. SetTATER_LLAMA_CPP_N_GPU_LAYERS=0for CPU-only orTATER_LLAMA_CPP_SERVER_BINto point at a custom llama-server binary. - MLX is intended for Apple Silicon Macs. Use llama.cpp GGUF on Linux, Raspberry Pi, NVIDIA, AMD/ROCm, Jetson, or other non-Apple-Silicon devices.
- Vision can use an OpenAI-compatible API, the loaded Base model, or a dedicated local vision model.
- If Base is already loaded and vision-capable, Tater reuses it instead of loading the same model twice.
- Dedicated vision models are managed separately from Base.
- Local context length is configured in Settings -> Models -> LLM / Vision.
- Thinking suppression is enabled by default for local providers when supported.
run_ui.shstarts Uvicorn with--no-access-logto suppress per-request log spam. Shutdown waits at most eight seconds for long-lived WebSocket and event-stream connections before cancelling them, so a stale satellite or browser connection cannot block a restart. SetHTMLUI_GRACEFUL_SHUTDOWN_TIMEOUT_SECONDSto override that connection-drain deadline.