Releases: kianwoon/modelweaver
Releases · kianwoon/modelweaver
v0.3.73
What's New
🚀 Features & Improvements
- Smart request routing — classify message content by complexity and route to the appropriate model tier automatically (#97)
- Single-provider hedge skip — hedging disabled for single-provider chains, prevents rate-limit amplification (#231)
- 408/504 retry with fresh pool — request timeout and server-unavailable now retry with a new connection pool (#231)
- Transient error detection — detect and retry on transient errors in 400/413 response bodies (#230)
- GET /v1/models endpoint — list available models from configured providers (#229)
- Retry-After header support — respect provider rate-limit backoff for 429/503 responses (#228)
- Streaming-only token speed — TTFB excluded from token-per-second calculations for accurate metrics (#227)
- Per-model connection pools — each model gets its own HTTP/2 connection for TCP isolation (#186)
- GOAWAY-aware retry — graceful HTTP/2 drain no longer marks pool as "failed" (#188)
🐛 Bug Fixes
- Fix: correctly extract project names containing hyphens (#222)
- Fix: include provider name in request logs and response headers (#221)
- Fix: prevent launchd crash loop when dist/index.js is missing (#220)
- Fix: suppress stdout log spam when daemon is already running (#219)
🔧 Dependency Updates
- Bump undici from 8.0.0 to 8.0.2 (#226)
- Bump hono from 4.12.10 to 4.12.12 (#212)
- Bump @hono/node-server from 1.19.12 to 1.19.13 (#213)
- Bump dotenv from 17.3.1 to 17.4.1 (#223)
- Bump vitest from 4.1.2 to 4.1.4 (#225)
- Bump @types/node from 25.5.0 to 25.5.2 (#224)
Full Changelog: v0.3.70...v0.3.73
v0.3.70
What's New
- Zero-config first run — ModelWeaver auto-creates a default config at
~/.modelweaver/config.yamlon first run. Just set your API key and go — no wizard required - 30-Second Setup — README now shows a copy-paste quick start as the very first section
- Better init wizard — success message now shows numbered next steps with env var commands
- Startup hint — foreground mode prints the
exportcommands needed to connect Claude Code - FAQ section — answers common first-run questions (API key, port conflict, verification)
- GitHub repo polish — issue templates, PR template, CHANGELOG fixes, LICENSE copyright, branch cleanup
Installation
npm install -g @kianwoon/modelweaver
npx @kianwoon/modelweaver # auto-creates config on first run
export ANTHROPIC_API_KEY=sk-ant-...
npx @kianwoon/modelweaver # start the proxyv0.3.69
What's New
Smart Request Routing (#97)
Classify request complexity by message content and automatically route to the appropriate model tier.
- Keyword scoring classifier — regex patterns score request complexity, cumulative score >= threshold triggers tier override
- Config-driven patterns — define your own classification rules per tier with custom scores
- Graceful degradation — if classified tier has no providers, falls through to next tier down
- Zero overhead when disabled — single boolean check, entire path skipped
- Counter metrics — track tier1/tier2/passthrough counts in
/api/metrics/summary
smartRouting:
enabled: true
escalationThreshold: 2
patterns:
"1": # Best model for complex tasks
- pattern: "architect|design system|from scratch"
score: 3
"2": # Good model for moderate tasks
- pattern: "explain|summarize|review"
score: 2Full Changelog: v0.3.67...v0.3.69
v0.3.67
Fixes
- Session pool timer leak —
closeAll()now clears thesweepTimerinterval, preventing accumulated timers during hot-reload cycles (#194, #199) - Tauri GUI panic protection — replaced unsafe
.unwrap()calls in setup with defensiveif let+let _ =, preventing GUI crashes when the webview window isn't ready (#193, #200) - WS reconnect timer cleanup — clear stale
reconnectTimerin WebSocket close handler to prevent dual polling (#195, #198) - Monitor exit handler — add defensive exit handler in SIGTERM/SIGINT to prevent double-signal crashes (#196, #197)
v0.3.66
Fixes
- GOAWAY code 0 discrimination — graceful HTTP/2 drain no longer marks pool as "failed" (#188)
- Configurable stale agent threshold — raised default from 10s → 30s, matching keepAliveTimeout to stop the evict→cold-start→slow-TTFB churn loop (#188)
- TTFB retry cap — TTFB timeouts capped at 2 retries (vs 5 for socket errors), reducing worst-case from 360s to 180s per provider (#188)
v0.3.64
What's Changed
- fix(proxy): respect configured ttfbTimeout as floor, not ceiling — adaptive TTFB was clamping user-configured timeouts down to observed p95, making
ttfbTimeouteffectively useless. Now the configured value is always respected as the minimum.