sign in

rhcopy dashboard

api key required

Paste your dashboard key, or append ?key=... to the URL.

copybot

— — —

overview

special window (tweet-triggered)

When a monitored Twitter account (CZ, Yihe, Binance, etc.) tweets, the discord-chat-summarizer POSTs to the webhook URL below. That activates the window: kind=special wallets become eligible to buy for the duration. Sells from special wallets flow through regardless of window state.

Webhook URL for discord-chat-summarizer's THREAD_WEBHOOK_URL:
—

recent triggers

Every time the special window is activated — whether by webhook, dashboard button, or API. Click a row to see full payload.

fired atsourcedurationwindow endcaller ip

wallet competition — who's copying us + how much they tip

Based on analysis of past buys + 5-block-follow-window scans of the local archive. A confirmed copier has followed us on ≥3 distinct tokens. Recommended tip = 1.2× the p90 observed tip, floor 0.0005 BNB, cap 0.02 BNB. Blank = no data (run refresh).

ETA <5s (SQL-backed)
wallet buys copiers top match % obs tip p90 recommended updated

wallet tx sources (public mempool vs private relay)

For each tracked wallet, how many of their detected txs arrived via the public mempool (we saw them pre-mine) vs. only showed up once mined (= private-relay submission). Analytics only — not used for gating. Sample sizes <20 are noisy.

walletnamemempoolblock-onlymerklemempool %total

trading wallets

nameaddress

backtester recommendations — which tracked wallets to copy, at what tip + strategy

For each enabled wallet: the config (strategy, tip) that maximised simulated PnL in the latest grid-search, re-priced at the landing-safe tip derived from wallet_competition. Green rows ⇒ profitable in sim after tip adjustment. Refresh runs a fresh 24-config sweep (~30s under no DB contention).

name strategy sim tip bundle p90 final tip sim pnl adj pnl trades lane

special-trigger backtest — Twitter-mooner wallet discovery

For each past trigger in special_triggers, find wallets that reacted within the time window and simulate PnL if we'd copied them. Good for picking kind="special" wallets to enable during trigger windows. Runs on-demand (~15-30s).

realism:
wallet hits med lat min lat med size sim win% sim pnl $/trade notes

GMGN leaderboard — top BSC copytrade wallets, scraped daily from gmgn.ai

Top 100 wallets per period from GMGN's public copytrade rank. Scrapes run daily at 04:45 UTC (also runnable on-demand). T marker = already in your wallets.json.

# wallet pnl usd winrate buys 2-5x 5x+ hold twitter / nickname

global settings

tracked wallets

addressnamekindenabledpcs4meme

edit wallet

bulk import

One wallet per line. Format: 0xaddress,Name (comma OR whitespace). Lines starting with # or blank are ignored. All imports default to normal + enabled + both routers on.

trading wallets

Private keys are stored in .env on the bot host, never in JSON. The table below only references the env var name. Use paste private key below to register a new wallet — the key goes straight to .env and never touches the browser after submit.

nameaddresspvtkey env var

add trading wallet (paste private key)

The key is sent to the bot, which derives the address, writes WALLET_<NAME>_PVTKEY=0x... to .env (0600), and adds the row. You must restart the bot afterwards — .env is only read at startup.

auto-derived from name

signals (latest 50)

tokenrouterbuyssellsbuy BNBsell BNBmcapageupdated

tx events (latest 50)

timewalletbotactionroutertokenvaluehash

per-wallet P&L

Realized cash flow attributed to each tracked wallet. Exit-engine sells don't count (no trader attribution). Negative = we're losing money following this wallet.

walletkindnet BNBreceivedspent tokenseventslast

block builders

Bundles fan out to every enabled builder in parallel. Only the winning builder's tip tx fires. Share of BSC blocks: Puissant ~55%, BlockRazor ~25%, bloXroute ~5-10%.

builderenabledtip (BNB)tip contract samplessuccessmin msmedian msp95 mslast

undecoded transactions from tracked wallets

Trades from your tracked wallets we could not act on — either an unknown selector (a new/custom bot not in config/signatures.toml) or a decode failure (known selector, but token/direction extraction failed). Each row keeps a real sample: the tx hash, ETH value, and full calldata. Click calldata to inspect what the bot did, then tell me the router + selector and I'll add a decoder. Especially useful when you add a new wallet whose bot you don't yet know.

walletreasonselectorrouter (to)ETH valuecountlast seensample