runcode init: Permanently configure Claude Code to use runcode — writes~/.claude/settings.jsonand installs a macOS LaunchAgent so the proxy auto-starts on login. Runclaudedirectly after init, no need to rememberruncode startruncode daemon start|stop|status: Run the proxy as a background process, detached from the terminalruncode uninit: Remove runcode from Claude Code settings and uninstall the LaunchAgent
- Smart routing now default: When no
--modelflag is specified,blockrun/autois used automatically — every request is classified and routed to the optimal model instead of always paying for Sonnet - Fixed OAuth token deletion: Also deletes
CLAUDE_CODE_OAUTH_TOKEN(the actual env var Claude Code uses) so proxy auth is exclusive with no conflicts - Restored
src/proxy/sse-translator.ts: TypeScript source was missing (only compiled JS existed). Restored from compiled output — required for non-Anthropic models that return OpenAI-format SSE streams - Version deduplication:
start.tsno longer re-readspackage.jsonat runtime; version flows fromindex.ts
- Banner display: Removed leading blank line from ASCII art so the first visible line is the art itself, not an empty line
- Welcome banner:
runcode startnow displays a gold ASCII art RUNCODE banner with tagline on launch, so users and onlookers can immediately see BlockRun is powering the session
- Terminal distortion (complete fix):
fallback.tswas still usingconsole.errorfor network error messages (e.g.,[fallback] anthropic/claude-sonnet-4.6 network error: fetch failed), which printed to stderr — also inherited by Claude Code's terminal. All fallback error messages now go to the log file only. Combined with v0.9.9, runcode is now fully silent while Claude Code is running
- Terminal distortion (root cause fix): Removed
console.logfrom the proxy's runtimelog()function. Claude Code is launched withstdio: inherit, so runcode and Claude Code share the same terminal. Printing to stdout while Claude Code's* Thinking…spinner writes\rto the same fd caused the garbled/overwritten display. Runtime messages now go to~/.blockrun/runcode-debug.logonly — useruncode logsorruncode logs -fto monitor live
- Terminal distortion in
runcode logs: Strip ANSI escape sequences and carriage returns from log entries before writing to~/.blockrun/runcode-debug.log. Previously, spinner/progress output from Claude Code (e.g.,* Thinking…) contained\rcharacters that caused cursor jumps and screen corruption when replayed byruncode logsorruncode logs -f
runcode logscommand: View debug logs withruncode logs, tail with-f, show last N lines with-n 100, clear with--clear. Auto-rotates at 10MB to prevent disk bloat- Always-on logging:
[runcode]messages now always written to~/.blockrun/runcode-debug.log(no need for--debugflag for basic logs)
- Fallback + payment mismatch: When fallback switches to a different model and the backend returns 402 (payment required), the payment handler now uses the correct fallback model body instead of the original failed model body
- Login prompt fix: Use
ANTHROPIC_AUTH_TOKENinstead ofANTHROPIC_API_KEYto prevent Claude Code from showing login prompt when launched viaruncode start(thanks @0xCheetah1, #2) - Consistent env var in all output messages (proxy-only mode, error fallback)
- Fallback 400 errors: Removed virtual routing profiles (
blockrun/auto,blockrun/eco) from fallback chain — backend doesn't recognize these, causing 400 loops. Fallback now uses concrete models:deepseek/deepseek-chat→google/gemini-2.5-flash→nvidia/nemotron-ultra-253b - Safety filter:
buildFallbackChain()now strips routing profiles to prevent them from ever reaching the backend runcode startautomation: Smarter claude binary detection — searches PATH + common install locations (~/.local/bin,/usr/local/bin). Falls back to printing manual env vars instead of crashing
- Use
blockrun.ai/runcode-installshort URL in README install command
- Override native Anthropic model IDs (e.g.
claude-sonnet-4-6-20250514) while respecting BlockRun model IDs that contain/ - Skip npm publish in CI if version already exists
- Updated README for v0.9.3 — 50+ models, new shortcuts, nemotron default
- Expand model catalog to 50+ models with updated routing and pricing
- New in-session shortcuts:
use grok-4,use codex,use kimi,use devstral,use qwen-coder, and more
- Wrap backend errors in Anthropic format to prevent Claude Code from showing login page
- Streaming memory cap (5MB) to prevent OOM on long sessions
- Complete model pricing table for accurate cost tracking
- Improve error messages and show debug log path
- Built-in smart routing from ClawRouter — 15-dimension classifier for automatic model selection
- Default to
blockrun/autowith 4 routing profiles: auto, eco, premium, free - In-session model switching — type
use gptoruse deepseekinside Claude Code - Automatic fallback chain when models fail (429, 5xx)
- Usage statistics with
runcode stats - User-Agent and version headers on backend requests
- Adaptive max_tokens:
max(lastOutput*2, 4096)prevents token starvation - Debug logs to file (
~/.blockrun/runcode-debug.log) instead of stderr - Always inject max_tokens default to prevent 400 on Turn 2+
- Fix version mismatch, token parsing, port validation
- Initial release
- Local proxy for Claude Code → BlockRun API
- Dual chain support (Base + Solana)
- x402 micropayment signing
runcode setup,runcode start,runcode models,runcode balancecommands- 40+ model support with
--modelflag - Install script for one-line setup