Trading agents you never have to trust.

merrymen is a trading bot you run yourself. It works the market for you on Robinhood Chain — but your keys stay on your machine, and the spending limits you set are enforced by the blockchain itself, so it can never spend more than you allow. Name it, chat with it, and steer it from Telegram.

MIT-licensed · runs on your machine · no account, no cloud
Windows 0.1.7 · 147 MB · macOS and Linux via the one-line install
01

Your keys, your caps

02

Bounded worst case

03

Every trade simulated

04

Fees only on profit

05

An honest scoreboard

01 — the trust layer

The wall is the product.

Anyone can ship a trading agent. The hard thing — the thing merrymen is — is an agent you don't have to trust: it runs on your machine, holds keys that never leave it, and trades inside caps the chain itself enforces. Everything else on this page is built on top of that wall.

The rule of the house: the model proposes, deterministic code disposes.

No strategist, Telegram message, or voice note ever constructs calldata, moves funds, or touches your PC without passing a closed, typed command set and — for money — the on-chain policy wall. Trades pass caps enforced by the account contract. Transfers are amount-capped and confirm-gated. PC actions are off by default, allowlisted, and confirmed. A prompt-injected “send everything to 0xevil” can at worst produce a confirmation card you will see and cancel.

And you don't take our word for it: your dashboard shows the account contract, the session key, and every cap with explorer links — and a prove the wall button that fires malicious intents through the live policy so you can watch each one bounce.

Why not wait for a platform's own agent?

A first-party agent is custodial by construction: their servers, their keys, their discretion — the safety story is a terms-of-service. If the platform, its model, or its prompt gets compromised, so does your account. You trust; it trades.

merrymen inverts it

The agent lives on your machine and holds a session key whose caps — per-trade, daily, ops/day, drawdown, expiry — are enforced by your account contract on-chain, verifiable in the explorer. Even a fully compromised agent cannot spend past the wall. You verify; it trades.

02 — what it is

An agent that works Sherwood while you sleep.

The strategist proposes; deterministic code disposes. Nothing the model outputs — a trade, a transfer, a command — reaches your funds or your machine without passing a typed, closed command set and the on-chain policy wall.

Self-hosted

Runs on your machine. Full stop.

One npm install, a local dashboard, and a worker that trades on a schedule. No servers, no sign-up — your data and your keys live in~/.merrymen and never leave it.

  • Create a wallet in-browser — nothing to connect
  • Caps enforced by the account contract on every op
  • Testnet sandbox or real mainnet, you choose
  • Kill switch destroys the grant, halts the band
~/.merrymen/
├─ settings.json     # your knobs
├─ grant.json        # the signed wall
├─ merrymen.db       # the ledger
├─ strategies/       # your own bots
└─ soul/             # who your agent is
   ├─ IDENTITY.md
   ├─ OWNER.md
   └─ JOURNAL.md
Telegram

Run the whole band from your phone.

Link a bot and chat with your merryman in plain English or slash commands. Check the book, trade, transfer with a confirm, set price alerts, get a daily report — all inside the same permission walls. It even speaks first.

  • “how are we doing?” · “pause everything”
  • Trade pings, drawdown & gas warnings, daily digest
  • Transfers are triple-guarded and always confirmed
  • Voice notes work too
how are we doing today?
Up +$14.20 (+2.1%) · QQQ is your best holding. Two arrows loosed, both landed. Quiet and green.
buy 20 usdg of msft
Submitted buy 20 USDG MSFT — watch /trades. Passed the policy wall.
Remote control

It can run your PC, too.

Screenshots, “what am I looking at?”, open apps, browse files, allowlisted shell, keystrokes, reminders and watchers — from Telegram. Off by default, one capability at a time, sharp edges always behind a confirm.

  • Screenshot & vision · open apps and URLs
  • Allowlisted shell · type & hotkeys
  • “ping me when my build finishes”
  • Every sharp action needs an explicit confirm
what am I looking at?
A failing test in policy.test.ts — the daily-cap assertion expected 500 but got 525. Off-by-one in the reserve.
run npm test
Confirm run npm test — /confirm or /cancel.
The soul

Every merryman is an individual.

