Davemaina1 bolts the fork to Anthropic and aims it at Kenyan law

This isn't a multi-model experiment anymore - it's a single-vendor legal product with a clear home jurisdiction.

infrastructuredrafting

Davemaina1 has stripped out the fork's provider flexibility and committed entirely to Anthropic's Claude models. Anything that isn't a Claude model now gets quietly redirected to one, alternative engines like Google's Gemini are switched off, and even a user's own API keys are ignored in favour of the team's own account. In short: every request runs on Claude, no exceptions.

The more telling change sits in how the tool drafts. A new drafting mode carries built-in instructions for Kenyan legal conventions and statute citation - a strong signal that this fork isn't a general-purpose tool being kicked around, but a real product being built for the Kenyan market. The rest of the work is plumbing to make that single-vendor setup behave.

So what Worth a look if you're watching how legal-AI tools get specialised for a specific country's law and court conventions, rather than sold as one-size-fits-all.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

2 commits from Davemaina1/iroh_, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
1f973e7d fix: force all chat to Claude - runtime guards + remove Gemini fallback in resolveTitleModel Davemaina1 2026-05-12 ↗ GitHub
commit body
- gemini.ts: throw [Iroh] guard at top of streamGemini and completeGeminiText; add @ts-nocheck since dead code is preserved for later removal
- llm/index.ts: toClaudeParams uses QUICK_MODEL explicitly and console.warns on coercion; completeText same
- chatTools.ts: runLLMStream guards selectedModel with startsWith("claude") check + QUICK_MODEL fallback, warns if coerced; imports QUICK_MODEL directly
- models.ts: add QUICK_MODEL/DEEP_MODEL/DRAFT_MODEL constants, modeToModel(), update defaults to Claude
- userSettings.ts: resolveTitleModel always returns QUICK_MODEL - drop Gemini branch entirely
- chat.ts / projectChat.ts: read mode from request body, compute model via modeToModel(), inject DRAFT_SYSTEM_PROMPT_EXTRA for draft mode, remove getUserApiKeys calls
- Frontend: replace ModelToggle dropdown with ModeToggle 3-button segment (Quick/Deep/Draft); useSelectedMode hook; mode field on MikeMessage; account/models page disabled with Iroh notice

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4fbd7517 fix: gate extended thinking to Opus models only Davemaina1 2026-05-12 ↗ GitHub
commit body
Haiku (and Sonnet) reject the thinking parameter - only claude-opus-*
supports adaptive thinking. Guard at two layers:
- chatTools.ts: derive enableThinking from selectedModel.startsWith("claude-opus")
  so the flag is false for Quick (Haiku) and true for Deep/Draft (Opus)
- claude.ts: secondary guard on both the flag and model name so a
  misconfigured caller can never send thinking to a non-Opus model;
  same guard on the stream.on("thinking") listener for consistency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-376.md from inside the repo you want the changes in.

⬇ Download capture-thread-376.md