
AON
io.github.leo007-htunPublished by GitHub account leo007-htunv1.0.2Updated Oct 24, 2026
Self-hosted, uncensored AI agent: ask it tasks, search its long-term memory and your documents.
Overview
Exposes a self-hosted, local-model AI agent to MCP clients so an assistant can hand it tasks and search its memory and document library.
- What you can do
- Hand AON a task or question, answered with its own local model, memory, documents and tools, optionally continuing a chat
- Search and save long-term memory facts about the user
- Search and list the document library, and add text documents to it
- Shell commands and file writes are refused over MCP because no one can approve them inside another app
- When to use it
- Useful when you already run AON on your own hardware and want Claude Desktop, Claude Code or Cursor to delegate tasks to it or query its private memory and documents without sending data to a cloud model.
- Requirements
- Local process started by the MCP client via the aon-agent package (uvx or pipx); Linux with Python 3.11 or newer; Ollama with an embedding model and a tool-capable chat model, or a vLLM chat backend; an AON home folder created with aon init. No API keys or environment variables are declared.
Installation
In SourceWeft
- Open AON in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
🛰️ AON : Self-Contained Obliterated AI
Your own uncensored AI agent. One GPU. Zero cloud. Zero filters.
[Website] [Live] [YouTube demo] [PyPI] [MCP server] [Android APK]
⚡ Quick start · 💡 Why AON · 🔌 MCP server · 📱 Android · 🔑 Live instance · 🎬 Demo
AON is a self-hosted AI agent that runs on your own hardware with local models. It answers questions, runs tools (files, shell, web search, maps), remembers you across chats, reads your documents, and extends itself with new models, skills and MCP servers. Use it from the web, the Android app, Telegram, or from Claude Desktop, Claude Code and Cursor through its MCP server.
[!IMPORTANT] 🔒 Nothing leaves your box. Chat runs on vLLM or Ollama on your own GPU, embeddings on Ollama. No cloud LLM, no API bills, no provider filtering or logging.
⚡ Quick start
[!TIP] You need Ollama with
nomic-embed-textand a chat model that supports tools:ollama pull nomic-embed-text && ollama pull qwen3:14b. Then tryaon mcpto plug AON into Claude Desktop (how).
💡 Why AON
Memory and RAG are table stakes now. What AON adds:
- 🔓 Obliterated and fully yours. An uncensored ("obliterated") 27B model on a single consumer GPU (RTX 4090). Your chats, memory and documents never leave the box.
- 🧬 It extends itself. Paste a link and AON works out what it is: a GGUF model it can pull (it checks the VRAM budget and tool support first), an MCP server it can connect, a skill repo it can import, or docs it can learn from. It can draft a new skill from any web page and test it.
- 🔌 Plugs into the AI apps you already use.
aon mcpturns AON into an MCP server for Claude Desktop, Claude Code and Cursor, so they can hand it tasks and search its memory and your documents. - 👥 A private AI for your whole crew, from one GPU. vLLM serves several people at once, behind Cloudflare Access email PIN, with every user approved by hand.
- 🛡️ Honest by design. Shell commands and file writes wait for your approval. A reply that claims "done" without a tool having run is not trusted. Secrets are never saved to memory.
- 🗺️ Grounded, not guessed. Places and routes come from OpenStreetMap routing on a 3D globe; distances and times are computed, not written by the model.
🔌 MCP server
Use AON inside Claude Desktop, Claude Code, Cursor and any other MCP client.
[Claude Desktop] [Claude Code] [Cursor] [stdio]
aon mcp runs AON as a Model Context Protocol server. It ships
in the aon-agent package
(source); your MCP client starts it for you.
[!NOTE] Shell commands and file writes are always refused over MCP: there is nobody to approve them inside another app.
Claude Desktop and Cursor
- Claude Desktop: Settings →
Developer → Edit Config (
claude_desktop_config.json), then restart it. - Cursor:
~/.cursor/mcp.json, or.cursor/mcp.jsonin a project.
Add "--home", "/path/to/home" to args for a different home folder. If the client can't find
aon, use the full path from which aon.
🎬 Demo
[Watch the AON demo on YouTube]
▶️ Click to watch on YouTube
✨ Features
🏗️ Architecture
Built with
[Python] [FastAPI] [Uvicorn] [httpx] [WebSockets] [MCP] [pypdf] [SQLite] [vLLM] [Ollama] [nomic-embed-text] [MapLibre] [Cloudflare] [pytest]
📱 Android app
260 KB, Android 7.0 or newer.
- Open the link on your phone and download the APK.
- Allow installs from your browser when Android asks (Install unknown apps), then tap Install.
- Open AON and sign in with your approved email address (see Try the live instance).
The app opens https://aon.vulkron.uk by default. To use your own server, press Back in the
app and choose Change server, for example http://192.168.1.50:8700 on your home network.
The APK is signed (APK Signature Scheme v2, certificate CN=AON, O=Vulkron, C=GB); its SHA-256 is
on the release page.
🔑 Try the live instance
Access to https://aon.vulkron.uk is by approval only:
- 📝 Request access. Open an issue titled Access request, saying who you are and what you would like to use AON for. Please do not post your email address in the issue; the maintainer will reply and tell you how to send it.
- ⏳ Wait for approval. Requests are reviewed by hand. Once yours is approved, your email address is added to the allowed list and the issue is closed with a note.
- ✅ Sign in. Open https://aon.vulkron.uk, enter the approved email address, and type the one-time PIN that is emailed to you. The PIN sign-in is handled by Cloudflare Access.
[!WARNING] Access can be withdrawn at any time. The instance runs on private hardware with limited capacity: please do not use it for anything illegal, for automated or bulk traffic, or to process other people's personal data, and expect a short wait when several people are using it.
📦 Installation
Requirements
- Linux (runs on Ubuntu), Python 3.11 or newer.
- Ollama with an embedding model (
ollama pull nomic-embed-text) and a chat model with tool support (for exampleollama pull qwen3:14b), unless chat runs on vLLM. - Optional: a GPU server running vLLM (
vllm/). - Optional: Node.js 20 for
npx-based MCP servers.
Install
Everything AON keeps (config, chats, memory, documents, skills) lives in its home folder:
--home DIR, else $AON_HOME, else ~/.aon.
From source (for development)
⚙️ Configuration
aon init writes config.toml into the home folder; edit it to taste. Keep context_window
equal to vLLM's --max-model-len (or the Ollama model's context).
All config.toml keys
🚀 Running
In the background
As a systemd service (starts at boot, restarts on failure)
Change User, AON_HOME and the aon path (which aon) to match your setup.
⚡ Multi-user with vLLM
Ollama answers one request at a time for some models. To serve several users, run the chat model on vLLM and point AON at it:
vllm/ has the systemd unit, the chat template and the exact package versions used.
Measured on one RTX 4090 (24 GB) with a 27B 4-bit model: 16K context serves 2–3 full-length
requests at once and the rest queue; 8K serves 4.
🌐 Remote access
AON has no login of its own. Keep bind on your LAN and, to reach it from outside, put it behind
an authenticating proxy, for example a Cloudflare Tunnel with Cloudflare Access (email PIN).
Geolocation in the map needs HTTPS.
🧪 Development
Project layout
💾 Data
AON keeps its data in its home folder: workspace/app.db (chats), workspace/docs.db (document
library), memory/episodes.db (memory) and workspace/uploads/ (attachments). This repository
includes a snapshot of them from 2026-10-14. A fresh install creates empty ones; to start clean,
delete them before the first run. The Glama API key is kept in .glama_key, which is git-ignored.
🤝 Contributing
Issues and pull requests are welcome. For anything bigger than a fix, please
open an issue first to talk it through. Run
pytest -q before sending a pull request.
📄 License
AON is released under the MIT License. © 2026 Sithu Htun (@leo007-htun).
Bundled third-party files keep their own licenses, included next to them: CybercoreCSS (MIT), MapLibre GL JS (BSD-3-Clause), highlight.js (BSD-3-Clause), and the Exo 2, JetBrains Mono, Orbitron and Rajdhani fonts (SIL Open Font License).
If AON is useful to you, give it a ⭐. It helps others find it.
Source: README.md at commit befe1ff
Tools
0Version history
1- v1.0.2LatestOct 14, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
