Skip to content

Releases: BlockRunAI/franklin

v3.1.0 — Brand cleanup + README rewrite

11 Apr 16:57
ffa7f82

Choose a tag to compare

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:

  1. 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.
  2. 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

11 Apr 16:56
d9c0c83

Choose a tag to compare

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:

  1. x402 micropayment protocol — HTTP 402 native payments, wallet-as-identity
  2. BlockRun Gateway — aggregates 55+ LLMs + paid APIs behind one wallet
  3. 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.


npm: @blockrun/franklin@3.0.0

v2.5.29 — AskUser Fix

07 Apr 21:01
34a2fd1

Choose a tag to compare

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)

04 Apr 14:12
fbc7137

Choose a tag to compare

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

04 Apr 14:21
efa3cd6

Choose a tag to compare

Token reduction: added deduplication pass (removes consecutive duplicate messages from retry/loop scenarios). Now 4 passes: aging → whitespace → assistant trim → dedup.

v2.3.1

04 Apr 14:17
d03052f

Choose a tag to compare

Reverts copied compression lib. New original token reduction: tool result aging (10KB→60 chars for old results), whitespace normalization, old assistant message trimming.

v2.3.0 — Token Management Overhaul

04 Apr 13:53
f368794

Choose a tag to compare

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

04 Apr 13:39
d608e2c

Choose a tag to compare

Fix: time-based cleanup now accurately tracks activity within multi-tool turns (was using stale timestamp from turn start).

v2.2.6

04 Apr 12:59
e8e0742

Choose a tag to compare

  • 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

v2.2.5

04 Apr 12:51
f173225

Choose a tag to compare

Built-in @blockrun/mcp only activated when blockrun-mcp binary is installed (skips slow npx). Users who installed via npm -g get zero-config MCP, others unaffected.