Releases: BlockRunAI/franklin
v3.1.0 — Brand cleanup + README rewrite
Pure documentation and brand cleanup on top of v3.0.0. Zero functional changes — plugin SDK, agent loop, tools, tests, wallet, and sessions are all identical to v3.0.0.
Why
Two loose ends from the rebrand needed a clean close:
- Premature domain references. We own `franklin.run` and `franklin.bet` but haven't deployed them yet. The README, CLI help, and banner were all linking to URLs that 404 — which is worse than not linking at all. Trust breaks on the first click.
- Banner color experiments. v3.0.1 shipped a smooth 6-row gold→emerald gradient. v3.0.2 flattened it to pure `#FFD700`. v3.0.3 tried metallic `#D4AF37`. After A/B-ing in the terminal, the gradient won — it tells the Franklin story in one glance.
Changed
- Banner — Restored the smooth 6-row gold→emerald gradient (`#FFD700` → `#10B981`) via a reintroduced `interpolateHex()` helper. Dropped the "Marketing: franklin.run · Trading: franklin.bet" tagline line.
- CLI description — Removed "Marketing workflows: franklin.run" and "Trading workflows: franklin.bet" from `franklin --help`.
- package.json — `homepage` now points to the GitHub repo (a real URL). Description shortened, no domain references.
- README — Complete rewrite to 100k-star quality. 10 badges (npm, downloads, stars, CI, TypeScript, Node, x402, Telegram), anchor-linked ToC, real terminal transcript instead of the aspirational marketing-campaign demo, feature grid in two columns, real Plugin SDK example without `{ ... }` placeholders, honest roadmap split (✅ shipped / 🚧 in progress / 💭 under consideration), star-history chart, free-tier call-out. Grounded every claim in an audit of the repo.
- CLAUDE.md — Same domain cleanup.
- CHANGELOG.md — v3.1.0 entry added. v3.0.0 history preserved verbatim.
Verification
- ✅ 6/6 local tests pass
- ✅ 13/13 E2E tests pass (GLM-5.1)
- ✅ `franklin --version` → `3.1.0`
- ✅ `franklin --help` is free of franklin.run/bet
- ✅ `grep -r "franklin\.(run|bet)" src/ README.md CLAUDE.md package.json` → empty (only CHANGELOG history matches)
When do the domains come back?
When the sites are actually live. Brand narrative can lead product, but URLs shouldn't. v3.2.0 or later, once `franklin.run` and `franklin.bet` resolve to something worth clicking.
Not changed
- Everything else from v3.0.0. Plugin SDK, agent loop, tools, tests, wallet, sessions — all identical.
- The `runcode` alias still works through the 60-day compatibility window (until ~June 2026).
npm: @blockrun/franklin@3.1.0 · Full changelog: v3.0.0...v3.1.0
v3.0.0 — From RunCode to Franklin
Major rebrand. RunCode is now Franklin — The AI agent with a wallet.
Why the rename
RunCode was positioned as "a better Claude Code with multi-model support." That's defensive — it defines us by what we're not (not rate-limited, not subscription-locked, not Anthropic-only) rather than what we are. The moment Claude Code changes pricing, that entire differentiation evaporates.
The real opportunity isn't being a better coding tool. It's being the first AI agent that can actually spend money to get work done, not just write text about it.
- Claude Code writes code.
- Aider edits code.
- Cursor completes code.
- Franklin takes your USDC and autonomously runs workflows that cost money.
Benjamin Franklin was the founding father who said "time is money," printed his own currency, and deployed capital across the Atlantic to fund a revolution. Our Franklin does the same for AI agents: it turns your wallet into an autonomous economic engine.
Category
Autonomous Economic Agent — AI that spends money autonomously within wallet-enforced budget caps to deliver outcomes, not just text.
Built on three layers:
- x402 micropayment protocol — HTTP 402 native payments, wallet-as-identity
- BlockRun Gateway — aggregates 55+ LLMs + paid APIs behind one wallet
- Franklin Agent — reference client with Plugin SDK (this repo)
What changed
- Package: `@blockrun/runcode` → `@blockrun/franklin` (new name on npm)
- CLI command: `franklin` is the primary binary; `runcode` remains as a 60-day alias so existing scripts don't break
- Banner: new FRANKLIN ASCII art with gold→green "money" gradient
- README: complete rewrite with new positioning and Autonomous Economic Agent category framing
- CLI help text: all mentions of "coding agent" updated to "the AI agent with a wallet"
- Version: 2.8.0 → 3.0.0 (major bump because this is a category-level change, not a feature addition)
What did NOT change
- All plugins work identically — `social` and any future verticals
- Plugin SDK v2.7 contract is unchanged — no migration needed for third-party plugins
- Hermes patterns from v2.8 (prompt caching, structured compaction, session search, insights) all remain
- Config at `~/.blockrun/` is unchanged — no migration needed
- Wallet, sessions, stats all preserved
- Payment flow, API compatibility, E2E behavior — identical
Migration
Zero work required for existing users. The `runcode` binary continues to work as an alias for `franklin` through the 60-day compatibility window (until ~June 2026).
When you're ready, switch package names:
```bash
npm uninstall -g @blockrun/runcode
npm install -g @blockrun/franklin
```
The tagline
Franklin runs your money.
Short. Active. Ownership. Economic.
Long form: The AI agent with a wallet. While others chat, Franklin spends — turning your USDC into real work.
v2.5.29 — AskUser Fix
What's new
Fix: AskUser tool no longer crashes runcode
When the agent used the AskUser tool in Ink UI mode, runcode crashed. Root cause: readline.createInterface on stdin conflicted with Ink's raw-mode stdin ownership.
Fix: Added onAskUser callback to ExecutionScope and AgentConfig. When running in Ink UI mode, AskUser questions are now routed through a proper Ink dialog (cyan question box with TextInput) instead of readline.
What it looks like now:
╭─ Question ─────────────────────────────
│ What language should I use?
│ 1. TypeScript
│ 2. Python
│ 3. Go
╰─────────────────────────────────────
answer>
The main input box is blocked while the dialog is active (same pattern as the permission dialog).
Also in this release
- AskUser added to auto-allow list — no permission prompt before asking a question
- Non-interactive fallback preserved for piped/scripted mode
v2.4.0 — Context Compression (15-40% Token Savings)
7-Layer Context Compression
Integrated BlockRun's compression library directly into the agent loop. Saves 15-40% tokens automatically:
| Layer | Method | Savings |
|---|---|---|
| 1 | Deduplication | 2-5% |
| 2 | Whitespace normalization | 3-8% |
| 3 | Dictionary encoding (41 codes) | 4-8% |
| 4 | Path shortening | 1-3% |
| 5 | JSON compaction | 2-4% |
| 6 | Observation compression | 15-97% |
| 7 | Dynamic codebook | 5-15% |
How it works:
- Runs automatically when conversation has >10 messages
- Adds a header explaining codes to the model
- Layer 6 (observation) is the biggest win — summarizes large tool results to ~300 chars
- All layers are LLM-safe (model can still understand compressed text)
This is the same compression used by BlockRun's backend, now running client-side for immediate token reduction.
v2.3.2
v2.3.1
v2.3.0 — Token Management Overhaul
Token Reduction Improvements
Based on deep comparison with Claude Code's token management:
Smarter Pipeline
- Microcompact only runs when history >15 messages (was every loop)
- Circuit breaker: 3 failures → stop retrying compaction
- Token estimation padded 33% for conservatism (was under-counting)
Selective Thinking
- Keeps last 2 turns' thinking blocks (was only latest)
- Preserves recent reasoning while reducing old bloat
Per-Model Budgets
- Default max_tokens: 8K → 16K
- Model-specific caps: Opus 32K, Sonnet 64K, Haiku 16K, etc.
Cheaper Compaction
- Tiers down further: haiku → Gemini Flash
- Free models as compaction target
New: /tokens command
Estimated: ~45,200 tokens (API-anchored)
Context: 200k window (22.6% used)
Messages: 47
Tool results: 12 (340KB)
Thinking: 3 blocks
✓ Healthy
v2.2.7
v2.2.6
- Proxy: parse SSE JSON properly for token extraction (was regex)
- LLM: wallet cache refreshes after 30min TTL
- Grep: native fallback handles nested glob patterns better
- Optimize: clock skew protection on time-based cleanup
- WebFetch: strip SVG and form elements from HTML
- Config: version fallback updated to 2.0.0
- Index: cleaner default command detection