Local AI inference engine and agent platform for image generation, speech processing, and tool-based automation using LLMs
βοΈ Get notified when the packaged version releases
π Report Bug |
β¨ Request Feature |
π‘οΈ Report Vulnerability |
π‘οΈ Wiki |
β¨ Key Features |
---|
π£οΈ Real-time conversations |
- Three speech engines: espeak, SpeechT5, OpenVoice - Auto language detection (OpenVoice) - Real-time voice-chat with LLMs |
π€ Customizable AI Agents |
- Custom agent names, moods, personalities - Retrieval-Augmented Generation (RAG) - Create AI personalities and moods |
π Enhanced Knowledge Retrieval |
- RAG for documents/websites - Use local data to enrich chat |
πΌοΈ Image Generation & Manipulation |
- Text-to-Image (Stable Diffusion 1.5, SDXL, Turbo) - Drawing tools & ControlNet - LoRA & Embeddings - Inpainting, outpainting, filters |
π Multi-lingual Capabilities |
- Partial multi-lingual TTS/STT/interface - English & Japanese GUI |
π Privacy-First Web Browser |
- Built-in secure browser with off-the-record profiles - HTTPS-only enforcement & strict certificate validation - RAG integration for web content analysis - Text extraction & summarization tools - Zero persistent tracking or data storage |
π Privacy and Security |
- Runs locally, no external API (default) - Customizable LLM guardrails & image safety - Disables HuggingFace telemetry - Restricts network access |
β‘ Performance & Utility |
- Fast generation (~2s on RTX 2080s) - Docker-based setup & GPU acceleration - Theming (Light/Dark/System) - NSFW toggles - Extension API - Python library & API support |
Language | TTS | LLM | STT | GUI |
---|---|---|---|---|
English | β | β | β | β |
Japanese | β | β | β | β |
Spanish | β | β | β | β |
French | β | β | β | β |
Chinese | β | β | β | β |
Korean | β | β | β | β |
Specification | Minimum | Recommended |
---|---|---|
OS | Ubuntu 22.04, Windows 10 | Ubuntu 22.04 (Wayland) |
CPU | Ryzen 2700K or Intel Core i7-8700K | Ryzen 5800X or Intel Core i7-11700K |
Memory | 16 GB RAM | 32 GB RAM |
GPU | NVIDIA RTX 3060 or better | NVIDIA RTX 4090 or better |
Network | Broadband (used to download models) | Broadband (used to download models) |
Storage | 22 GB (with models), 6 GB (without models) | 100 GB or higher |
sudo apt update && sudo apt upgrade -y
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git nvidia-cuda-toolkit pipewire libportaudio2 libxcb-cursor0 gnupg gpg-agent pinentry-curses espeak xclip cmake qt6-qpa-plugins qt6-wayland qt6-gtk-platformtheme mecab libmecab-dev mecab-ipadic-utf8 libxslt-dev mkcert
sudo apt install espeak
sudo apt install espeak-ng-espeak
airunner
directorysudo mkdir ~/.local/share/airunner
sudo chown $USER:$USER ~/.local/share/airunner
pyenv
and venv
are recommended (see wiki for more info)pip install "typing-extensions==4.13.2"
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install airunner[all_dev]
airunner
For more options, including Docker, see the Installation Wiki.
airunner
airunner-setup
airunner-build-ui
These are the sizes of the optional models that power AI Runner.
StackAI Runner uses the following stack
|
β¨ LLM Vendors
π¨ Art ModelsBy default, AI Runner installs essential TTS/STT and minimal LLM components, but AI art models must be supplied by the user. Organize them under your local AI Runner data directory:
Optional third-party services
|
src/airunner/handlers/llm/agent/agents/base.py
for integration details and src/airunner/api/chatbot_services.py
for the API function.AI Runner includes an Aggregated Search Tool for querying multiple online services from a unified interface. This tool is available as a NodeGraphQt node, an LLM agent tool, and as a Python API.
Supported Search Services:
GOOGLE_API_KEY
and GOOGLE_CSE_ID
)BING_SUBSCRIPTION_KEY
)NEWSAPI_KEY
)STACKEXCHANGE_KEY
for higher quota)GITHUB_TOKEN
for higher rate limits)API Key Setup:
export GOOGLE_API_KEY=your_google_api_key
export GOOGLE_CSE_ID=your_google_cse_id
export BING_SUBSCRIPTION_KEY=your_bing_key
export NEWSAPI_KEY=your_newsapi_key
export STACKEXCHANGE_KEY=your_stackexchange_key
export GITHUB_TOKEN=your_github_token
Usage:
from airunner.components.tools import AggregatedSearchTool
results = await AggregatedSearchTool.aggregated_search("python", category="web")
src/airunner/tools/README.md
for more details.Note:
AI Runnerβs local server enforces HTTPS-only operation for all local resources. HTTP is never used or allowed for local static assets or API endpoints. At startup, the server logs explicit details about HTTPS mode and the certificate/key in use. Security headers are set and only GET/HEAD methods are allowed for further hardening.
Automatic Certificate Generation (Recommended):
~/.local/share/airunner/certs/
if one does not exist. No manual steps are required for most users.cert.pem
and key.pem
in the certs
directory under your AI Runner base path.Manual Certificate Generation (Optional):
airunner-generate-cert
cert.pem
and key.pem
in your current directory. Move them to your AI Runner certs directory if you want to use them.Configure AI Runner to Use SSL:
export AIRUNNER_SSL_CERT=~/path/to/cert.pem
export AIRUNNER_SSL_KEY=~/path/to/key.pem
airunner
Access the App via https://localhost:<port>
src/airunner/settings.py
).key.pem
).127.0.0.1
by default for safety.local_http_server.py
.You can generate a self-signed SSL certificate for local HTTPS with a single command:
airunner-generate-cert
This will create cert.pem
and key.pem
in your current directory. Use these files with the local HTTP server as described above.
See the SSL/TLS section for full details.
# On Ubuntu/Debian:
sudo apt install libnss3-tools
brew install mkcert # (on macOS, or use your package manager)
mkcert -install
mkcert
is not installed, AI Runner will fall back to OpenSSL self-signed certificates, which will show browser warnings.AI Runner provides several CLI commands for development, testing, and maintenance. Below is a summary of all available commands:
Command | Description |
---|---|
airunner |
Launch the AI Runner application GUI. |
airunner-setup |
Download and set up required models and data. |
airunner-build-ui |
Regenerate Python UI files from .ui templates. Run after editing any .ui file. |
airunner-compile-translations |
Compile translation files for internationalization. |
airunner-tests |
Run the full test suite using pytest. |
airunner-test-coverage-report |
Generate a test coverage report. |
airunner-docker |
Run Docker-related build and management commands for AI Runner. |
airunner-generate-migration |
Generate a new Alembic database migration. |
airunner-generate-cert |
Generate a self-signed SSL certificate for local HTTPS. |
airunner-mypy <filename> |
Run mypy type checking on a file with project-recommended flags. |
Usage Examples:
# Launch the app
airunner
# Download models and set up data
airunner-setup
# Build UI Python files from .ui templates
airunner-build-ui
# Compile translation files
airunner-compile-translations
# Run all tests
airunner-tests
# Generate a test coverage report
airunner-test-coverage-report
# Run Docker build or management tasks
airunner-docker
# Generate a new Alembic migration
airunner-generate-migration
# Generate a self-signed SSL certificate
airunner-generate-cert
# Run mypy type checking on a file
airunner-mypy src/airunner/components/document_editor/gui/widgets/document_editor_widget.py
For more details on each command, see the Wiki or run the command with --help
if supported.
AI Runner supports a set of powerful chat slash commands, known as Slash Tools, that let you quickly trigger special actions, tools, or workflows directly from the chat prompt. These commands start with a /
and can be used in any chat conversation.
/
in the chat prompt to see available commands (autocomplete is supported in the UI).Slash | Command | Action Type | Description |
---|---|---|---|
/a |
Image | GENERATE_IMAGE | Generate an image from a prompt |
/b |
Browser | BROWSER | Open/navigate to a web page |
/c |
Code | CODE | Run or generate code (if supported) |
/s |
Search | SEARCH | Search the web or knowledge base |
/w |
Workflow | WORKFLOW | Run a custom workflow (if supported) |
Note:
/b
for browser and /a
for image) return an immediate confirmation message (e.g., βOk, Iβve navigated to β¦β, βOk, generating your imageβ¦β)./s
for search or /w
for workflow) do not return a direct message, but instead show a loading indicator until the result is ready.SLASH_COMMANDS
in src/airunner/settings.py
and may be extended in the future.For a full list of supported slash commands, type /help
in the chat prompt or see the copilot-instructions.md.
We welcome pull requests for new features, bug fixes, or documentation improvements. You can also build and share extensions to expand AI Runnerβs functionality. For details, see the Extensions Wiki.
Take a look at the Contributing document and the Development wiki page for detailed instructions.
AI Runner uses pytest
for all automated testing. Test coverage is a priority, especially for utility modules.
src/airunner/utils/tests/
pytest src/airunner/utils/tests/
src/airunner/utils/tests/xvfb_required/
pytest-qt
)xvfb-run -a pytest src/airunner/utils/tests/xvfb_required/
# Or for a single file:
xvfb-run -a pytest src/airunner/utils/tests/xvfb_required/test_background_worker.py
pytest
, pytest-qt
(for GUI), and unittest.mock
for mocking dependencies.src/airunner/utils/tests/
folder.airunner
command in the terminal to run the application.pytest
and pytest-cov
for running tests and checking coverage..ui
files and rebuilt with airunner-build-ui
.For additional details, see the Wiki.