A new owl has reached the Mediabot tower.
MB721 introduces Google Gemini as a native third provider behind the shared Mediabot::AI::Client, adds the opt-in public !gemini command, extends Hailo’s provider-neutral post-editor, and updates the road to Mediabot 3.5.
The implementation was developed, tested and piloted on the development instance before being committed. Production services were not restarted or modified.
Commit: 00794c9fd5a8e60ef9187fe7ffc1720d17ed4cd1
Development version: 3.4dev-20260902_200411
Gemini now joins Anthropic and OpenAI behind Mediabot’s common AI client.
The provider adapter handles:
generateContent endpoint;gemini-3.8-flash stable model by default;x-goog-api-key header;An explicit Gemini request remains strictly Gemini. It never silently crosses to Anthropic or OpenAI.
The existing auto policy keeps its compatibility order:
Gemini is considered by auto only when it is configured. The API key remains exclusively in the private mediabot.conf; it is never placed in a request object, URL, log, repository file or operator artifact.
Gemini 3.8 can spend part of its output budget on internal reasoning. Small limits may therefore produce a successful HTTP response without any visible text.
MB721 makes this behavior explicit:
LOW;1024 tokens;2048 tokens;If Google returns HTTP 200 without visible text, Mediabot records only safe structural information such as:
No prompt, response text, thought content, authentication header or credential enters that diagnostic evidence.
!gemini command 🔐The new command is deliberately opt-in:
!gemini <prompt>
It is protected by a strict per-channel capability:
m chanset +Gemini
The +Gemini gate is the outermost command boundary. A channel where Gemini is disabled receives no syntax response, configuration notice or provider call. It cannot even use the command to discover whether a Gemini key exists.
The command also includes:
PRIVMSG lines;The migration 20260902_gemini_chanset.sql only registers the Gemini capability. It enables no channel automatically.
The operator remains responsible for choosing the pilot channel:
m chanset +Gemini
!gemini Reply with one short sentence
It can be disabled just as explicitly:
m chanset -Gemini
MB720 established Hailo’s isolated per-channel brains, reply-before-learn ordering and provider-neutral constrained post-editor.
MB721 extends that foundation: Hailo may now explicitly select Gemini through:
HAILO_POST_EDIT_PROVIDER=gemini
This does not change Hailo’s creative ownership of the answer.
The learned Hailo draft remains the anchor. Gemini may perform the same bounded, language-aware post-editing already defined by the MB720 policy, but it cannot replace Hailo with an unrelated generic assistant response.
If the provider is unavailable, rejects the request, returns malformed output or rewrites the draft too aggressively, Mediabot keeps the original sanitized Hailo candidate.
No automatic Hailo provider change is imposed by MB721. Existing installations retain their current provider and fallback behavior until an operator deliberately selects Gemini.
The rollout was completed on the development instance with a real Gemini key kept outside the repository.
The final evidence includes:
168/168 passed;6847/6847 passed;18300/18300 passed;gemini-3.8-flash;The final commit contains 24 files: 23 reviewed project paths plus the development VERSION update. The local commit.sh, private configuration, backups, logs and validation markers remain outside Git.
MB721 also removes a roadmap numbering collision and records Gemini as a completed development pilot.
The remaining path is now:
mbweb is supported or experimental;Mediabot therefore remains on the 3.4dev line. MB721 is a substantial new capability, not an implicit 3.5 release.
Gemini is now available without weakening Mediabot’s existing privacy and routing boundaries.
It enters through a guarded door, speaks only where invited, keeps its reasoning out of IRC, and can assist Hailo without stealing Hailo’s voice.
The Floo connection is open — but only on channels holding the right permission.
You must be logged in to reply.