Alurx
A Discord bot that talks like a member of the server instead of a command menu. It holds real conversations, remembers people, joins your voice call and talks back. It runs entirely on free models, on a 1 GB VPS with no GPU.
[01] why
A bot that acts like a regular
Most Discord bots are menus with a slash in front. I wanted one that behaves like someone who hangs out in the server: it answers when you talk to it, follows the thread, remembers who you are and knows when to stay quiet.
The other rule was that it costs nothing to run. No paid model, no GPU, one 1 GB VPS. Everything else had to fit around that. The codebase is called Clade.
[02] what it does
What it can do
Conversation
- Answers when it's mentioned, replied to or DMed. If someone only says its name, a small model decides whether they were actually talking to it.
- Treats a quick burst of messages as one thought, and picks up edits made while it's still writing.
- Says what it's about to do before it uses a tool, and shows a one-line summary of what it's thinking while it works.
- Can decide to stop answering someone who keeps wearing it down. It never mutes or bans anyone for it, it just goes quiet.
Voice
- Hears voice messages and can answer with its own.
- Ask it to join and it comes into your voice channel, listens and talks back. It knows who said what, announces itself, and anyone can tell it to stop listening to them.
Memory
- Channel history, a rolling summary of older messages and dated snapshots.
- A short memory card per person, which they can view, export or delete.
- Tracks promises and open questions, and keeps a style note per server so its voice stays the same whichever model is answering.
- Delete a message in Discord and it's deleted from its memory too.
Tools
82 of them: web search and page reading, moderation, channels and roles, reminders, polls, maths, weather, Wikipedia, server search, image generation and vision, background tasks for long jobs, and writing new tools for itself once I approve them. It can even look things up in a fly's brain.
Safety
- Permission tiers for everyone, staff, owner and trusted operators. Anything destructive shows the exact targets and waits for a click.
- After it reads something untrusted, like a web page or a file, moderation needs a click too.
- Keys and tokens are blanked in the log channel.
[03] how it works
How a message travels
- discordwho's talking
- pipelinepersona, memory
- agent loopmodel ↔ tools
- gatewayretries, routing
- free modelsnim · groq · gemini
The bot only ever talks to one endpoint, a LiteLLM proxy. Models have aliases like main, fast and vision, and each alias falls back down a chain of other free models when a provider is down or slow. Swapping a model never touches bot code.
Hearing runs on Groq's Whisper and speaking on Groq's Orpheus, with Microsoft Edge voices when Orpheus can't.
[04] numbers
In numbers
- tools
- 82
- tests
- 667
- model bill
- $0
- server
- 1 GB
[05] keeping it alive
Running it
It runs as systemd services next to the proxy. While it restarts, a small doorman process speaks for it, so the server never sees it go silent.
Every feature is a switch in one config file, and every fix comes with a test that fails when the fix is removed.
[06] war stories
Things that went wrong
- NVIDIA retired four models in seven weeks. An audit found most of the backup chain was dead, so it was rebuilt across five free providers with health checks and cooldowns.
- A 12 second timeout was quietly killing every good reply. That was the whole “slow and stupid” week.
- It got stuck adding a 🐾 to everything, even while apologising for it. A banned-token filter now catches it before anything is saved or sent.
- Link fetching could reach internal addresses. Those are blocked now, and every redirect gets checked again.
[07] timeline
How it got here
- Moved to the current codebase after the model shake-up.
- Fallback chain rebuilt across five free providers.
- Learned when to say nothing. Gemini joined for vision.
- Memory cards, background tasks, thought summaries and voice calls.
- 82 tools and 667 tests.
[08] built with
Made with
- Python
- discord.py
- LiteLLM
- SQLite
- NVIDIA NIM
- Groq
- Gemini
- OpenRouter
- Mistral
- Cerebras
- ffmpeg
- systemd