Franklin Agent: a USDC wallet wired into an agent loop, and what that changes about cost control
The AI agent with a wallet — spends USDC autonomously to get real work done. Apache-2.0, TypeScript.
At a glance
- What is it?
- Franklin Agent is an Apache-2.0 TypeScript agent that holds a USDC wallet and pays for models and APIs per action through x402. The interesting part is not the wallet, it is the budget boundary it creates, and the operational questions that boundary leaves open.
- Who is it for?
- Adopt Franklin if you want an agent whose spending is bounded by a wallet you control and you are comfortable approving trade plans before funds move. Do not adopt it if you need a stable, versioned API surface or if your finance team cannot account for per-action USDC settlements.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- BlockRunAI/Franklin564 ★ · +10
| Repository | 2026-09-11 | 2026-11-14 |
|---|---|---|
| BlockRunAI/Franklin | 554 | 564 |
10 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The problem Franklin targets: agents that can reason but cannot buy anything
Most agent frameworks stop at tool calling. The model can decide it needs a price feed, but the developer has to pre-provision that feed, hold the API key, and absorb the cost whether or not the agent ever uses it. Franklin inverts that. The README describes it as an autonomous economic agent that holds a USDC wallet and spends it to get work done, with trading named as the flagship arena. The intended user is someone who wants an agent to buy live market data, call a paid model, or run a long task without a human topping up a provider account first. The pricing model is stated as provider cost plus 5%, settled per action in USDC, with no monthly fee and no rate limit. That last clause matters more than it looks. Rate limits are the usual reason agent workloads get shaped around a provider's quota rather than around the task, and Franklin's claim is that the wallet balance becomes the only ceiling.
Two funding paths and the trade-off between them
Franklin accepts either a funded USDC wallet or a prepaid balance. The wallet route is `franklin setup solana` or `franklin setup base`, followed by `franklin balance` to show the address and current USDC. The README states there is no signup, no account, and that the wallet is the identity. The alternative is `franklin login brk_live_...` with a key obtained after topping up at user.blockrun.ai. Both routes unlock the same catalogue, and the README puts the entry point at $5. The distinction is operational rather than functional. A wallet key is a spending key. If it leaks, the loss is bounded by the balance, but the balance is directly spendable by whoever holds it. The API key route adds an account layer and a revocation path that the wallet route does not describe. The README does not document key rotation, spending caps per session, or a kill switch, so anyone choosing the wallet route should treat the balance itself as the blast radius and keep it small.
What actually runs when you type franklin
Installation is `npm install -g @blockrun/franklin`, or `npx @blockrun/franklin` if you would rather not install globally. Running the bare `franklin` command works without funding, using NVIDIA Nemotron and Qwen3 Coder as the free defaults. The architecture described in the README is a router sitting in front of a gateway. Paid actions route through the x402 micropayment protocol and settle on-chain, and the agent selects a model per task from what the README calls 55+ providers. Around that sit three behaviours that distinguish it from a chat wrapper: trade plans are proposed and require approval before any money moves, goals persist across sessions, and the agent keeps a trading journal bound to the wallet. The approval step is the most consequential design choice in the whole project. An agent that can spend autonomously but must surface trade plans first is a deliberate half-step, and it suggests the authors do not consider unattended trading safe enough to enable by default.
The Node version constraint is a real first-run failure, not a footnote
Franklin requires Node.js 20.19 or newer, with Node 22 LTS recommended. The README is unusually direct about why: the Solana dependencies need the require(esm) support added in 20.19.0, and older runtimes crash at startup with ERR_REQUIRE_ESM originating in rpc-websockets and uuid. The troubleshooting table names this as the number one cause of a crash on first run. The second documented failure is an EACCES error when creating /usr/local/lib/node_modules, common when Node was installed from the macOS .pkg and the global folder is owned by root. The README's advice is not to use sudo but to either run via npx or move to a user-owned Node through nvm or fnm. Both fixes are correct and both are ordinary Node hygiene problems rather than Franklin defects, but they will consume the first ten minutes of an evaluation if the environment is not already clean.
Where Franklin is the wrong tool
The README does not describe a stable public API, a versioned SDK contract, or a compatibility policy for the agent loop itself. Desktop releases are labelled beta, with three beta builds pushed within three days in early September 2026, which is a normal cadence for something still settling. If you need to embed agent behaviour in a production service with predictable interfaces, the CLI and extension are the documented surfaces and neither is presented as a library. The second limitation is accounting. Per-action USDC settlement produces a stream of small on-chain transactions rather than a monthly invoice. For a solo operator that is fine. For a team that needs a single line item per vendor, it is a reconciliation problem the README does not address. The third is model quality variance. Routing across 55+ providers means behaviour changes with the chosen model, and the README does not describe how the router scores or selects, so results are not reproducible across runs unless the selection is pinned somewhere the documentation does not cover.
How this differs from a subscription coding agent
The obvious comparison is a subscription agent such as Claude Code or Cursor, where a flat monthly fee covers model access and the marginal cost of a long session is zero. Franklin's approach is the opposite: the marginal cost is visible on every call, and the README frames this as YOPO, you only pay outcome, at provider cost plus 5%. The practical difference shows up in how you use it. A flat subscription encourages long exploratory sessions because the next token is free. A per-action wallet discourages them, because every data fetch and every model call has a price attached. That is a genuine behavioural difference, not a marketing one, and it cuts both ways: you get cost discipline, and you get an agent you are less inclined to leave running. Franklin also bundles paid third-party APIs into the same wallet, which a coding subscription does not, so the comparison is only clean for the model-calling portion of the work.
Maintenance cost and the Apache-2.0 terms
Franklin ships as a single npm package under Apache-2.0, which permits commercial use, modification, and redistribution provided you retain the licence and notice files and state significant changes. It also includes an express patent grant, which matters if you intend to build on the router. The licence covers the code, not the services. Model calls, paid APIs, and the 5% markup are commercial terms set by BlockRun and are not governed by the repository licence, so the two need to be evaluated separately. On maintenance, the README documents a shared ~/.blockrun/ directory holding config and session history across the CLI, the VS Code extension, and Desktop. That sharing is convenient and it also means a schema change in that directory affects all three clients at once. The Desktop line is on 0.2.0-beta.3, so expect churn there rather than in the CLI.
Editorial conclusion
Adopt Franklin if you want an agent whose spending is bounded by a wallet you control and you are comfortable approving trade plans before funds move. Do not adopt it if you need a stable, versioned API surface or if your finance team cannot account for per-action USDC settlements. Verify three things first: that your Node build is 20.19 or newer, that `franklin setup solana` or `franklin setup base` produces an address you recognise, and that the 5% markup on provider cost is acceptable against whatever you pay today.
Frequently asked questions
What is Franklin Agent?
An agent runtime written in TypeScript that holds a stablecoin wallet and spends from it to get work done, with trading as its flagship use case. It buys market data, proposes trade plans you approve before any money moves, pursues goals across sessions, keeps a wallet-bound journal, and picks a model per task from more than fifty providers.
How do I pay for Franklin's model calls?
Two ways. Fund a stablecoin wallet and every paid action routes through a micropayment protocol settling against a wallet you control, with no signup and no account. Or top up a prepaid balance with the vendor and pass an API key. The documentation states both routes give the same models, tools and agent, and quotes chat at provider cost with no markup plus a fraction of a cent per call.
Can Franklin spend money without asking me?
For trading, no. It proposes trade plans and you approve before a cent moves, which is the difference between an agent that can spend and an agent that can only spend when you let it. It also states no overdraft, so the balance is a ceiling rather than a suggestion. Approval is required separately for shell commands and for file access outside the workspace in the desktop build.
What are the system requirements?
A recent Node.js runtime, with the long-term support line recommended, and there is a one-command version check. Older runtimes crash at startup with a module-loading error, and the troubleshooting section identifies the specific version where support for that was added. The documentation recommends using a version manager so global installs never touch root-owned system folders.
Is the Franklin desktop app safe to install?
The current packages are unsigned test builds, and signed public downloads with automatic updates are not live yet, so the installers are pulled from a continuous integration run and are described as short-lived. The application is local-first: it keeps session history locally and asks before the agent accesses files outside the active workspace, and shell commands also require approval.
Do I need a global npm install?
No. The documentation recommends running it without installing globally, which also sidesteps the permissions error you get when your global package folder is owned by root, which is common after installing Node from an installer package. A full editor extension and a desktop application are also published, and both share one configuration directory and session history with the command-line tool.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/blockrunai-franklin)Star history chart for your README
[](https://hysenlabs.com/projects/blockrunai-franklin)Was this useful?