Skip to main content
A big week for providers and memory. Freesona now supports seven AI providers, a fully managed local knowledge base, and multimodal inputs beyond Gemini.

New features

  • Multi-provider support expanded to seven providers. You can now run Freesona on Gemini, OpenAI, Ollama, NVIDIA NIM, Azure AI Foundry, Groq, or OpenRouter, and switch between them at runtime with /model. Bring your own key for whichever provider you prefer. See AI Providers.
  • GitHub Models provider. Authenticate with a GITHUB_TOKEN to route generations through the GitHub Models catalog using the same OpenAI-compatible flow as other providers. See Environment Variables.
  • Knowledge base commands. Manage a local ChromaDB knowledge base directly from Discord with /kbadd, /kblist, /kbsearch, and /kbdelete. Ingestion now accepts .txt, .json, and .pdf files, and the retrieval flow is provider-neutral so it works on every provider. See Knowledge Base.
  • Multimodal on non-Gemini providers. Image attachments are now forwarded as base64 payloads to compatible non-Gemini providers (starting with NVIDIA NIM), so vision prompts are no longer Gemini-only. See AI Providers.
  • Anniversary tracking. Freesona can track and announce member anniversaries per guild, backed by a new anniversaries.db store.
  • Warning system. A first-class warning workflow with a configurable auto-action threshold. See Moderation.

Updates

  • Server-side memory continuity. Conversation continuity now uses the Interactions API with previous_interaction_id on supported providers, replacing the old rolling-window approach. Long-term facts are scoped to a stable guild_id + user_id key so memories follow the right user across channels. See Memory.
  • Per-user, per-channel debouncing. Response debouncing is now scoped per user and per channel instead of globally, so parallel conversations feel more responsive.
  • Per-user autonomy cooldown. Autonomous replies now enforce a cooldown per user, preventing the bot from over-engaging with any single member. See Autonomy.
  • Typing indicators. Freesona now shows a typing indicator while generating a response, so users know a reply is on the way.
  • Runtime RSS channel controls. New /rss setchannel and /rss clearchannel commands let you change the announcement target without restarting. See RSS Feeds.
  • Configurable port and debounce. The web port and debounce interval are no longer hardcoded — set them via environment variables. See Environment Variables.
  • Sample config file. The shipped config is now config.sample.json so your local settings won’t get overwritten on update. See Configuration.
  • Reply threading. The bot once again replies directly to the triggering message where appropriate, keeping conversations easier to follow.

Bug fixes

  • Fixed multi-user identity confusion where the model could conflate messages from different users in the same channel.
  • Fixed vision hallucinations and enabled reliable base64 image payloads on NVIDIA NIM.
  • Fixed a rate limiter error on the Gemini provider.
  • Fixed a memory extraction exception when the model returned non-dict JSON for user facts.
  • Fixed autonomy crashes when the bot attempted to post in a blocked channel.
  • Fixed the math cog so it degrades gracefully when optional plotting dependencies are missing.
  • Corrected ~randommember permission requirements and clarified /clearmemory behavior in the Command Reference.