Autonomous trading agents that answer only to you.

merrymen is a self-hosted band of agents for Robinhood Chain. They work the market 24/7 inside hard on-chain permission walls you set — you name them, chat with them, and steer them from Telegram. Your keys never leave your machine.

MIT-licensed · runs on your machine · no account, no cloud
01

Your keys, your caps

02

Bounded worst case

03

Every trade simulated

04

Fees only on profit

05

An honest scoreboard

01 — 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/.
02 — 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.

03 — the safety model
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.

04 — quickstart

Riding in five steps.

No Node yet? The one-line installer sets it up for you.

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

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

# already have Node 22.12+ ?
npm install -g merrymen && merrymen start
01

Install & start

One install, then merrymen start opens the dashboard and looses the worker.

02

Create a wallet

At /grant — nothing to connect. Pick testnet or mainnet, set the caps the contract enforces.

03

Fund it

Faucet gas on testnet, or send ETH + USDG on mainnet. The worker arms on its next tick.

04

Link Telegram

Paste a bot token in settings, link the code, run the band from your phone.

05

Name it & ride

“I'll call you Little John.” Watch it trade, chat with it, let it grow.

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%

Muster your band.

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