A ChatGPT-style local AI chat interface powered by the airllm library. Run large language models entirely on your machine — no cloud, no API keys, no data sent externally.
Pre-built binaries available on GitHub Releases — no Python needed!
.exe on Windows# 1. Clone or download this folder
cd airllm-chat
# 2. Create virtual environment and install
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
# 3. Run the app
python app.py
# Or use the convenient script:
run.bat
Then open http://127.0.0.1:7860 in your browser.
.exe Binary# Double-click or run:
build.bat
# The executable will be at:
# dist\airllm-chat\airllm-chat.exe
Copy the entire dist\airllm-chat\ folder to any Windows machine and run airllm-chat.exe.
cd airllm-chat
python3 -m venv venv
source venv/bin/activate
pip install airllm
python app.py
This is exactly how Ollama works. AirLLM Chat exposes an OpenAI-compatible API, so any client that supports "OpenAI Compatible" or "custom OpenAI endpoint" will work.
python app.py --model garage-bAInd/Platypus2-70B-instruct --no-browser
http://127.0.0.1:7860/v1sk-local, it's ignored)no-model-loaded to auto-switch)API Provider: OpenAI Compatible
Base URL: http://127.0.0.1:7860/v1
Model ID: garage-bAInd/Platypus2-70B-instruct
API Key: sk-local
{
"models": [{
"title": "AirLLM Local",
"provider": "ollama",
"model": "garage-bAInd/Platypus2-70B-instruct",
"apiBase": "http://127.0.0.1:7860/v1"
}]
}
interpreter --api_base http://127.0.0.1:7860/v1 --model garage-bAInd/Platypus2-70B-instruct
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:7860/v1", api_key="sk-local")
resp = client.chat.completions.create(
model="garage-bAInd/Platypus2-70B-instruct",
messages=[{"role": "user", "content": "Hello!"}]
)
print(resp.choices[0].message.content)
curl http://127.0.0.1:7860/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"garage-bAInd/Platypus2-70B-instruct","messages":[{"role":"user","content":"Hello"}]}'
python app.py [OPTIONS]
Options:
--port PORT Port to run the server on (default: 7860)
--host HOST Host to bind to (default: 127.0.0.1)
--model MODEL Model path or HuggingFace repo ID to auto-load
--max-tokens N Max new tokens for generation (default: 512)
--temperature T Temperature for generation (default: 0.7)
--no-browser Don't open browser automatically
# Auto-load a model on startup
python app.py --model garage-bAInd/Platypus2-70B-instruct
# Use a local GGUF model file
python app.py --model "C:\Models\llama-7b-chat.Q4_K_M.gguf"
# Expose on local network
python app.py --host 0.0.0.0 --port 8080
The project includes a full GitHub Actions pipeline:
| Workflow | Trigger | What it does |
|---|---|---|
| CI | Push / PR to main | Lint, type check, test, build smoke test |
| Build | Push to main / Manual | Build binaries for all platforms (artifacts, no release) |
| Release | Tag push (v*) | Build all platforms + create GitHub Release |
# 1. Tag your version
git tag v1.0.0
git push origin v1.0.0
# 2. GitHub Actions automatically:
# - Builds Windows .exe
# - Builds Linux binary (tar.gz)
# - Builds macOS binary (zip)
# - Creates source tarball + zip
# - Generates SHA256 checksums
# - Publishes everything as a GitHub Release
Go to Actions > Build in GitHub, click Run workflow, select which platforms to build. Binaries are available as artifacts for 14 days.
| File | Platform | Description |
|---|---|---|
airllm-chat-windows-x64.zip | Windows | Standalone .exe bundle |
airllm-chat-linux-x64.tar.gz | Linux | Pre-built binary |
airllm-chat-macos.zip | macOS | Pre-built binary |
airllm-chat-src.tar.gz | All | Source code |
airllm-chat-src.zip | All | Source code |
SHA256SUMS.txt | All | Integrity checksums |
airllm supports various quantized model formats. Popular choices:
| Model | Size | Format |
|---|---|---|
| garage-bAInd/Platypus2-70B-instruct | 70B | GPTQ |
| garage-bAInd/Platypus2-13B-instruct | 13B | GPTQ |
| TheBloke/Llama-2-7B-Chat-GPTQ | 7B | GPTQ |
| Any GGUF model | Varies | GGUF |
You can also use any local model path — just type or paste the path in the model selection dropdown (editable).
airllm-chat/
├── .github/
│ ├── workflows/
│ │ ├── ci.yml # CI pipeline (lint, test, build check)
│ │ ├── build.yml # On-demand build (manual trigger)
│ │ └── release.yml # Full release (tag trigger)
│ └── RELEASE_NOTES.md # Release notes template
├── app.py # Main server & API endpoints (OpenAI-compatible)
├── airllm_engine.py # airllm wrapper engine
├── airllm-chat.spec # PyInstaller build spec
├── build.bat # Windows build script
├── build.sh # Linux/macOS build script
├── run.bat # Windows run script
├── run.sh # Linux/macOS run script
├── requirements.txt # Python dependencies
├── templates/
│ └── index.html # Main HTML page
├── static/
│ ├── style.css # Dark theme styles
│ └── app.js # Frontend JavaScript
├── LICENSE # MIT License
└── README.md # This file
"No model loaded" — Select and load a model from the sidebar before chatting.
Model download is slow — First-time downloads from HuggingFace can be large. Use a local model path if available.
Out of memory — Try a smaller model (7B instead of 70B), or reduce batch sizes.
Build fails with PyInstaller — Make sure all dependencies are installed in the virtual environment. Try deleting venv/ and build/ folders, then rebuild.
| Endpoint | Method | Description |
|---|---|---|
/ | GET | ChatGPT-style web UI |
/v1/chat/completions | POST | OpenAI-compatible chat (streaming supported) |
/v1/models | GET | List available models (OpenAI format) |
/api/chat | POST | Internal chat endpoint |
/api/load | POST | Load a model |
/api/settings | POST | Update temperature/tokens |
/api/info | GET | Engine status |
8 commits
5 commits
Python
70.6%
JavaScript
9.3%
HTML
6.7%
TypeScript
5.8%
TeX
5.1%
Shell
2.3%
A ChatGPT-style local AI chat interface powered by the airllm library. Run large language models entirely on your machine — no cloud, no API keys, no data sent externally.
Pre-built binaries available on GitHub Releases — no Python needed!
.exe on Windows# 1. Clone or download this folder
cd airllm-chat
# 2. Create virtual environment and install
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
# 3. Run the app
python app.py
# Or use the convenient script:
run.bat
Then open http://127.0.0.1:7860 in your browser.
.exe Binary# Double-click or run:
build.bat
# The executable will be at:
# dist\airllm-chat\airllm-chat.exe
Copy the entire dist\airllm-chat\ folder to any Windows machine and run airllm-chat.exe.
cd airllm-chat
python3 -m venv venv
source venv/bin/activate
pip install airllm
python app.py
This is exactly how Ollama works. AirLLM Chat exposes an OpenAI-compatible API, so any client that supports "OpenAI Compatible" or "custom OpenAI endpoint" will work.
python app.py --model garage-bAInd/Platypus2-70B-instruct --no-browser
http://127.0.0.1:7860/v1sk-local, it's ignored)no-model-loaded to auto-switch)API Provider: OpenAI Compatible
Base URL: http://127.0.0.1:7860/v1
Model ID: garage-bAInd/Platypus2-70B-instruct
API Key: sk-local
{
"models": [{
"title": "AirLLM Local",
"provider": "ollama",
"model": "garage-bAInd/Platypus2-70B-instruct",
"apiBase": "http://127.0.0.1:7860/v1"
}]
}
interpreter --api_base http://127.0.0.1:7860/v1 --model garage-bAInd/Platypus2-70B-instruct
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:7860/v1", api_key="sk-local")
resp = client.chat.completions.create(
model="garage-bAInd/Platypus2-70B-instruct",
messages=[{"role": "user", "content": "Hello!"}]
)
print(resp.choices[0].message.content)
curl http://127.0.0.1:7860/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"garage-bAInd/Platypus2-70B-instruct","messages":[{"role":"user","content":"Hello"}]}'
python app.py [OPTIONS]
Options:
--port PORT Port to run the server on (default: 7860)
--host HOST Host to bind to (default: 127.0.0.1)
--model MODEL Model path or HuggingFace repo ID to auto-load
--max-tokens N Max new tokens for generation (default: 512)
--temperature T Temperature for generation (default: 0.7)
--no-browser Don't open browser automatically
# Auto-load a model on startup
python app.py --model garage-bAInd/Platypus2-70B-instruct
# Use a local GGUF model file
python app.py --model "C:\Models\llama-7b-chat.Q4_K_M.gguf"
# Expose on local network
python app.py --host 0.0.0.0 --port 8080
The project includes a full GitHub Actions pipeline:
| Workflow | Trigger | What it does |
|---|---|---|
| CI | Push / PR to main | Lint, type check, test, build smoke test |
| Build | Push to main / Manual | Build binaries for all platforms (artifacts, no release) |
| Release | Tag push (v*) | Build all platforms + create GitHub Release |
# 1. Tag your version
git tag v1.0.0
git push origin v1.0.0
# 2. GitHub Actions automatically:
# - Builds Windows .exe
# - Builds Linux binary (tar.gz)
# - Builds macOS binary (zip)
# - Creates source tarball + zip
# - Generates SHA256 checksums
# - Publishes everything as a GitHub Release
Go to Actions > Build in GitHub, click Run workflow, select which platforms to build. Binaries are available as artifacts for 14 days.
| File | Platform | Description |
|---|---|---|
airllm-chat-windows-x64.zip | Windows | Standalone .exe bundle |
airllm-chat-linux-x64.tar.gz | Linux | Pre-built binary |
airllm-chat-macos.zip | macOS | Pre-built binary |
airllm-chat-src.tar.gz | All | Source code |
airllm-chat-src.zip | All | Source code |
SHA256SUMS.txt | All | Integrity checksums |
airllm supports various quantized model formats. Popular choices:
| Model | Size | Format |
|---|---|---|
| garage-bAInd/Platypus2-70B-instruct | 70B | GPTQ |
| garage-bAInd/Platypus2-13B-instruct | 13B | GPTQ |
| TheBloke/Llama-2-7B-Chat-GPTQ | 7B | GPTQ |
| Any GGUF model | Varies | GGUF |
You can also use any local model path — just type or paste the path in the model selection dropdown (editable).
airllm-chat/
├── .github/
│ ├── workflows/
│ │ ├── ci.yml # CI pipeline (lint, test, build check)
│ │ ├── build.yml # On-demand build (manual trigger)
│ │ └── release.yml # Full release (tag trigger)
│ └── RELEASE_NOTES.md # Release notes template
├── app.py # Main server & API endpoints (OpenAI-compatible)
├── airllm_engine.py # airllm wrapper engine
├── airllm-chat.spec # PyInstaller build spec
├── build.bat # Windows build script
├── build.sh # Linux/macOS build script
├── run.bat # Windows run script
├── run.sh # Linux/macOS run script
├── requirements.txt # Python dependencies
├── templates/
│ └── index.html # Main HTML page
├── static/
│ ├── style.css # Dark theme styles
│ └── app.js # Frontend JavaScript
├── LICENSE # MIT License
└── README.md # This file
"No model loaded" — Select and load a model from the sidebar before chatting.
Model download is slow — First-time downloads from HuggingFace can be large. Use a local model path if available.
Out of memory — Try a smaller model (7B instead of 70B), or reduce batch sizes.
Build fails with PyInstaller — Make sure all dependencies are installed in the virtual environment. Try deleting venv/ and build/ folders, then rebuild.
| Endpoint | Method | Description |
|---|---|---|
/ | GET | ChatGPT-style web UI |
/v1/chat/completions | POST | OpenAI-compatible chat (streaming supported) |
/v1/models | GET | List available models (OpenAI format) |
/api/chat | POST | Internal chat endpoint |
/api/load | POST | Load a model |
/api/settings | POST | Update temperature/tokens |
/api/info | GET | Engine status |
8 commits
5 commits
Python
70.6%
JavaScript
9.3%
HTML
6.7%
TypeScript
5.8%
TeX
5.1%
Shell
2.3%