πŸ”‘ FreeLLMAPI Lockout Fix β€” the Reset Code Prints to Your Server Logs, Not Your Email

FreeLLMAPI is a free-AI engine you run on your own machine. It stacks the free tiers of 34 providers β€” Google, Groq, Cerebras, Mistral, Cohere, NVIDIA and more β€” behind one OpenAI-compatible endpoint: around 635 free models and 7.4 billion tokens a month, with automatic switching when one provider hits its limit. Point Claude Code, Cursor, Cline or any OpenAI SDK at it and everything keeps working for free.

Which is exactly why a lockout stings: that dashboard holds every provider key you own. :key:

The fix takes thirty seconds. Its Forgot password? button sends no email β€” there is no mail server behind it. The one-time code prints into the server’s own logs, where only the operator can read it. That operator is you.

Order matters β€” logs first, click second:

1️⃣  docker compose logs -f freellmapi     ← leave this running
2️⃣  click "Forgot password?" on the login page
3️⃣  read the one-time code as it appears

Paste it in while the line is still on screen. The code lives 15 minutes.

:warning: Do not wipe the container instead. down -v deletes the SQLite volume, and your provider keys are encrypted inside it β€” you would be re-adding every one of them for a lockout that takes half a minute to clear.

Running from source? Same code, printed in the terminal where the server process runs.
Using the desktop app? This does not apply β€” that one uses local desktop authentication, so there is nothing to find in logs.


I’ve been digging much deeper into FreeLLMAPI lately. My first reaction was that it’s overbuilt for what I need β€” and the more I get into it, the more genuinely useful functionality I keep finding. That’s changing my thinking.

Instead of replacing it, I’m considering keeping FreeLLMAPI as the underlying engine and building a cleaner BCBC management and automation layer on top. There is a lot here that can be exposed through scripts and APIs without forcing users or admins to deal with all the complexity underneath.

Sometimes the better engineering decision isn’t another rewrite. It’s working out which parts of an existing project are genuinely valuable, putting a cleaner interface around them, and building from there.

:link: Project: FreeLLMAPI on GitHub