brauliogusmao ↗ analysis ↗ GitHub brauliogusmao/mike
A Brazilian-Portuguese rebuild of Mike that can run entirely on your own hardware and wear your own brand.
This is @brauliogusmao's take on Mike, rebuilt for Brazil rather than merely translated. The whole interface has been adapted to Brazilian Portuguese with product decisions aimed squarely at the local legal market, and there's a Portuguese-language changelog documenting the work - a sign someone is treating this as a real product for real users, not a weekend experiment.
Two choices define the direction. First, it can point at locally-hosted AI models instead of only calling out to remote providers - meaning the model can live entirely on your own machine, no cloud round-trip. Second, a whitelabel layer lets each deployment set its own app name, logo, page title, and link-preview metadata, so the same product can ship under different brands. Together they read as a fork built for firms that want private, self-hosted legal AI they can put their own name on.
The rest of the work is the unglamorous stuff that separates a demo from something you'd deploy: surfacing real error messages when the AI fails mid-answer instead of a generic stream error, and fixing an upstream bug where live responses containing a table or formula could crash the chat before finishing. @brauliogusmao is worth a click if self-hosted, Portuguese-first legal AI is your thing.
What's in it
- Portuguese-Brazilian throughout An end-to-end pt-BR adaptation of the whole interface, with product decisions baked in for the local legal market - not a surface-level translation.
- Runs on local models A local-model engine option lets the AI live entirely on your own hardware, with no cloud round-trip required.
- Whitelabel branding Each deployment can set its own app name, logo, page title, and link-preview metadata without touching the source.
- Honest error messages When the AI fails mid-answer, users learn why instead of staring at a generic stream error.
- Stable live responses Fixes a real bug where streaming answers containing a table or formula could crash the chat window before rendering.
- Documented in the open A Portuguese-language changelog records the localization, error handling, local-model, and whitelabel work with usage guidance.
Direction
i18ninfrastructurebranding
Activity
Threads of work (detailed view)
brauliogusmao wires Mike up to run on models that never leave the building
This fork can now point at locally-hosted AI models instead of only calling out to remote providers.
Ollama local model support with context preloading
brauliogusmao added Ollama as a provider, routing `ollama/<model>` IDs through a new 309-line streaming adapter. The interesting part isn't the wiring -- it's that document-fetch tools are preloaded into context rather than called reactively, because small local models don't handle reactive tool use reliably.
brauliogusmao takes Mike Brazilian, and off the cloud
A sweeping localization of the whole product into Brazilian Portuguese, bundled with a path to run the assistant on your own servers instead of a hosted AI provider.
brauliogusmao lets Mike run on your own machine
A fourth AI engine option means the model can live entirely on local hardware - no cloud round-trip required.
Ollama provider added: local models with document preloading
brauliogusmao wired Ollama in as a fourth LLM backend alongside Claude, OpenAI, and Gemini. The key design decision: instead of letting local models call document-fetch tools reactively, the adapter preloads document content into the system prompt before the first LLM call.
brauliogusmao stops Mike from swallowing its own errors
When the AI fails mid-answer, users now learn why instead of staring at a generic "stream error."
Stream errors now surface with structured codes instead of silent failure
When the LLM API returned an error during streaming, the chat UI would silently stop -- spinner gone, no message. brauliogusmao fixed the silent failure and then upgraded it to a typed error contract with six classification codes.
brauliogusmao rebuilds Mike for Brazil, not just translates it
A disciplined, end-to-end Portuguese-Brazilian adaptation of the whole interface - with product decisions baked in for the local legal market.
Full Brazilian-Portuguese localization via next-intl
brauliogusmao converted the entire frontend from hardcoded English strings to `next-intl` translation keys across 15 commits, targeting Brazilian legal market deployments. Every user-visible string from auth pages through tabular review now lives in `frontend/messages/pt-BR.json`.
brauliogusmao stops the chat from crashing mid-answer
A real upstream bug: responses that arrive live and contain a table or a formula could crash the chat window before they finished rendering.
ReactMarkdown plugins disabled during streaming to prevent removeChild crash
Two commits fix a real `removeChild` exception in `AssistantMessage.tsx` that hits any React chat UI running `rehypeKatex` or `remarkGfm` while a stream is in flight. The fix took two passes to get right.
brauliogusmao makes Mike wear your own logo
A whitelabel layer lets each deployment set its own app name, logo, page title, and link-preview metadata without touching the source.
Whitelabel branding via NEXT_PUBLIC env vars: AppLogo component + configurable metadata
brauliogusmao adds a thin branding layer that lets you swap the app name, logo, and HTML metadata via build-time env vars, with no code changes required. Six logo call sites are updated; spinners and status icons are left alone.
Pull requests (detailed view)
✅ Merged (1)
brauliogusmao · opened 2mo ago · merged 2mo ago by brauliogusmao ⛔ Closed without merge (2)
brauliogusmao · opened 2mo ago · closed 2mo ago brauliogusmao · opened 2mo ago · closed 2mo ago