Summary. Below — why this architecture, what's inside, and why it stays small.
Why multi-AI in one chat. Every model has a profile: Claude Opus reasons deeply, GPT-5.2 Think is faster on technical tasks, Gemini holds a huge context, Grok offers a less polite but sometimes more honest view. Tab-hopping between chat.openai.com, claude.ai, gemini.google.com and x.ai loses context and time. GoraBot keeps all four providers in one Telegram chat under a single rate limit and billing logic.
Chains. Not "pick a model" — "run the task through all of them". Opus does the analysis → GPT-5.2 continues with the analysis on hand → Gemini adds context → Grok offers the contrarian view. Each model sees the previous results and avoids repeating them. The output is four perspectives on one task, glued into one thread.
Debates. Polemic between models. Set the topic, pick 2–4 participants, pick the style. AIs argue in rounds; in the end, GPT-as-judge delivers a verdict. Useful when you don't know which side to take: you walk away with three or four reasoned views and a third-party decision.
Projects. Context folders. Each project keeps its own conversation history and system prompt. Switch projects with one command — /project ge.hiregora.com and the bot is already in the landing-page context, remembering prior discussions. 14 live projects in the DB on publication date.
Architecture without overkill. python-telegram-bot 21 with aiogram-style handlers, SQLite for everything, one client module per provider, systemd unit, bot.py.backup for rollback. No Kubernetes, no Docker, no Redis — this is a bot for 56 users, and every layer of complexity would have cost a week of work instead of two days.