Show HN: Nully – FOSS AI chat without the bloat
Nully is a lightweight, privacy-focused, self-hostable AI chat app powered by OpenRouter. It saves all chats locally, requires no account, and offers fast streaming with hundreds of models. Performance benchmarks show it loads faster and uses fewer resources than ChatGPT, OpenRouter, Gemini, and Claude. Features include attachments, web search, portable history, and a single small binary.
nully
super simple AI chat. fast, private, and self-hostable.
nully is a lightweight chat app for OpenRouter. bring your own API key, pick from hundreds of models, and start chatting. no account, no tracking, nothing to install.
start chatting view source
everything you need, nothing you don't
your data stays yours
chats are saved on your device, not in someone else's database. there is no account to create and nothing to sign up for.
any OpenRouter model
switch between hundreds of models from every major provider, adjust how deeply they think, and route for speed or price.
fast streaming
replies appear the moment the model starts writing, and the app stays quick even in long conversations.
one small binary
a single small program with no database and no build step. run it with Go, or deploy a tiny container.
attachments & web search
send images, PDFs, and other files. models can also search the web and read links you paste.
portable history
export your chats to a file and bring them back anytime. light and dark themes, and it works great on your phone.
fast where it counts
largest contentful paint lower is better
nully
0.2s
ChatGPT
0.6s
OpenRouter
2.6s
Gemini
2.7s
Claude
3.3s
resources loaded smaller is better
nully
210kB
OpenRouter
11.8MB
ChatGPT
15.1MB
Gemini
16.1MB
Claude
18.7MB
memory used smaller is better
nully
0.9MB
ChatGPT
32MB
OpenRouter
47MB
Gemini
50MB
Claude
94MB
measured with Chrome DevTools in July 2026: one load of each chat app's main page on the same machine and the same simulated connection (9 Mbps, 100 ms latency). resources loaded counts everything each page fetched, including cached files; memory used is the browser's peak over the first 5 seconds.
private by design
when you send a message, it goes straight from your browser to OpenRouter and the model provider you chose — it never passes through a nully server. your history, settings, and API key are saved on your device, and the page is locked down so your key can only ever be sent to OpenRouter. if you want an extra guarantee, one toggle limits your chats to providers that promise not to keep your data.
self-host it in a minute
git clone https://github.com/robbiegwald/nully.git cd nully go run ./cmd/nully
prefer Docker? docker build -t nully . && docker run --rm -p 4321:4321 nully gives you a small, locked-down container. or skip the setup and use the hosted app at nully.chat.