v1.1.0_EN
BIBIM v1.1.0
Release date: 2026-05-18
Self-hosted LLM release — Connect BIBIM to your own Ollama, LM Studio, vLLM, or llama.cpp server. Built for teams under NDA, enterprises with data-residency requirements, and heavy users tired of paying per token.
TL;DR
Drop in your local LLM server URL and BIBIM runs on it. No cloud round-trip, no data leaving your network, zero token cost.
What's new
1. Self-hosted local LLM support (NEW)
Connect BIBIM directly to any OpenAI-compatible LLM server running on your corporate GPU, a rented cloud GPU instance (RunPod / Vast.ai), or your own workstation.
Tested setups:
- Ollama — most common, ideal for personal workstation
- LM Studio — GUI-first option
- vLLM — production / corporate GPU cluster standard
- llama.cpp server — lightweight, works on CPU / Apple Silicon
- Any other server speaking the OpenAI
/v1/chat/completionsshape (gateways like OpenRouter included)
Setup matches cloud BYOK friction — one field, one paste:
- Settings → Local LLM (Self-hosted) section
- Paste the server URL (e.g.
http://localhost:11434/v1) - Click Test & Save
- Models installed on your server are auto-detected and shown in a picker
- Done — start chatting immediately
2. Curated recommended models — BIBIM-validated
We ran an OpenRouter sweep against our Revit 2024 smoke matrix to see which open-weights models actually hold up on Revit API C# (generic coding benchmarks don't translate). Models that support tool calling, 30B+ parameters:
| Model | VRAM (4-bit) | Notes |
|---|---|---|
| Gemma 4 26B A4B IT ⭐ | ~16GB | BIBIM-validated top non-Claude pick. Fits RTX 4090 |
| Codestral 2508 (22B) | ~14GB | Fastest. Simple tasks only |
| Llama 3.3 70B Instruct | ~40GB+ | Won't fit a single 24GB GPU. A100 / dual 3090 class |
⚠ Smaller models (≤7B) have low Revit API tool-calling reliability and tend to fail code generation. Non-recommended models still work but result quality is not guaranteed.
3. Authenticated self-hosted setups (Bearer token)
For setups behind auth, the Advanced section now has an API key (Bearer token) field covering:
- vLLM launched with
--api-key <token> - Self-hosted LLM behind an authenticated reverse proxy
- Cloud GPU rental endpoints (RunPod, Vast.ai, etc.) with endpoint keys
- Tailscale / Cloudflare Tunnel gateway tokens
The value is sent as Authorization: Bearer <value> on every request. Leave blank for default Ollama / LM Studio (no auth).
4. Settings panel UX overhaul
- Active model chip — One-line summary at the top of the panel: "Active: Claude Sonnet 4.6 · sk-ant-...Ab3c". You always know what's powering BIBIM at a glance.
- Configured key sections collapse — Provider sections whose key is already saved render as a compact
✓ Key configured: ...Ab3c [Replace]row. Returning users see roughly half the visual density. - Single Local LLM entry in the model picker — The three previously-separate OSS options (Gemma / Llama / Codestral) are now one Local LLM (Self-hosted) entry whose note dynamically shows your active server-side model (e.g.
Active: gemma2:27b). - Section reorder — Guide → Current setup → Provider keys → Model picker → Feedback. Reads top-to-bottom as the actual setup flow.
Automatic migration
When existing v1.0.2 / v1.0.3 users first launch v1.1.0:
- If
claude_modelholds an old OpenRouter id (e.g.google/gemma-4-26b-a4b-it), it migrates to"local"and stashes the model fragment aslocal.model_name - A
rag_config.json.bakbackup is created automatically
→ Existing setup keeps working with no reconfiguration.
One-line marker in the debug log:
[ConfigService]: Migrated saved model id 'google/gemma-4-26b-a4b-it' → 'local' (local.model_name = 'gemma-4-26b-a4b-it', rewrote rag_config.json).
Bug fixes / improvements
Local LLM polish
- Chat unblocked for unauthenticated Local LLM setups. The pre-flight gate in the
user_messagehandler used to reject any request with an emptyApiKey, which broke the default Ollama / LM Studio install (no auth = empty key is correct). The gate is now provider-aware: Local validatesLocalServerUrl, cloud providers validateApiKey. Error message for Local now points to the URL field instead of misdirecting users to add a key. - Friendly guidance when model auto-detect fails — "Settings → Advanced → fill in the model name override" message (previously a confusing 404 error).
- API key field is now correctly labelled "API key (Bearer token)"; tooltip leads with "Sent as
Authorization: Bearer <value>header". - Settings panel visual density reduced ~50% for returning users.
Security hardening
- Auto-updater is now host-whitelisted and time-bounded. The
download_updatehandler accepts onlyhttps://github.com/https://objects.githubusercontent.comURLs (defense-in-depth against a hypothetical GitHub Releases compromise or WebView hijack), wraps the full body stream in a 10-minuteCancellationTokenSource, and cleans up partial downloads on timeout / network failure. Typed progress messages (timeout/network/untrusted_url) let the UI route specific error toasts.
Analyzer correctness
- BIBIM001 (Transaction-required) no longer hides missing-Transaction bugs in generated code. The previous heuristic short-circuited as "satisfied" whenever the enclosing method was named
Execute— on the false premise thatBibimExecutionHandlerwrapsExecutein an outer Transaction. It does not (RunCommituses no wrapper;RunDryRunuses aTransactionGroup, which can't host modification APIs directly). Baredoc.Delete(id)insideExecutewas passing silently, then either failing at runtime or leaving the document inconsistent. The heuristic now requires a realTransactionusingancestor;TransactionGroup/SubTransactionare explicitly rejected via regex as false-positive satisfiers. Roslyn retry usually auto-fixes the resulting warning, so most users will experience this as "code generation is slightly more robust".
Performance
RoslynCompilerServiceis now a true panel-level singleton. Its constructor scansAppDomain.GetAssemblies()(~100–300 ms each). Six call sites inBibimDockablePanelProviderwere callingnew RoslynCompilerService()directly despiteBibimApp.OnStartupalready registering a process-wide instance. Reclaims ~1–2 s of compounded startup work per session.LocalRevitRagServicecache fast-path no longer takes a lock. The BM25 engine forsearch_revit_apibuilds once per session under a build lock, but cached reads now skip the lock entirely (volatile read + double-check). Parallelsearch_revit_apitool_use blocks dispatched in a single LLM turn no longer serialize.
Logging
- Log path moved:
%USERPROFILE%\bibim_v3_debug.txt→%APPDATA%\BIBIM\logs\bibim_debug.txt. Matches the rest of the addon's storage layout under%APPDATA%\BIBIM\and stops leaving an orphan file at the home-directory root. Old logs are not migrated — left in place so you don't lose support artifacts. - Diagnostics report now includes a
LogFilecheck that surfaces the current log size and flags the legacy path if a stalebibim_v3_debug.txtis still present.
Code health (no user-visible change)
#if NET48conditional serialization attributes removed acrossCodeLibraryModels.cs,SessionModels.cs,TaskFlowModels.cs(112 occurrences).JsonHelperuses Newtonsoft.Json on both targets, so the[JsonPropertyName]branch on net8 was being silently ignored at runtime. Single[JsonProperty]now applies to both. −432 lines of zero-value conditional compilation.ConversationContextManagerdeleted — 122-line class with zero references.GeminiProvider.SendStreamingAsyncnow parsesfunctionCall+thoughtSignaturefrom SSE chunks and stashes them onStreamResult.ToolUseBlocksfor forward compatibility with a future streaming + tools wiring.BibimApp.OnShutdownnow logs the exception message ifDocumentChangedunsubscribe throws (was swallowed silently).*.tsbuildinfoadded to.gitignoreso TypeScript's incremental-build cache stops clutteringgit status.
UX / i18n
- Feedback buttons in chat messages now render
👍 Helpful/👎 Not Helpful(was literal "Up" / "Down" — the i18n keys already existed and were used in tooltips, just not in button labels). - Multi-select question card now reads
Select all that applyfrom i18n (was hardcoded English) and is translated in the Korean build.
64 / 64 unit tests passing (3 new tests added for the BIBIM001 heuristic fix; 1 stale test rewritten to assert the corrected behavior).
Affected users
| Environment | v1.1.0 |
|---|---|
| Cloud BYOK (Anthropic / OpenAI / Gemini) | No change — existing keys keep working |
| Already running self-hosted LLM | New option — connect via Local LLM section |
| NDA / data-residency constraints | New option — BIBIM now runs entirely on your infrastructure |
Builds
| Target | Status |
|---|---|
| Revit 2024 (net48) | ✅ |
| Revit 2025 (net8.0-windows) | ✅ |
| Revit 2026 (net8.0-windows) | ✅ |
| Revit 2027 (net10.0-windows) | ✅ |
Requirements
- Autodesk Revit 2022 or later (Windows)
- At least one of:
- A cloud API key (console.anthropic.com (Claude) / platform.openai.com/api-keys (GPT) / aistudio.google.com/apikey (Gemini))
- NEW: A self-hosted OpenAI-compatible LLM server (Ollama / LM Studio / vLLM / llama.cpp). Tool-calling support and 30B+ parameters recommended.