The bot runs without an open browser. Every viewer sees the same decisions and fills.
Every move.
In plain sight.
A field guide to the bot that watches Solana memecoins, asks Jev what to do, and keeps a shared portfolio. Paper is the default; live execution is configured on the backend.
READ → EVALUATE → RECORD
Paper mode simulates balances and fills. In live mode, the server wallet signs and fills appear only after on-chain finalization.
Start with activity.
Every five minutes, the server fetches up to 150 entries from Pump.fun Movers. Coins must pass these filters before Jev compares them.
At least 50 transactions in the latest five minutes are required. Missing required data fails the filter. Up to 12 candidates are prioritized by recent volume and ranked by Jev. The live feed normally follows three coins, with held positions taking priority.
A ranking is not an order.
The ranking prioritizes analysis. A separate action response chooses buy, wait, sell part or exit. A weak ranking no longer vetoes a later buy signal.
-
Read confirmed trades
Dart CoinFeed reads Pump/PumpSwap events and verifies liquidity. Jev receives the latest 12 trades plus features summarizing the full recent window.
-
Ask Jev
The aggressive paper profile permits speculative entries. Jev sees the market, available cash and positions. It is never instructed to trade just to create activity.
-
Check execution limits
Action confidence, freshness, liquidity, reserves, exposure and cooldown still apply. The dashboard explains why a proposed buy might not fill.
-
Record the actual outcome
Only a saved fill changes balances, adds a chart marker and triggers a notification.
The bot can hold up to three coins and keeps looking at new candidates while managing existing positions. After three partial sales, the next reduction exits fully. Remainders valued at 0.01 SOL or less are closed when executable, so repeated tiny sales cannot trap the bot in one coin.
Know what is already held.
Jev receives token quantity, invested cost, current value, realized and unrealized PnL, PnL percentage, available SOL and estimated exit proceeds for the coin it evaluates.
Open once.
Target 15% of equity, bounded by cash, liquidity and exposure. Further buys into an open position are blocked.
Reduce by 25%.
Sell one quarter of held tokens and allocate one quarter of the remaining cost to the sale.
Close 100%.
Sell the remaining tokens. The coin then enters a five-minute rotation cooldown.
A 15% stop loss is checked against cost per token, and a 12% trailing stop against the observed peak. These exits use fresh data and do not need a Jev response. A model risk indicator of at least 80% triggers an exit when the action confidence check passes.
There is no fixed take-profit target. Jev can sell based on PnL and weakening flow. Profit alone does not automatically trigger a sale.
The dashboard now has a separate read-only on-chain portfolio. It reads finalized wallet transactions and balances every 15 seconds. Realized PnL uses the cost of the tokens sold; open PnL uses a fresh market estimate. Missing history or prices appear as a dash. Gains are green and losses red.
A public wallet address must be configured before real balances can load. Paper mode remains the default. Live execution requires the operator to configure the server wallet and enable live mode. Unsigned previews alone do not place orders, and paper positions are never counted as real holdings.
Watch the numbers connect.
Open PnL = current token value − remaining cost.
Realized PnL
= net proceeds − allocated cost.
Total PnL = open +
realized PnL.
Example: a 1 SOL order, 1% assumed slippage each way, 0.3% fee plus 0.000005 SOL per fill. All displayed amounts are SOL. This curve illustrates the example; it is not market history.
One bot. One shared story.
The server checks for new decision inputs every 1,000 ms. Trading cycles do not overlap, so model latency can make completed decisions slower than one second. WebSockets deliver updates to everyone.
The chart uses one-second candles and USD market cap. Green B and red S markers represent executed fills in the selected mode. Live fills require on-chain finalization. The selected coin drives the chart and metadata together.
Compact purchase cards and sale notices are queued. They close after three seconds. Sounds require a browser interaction and can be muted; historical fills are not replayed on reconnect.
Last confirmed liquidity stays visible during missing updates and is labeled when old. Retained display values never authorize a trade.
The private key belongs in the backend secret manager as
JEV_WALLET_PRIVATE_KEY, or in a private mounted file
referenced by JEV_WALLET_SECRET_FILE. Use exactly one
source and a matching WALLET_PUBLIC_KEY. Never put it
in the frontend or paste it into chat.
Real execution requires EXECUTION_MODE=live,
LIVE_TRADING_ENABLED=true and an explicit
LIVE_MAX_BUY_SOL. It starts paused unless the operator
enables LIVE_AUTOSTART. Unresolved orders block further
submissions until reconciled; stopping cannot cancel a transaction
already sent.
The current rulebook.
Documented defaults. Live settings load when available.
| Rule | Value | Meaning |
|---|---|---|
| Action confidence | 25% | Minimum for a model action |
| Maximum exposure | 20% | Per coin, share of equity |
| Paper cash reserve | 0.1 SOL | Paper only. Live mode estimates account rent and entry/exit fees from RPC. |
| Liquidity | 20 SOL | Minimum for entry |
| Recent trades | 3 | Required for action analysis |
| Trade cooldown | 10 seconds | Between buys / partial sales |
| Maximum data age | 60 seconds | Stale data cannot authorize trades |