Give it a name. It keeps its own markdown files, learns who you are, writes a journal at campfire time, and grows attached the longer you ride together — from new companion to sworn brother-in-arms. Memory is context, never capability.

  • “I'll call you Will Scarlet” — it's named
  • It remembers your preferences from conversation
  • Milestones at a week, a month, a hundred days
  • Read or edit its soul with any editor
/soul
Little John of the merrymen · old friend · 34 days riding with you, 210 messages shared. I know you trade small and check in before work. My soul lives in ~/.merrymen/soul/.
03 — the toolkit

Everything, gated by design.

LLM strategist

Claude proposes typed buy/sell/hold at decision windows; deterministic code validates and disposes. The model never sees an address.

Built-in strategies

steady-basket DCA, weekend-gap that trades the close→open gap, or a hot-reloaded bot you write yourself.

On-chain caps

Per-trade, daily, ops/day, drawdown breaker, key expiry — enforced by the account contract on every operation.

Simulate first

Every swap gets a live quote before it is signed. Minimum-out is met, or nothing moves.

Chat transfers

Send USDG out from Telegram — off by default, amount-capped on-chain, and always behind an explicit confirm.

Honest scoreboard

Rejections shown with the same weight as wins. A simulation receipt attached to every trade.

Proactive pings

Trades landing, drawdown, gas and expiry warnings, your price alerts, a daily report at your hour.

Voice & vision

Send a voice note; ask what is on your screen. Powered by your own Anthropic key.

Kill switch

One command destroys the grant; the worker stands down next tick. On-chain expiry is the backstop.

04 — quickstart

Up and running in three steps.

Install, create an agent, watch it trade on paper. Real money is optional and comes later. No Node yet? The one-line installer handles it.

Download for Windows

The one-click app — double-click to install, no terminal, no Node. Same dashboard + agent, with a tray icon to pause or quit. Windows 0.1.7 · 147 MB. Unsigned for now, so Windows SmartScreen shows a warning → More info → Run anyway. On macOS / Linux, use the command-line install below.

# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/millw14/merrymen/main/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/millw14/merrymen/main/install.ps1 | iex

# already have Node 22.12+ ? (any OS)
npm install -g merrymen && merrymen start

Runs on Linux, macOS, and Windows — one Node package, no Docker, no clone. The installers set up Node for you; with Node 22.12+ already, npm i -g merrymen works anywhere. Your band starts in paper mode (live prices, simulated fills, zero funds), so you can watch it trade in a couple of minutes. Upgrade any time with merrymen update.

1

Install & open it

One command installs merrymen and opens your dashboard. No accounts, nothing to connect.

2

Create your agent — it trades on paper instantly

Pick a spending-limit preset and go. Your agent starts trading at real live prices with pretend money, so you watch it work before risking a cent.

3

Add a key to go live

When you're ready, paste one free key and the same agent trades for real — inside the exact same limits. Steer it from Telegram if you like.

05 — two minutes

Set up Telegram

  1. Message @BotFather/newbot → copy the token
  2. Dashboard → Settings → Telegram → paste, test, enable
  3. Message your bot /link <code> — you're the owner
  4. Say “how are we doing?” — you're chatting with your band

Full Telegram guide

/link 5HDE9E
You're linked — you now command this merryman. Try /status.
/status
Little John — status
• worker: alive · chain: testnet 46630
• strategy: steady-basket · venue: uniswap
• caps: 50/trade · 500/day · breaker 10%
06 — word from the woods

Early words. Honest receipts.

“The on-chain permission wall is good — smart. The trust layer makes the moat.

— an early code reviewer, unprompted, after reading the source

MIT open source — read every line200+ tests on the policy wall & pipelinecaps enforced by the account contract, verifiable in the explorerzero servers — it runs on your machine

Riding with the band? Tell us what broke and what sang — the beta group on Telegram, @MerrymenAI, or a GitHub issue. Real words from real riders end up here.

Muster your band.

Free, open source, and yours. Install it, name your merryman, loose the first arrow.

The beta group is open — early builds, rough edges, and a direct line to whoever broke it. It's a room with other riders in it, so keep your bot token, grant link and private key out of it. Nobody there ever needs them.