One order per block is the whole experiment
Jev Trader watches Kuru's MON-USDC order book on Monad and makes one buy-or-sell decision roughly every 300 ms. It posts a post-only limit order one tick inside the best price, cancels its previous resting order, and records a fill when another trader hits it. That is a specific market-making loop, not a general trading framework. The service exposes a snapshot, the last 1,000 block events, and an SSE feed for a dashboard.
The name can oversell the role of AI. MODEL=jev sends decisions to TypeSafe's Jev service and needs an API key. The default mock model is a momentum heuristic with an inference delay stand-in. With no private key, the program reads the real book but simulates its orders and fills. That default is the right place to start because the repository demonstrates transaction mechanics rather than a validated edge.
What happened when we ran it
Our sandbox installed commit b587759 in 15 seconds. Bun added 139 packages, and the installed tree occupied 120 MB. The checkout contained 62 files, about 2,961 lines of source, and used 0.4 MB. Installation succeeded in an unprivileged Node 22 container with 3 CPUs, 8 GB of RAM, and no secrets. This run did not connect a wallet, submit an order, or evaluate returns.
There was no build script or target, so the build step was skipped. There was also no test script or target, so the test step was skipped. The repository has 0 CI workflow files and no tests directory. A Dockerfile does exist and installs production dependencies on Bun 1.3 before starting src/index.ts. That is useful packaging, but a successful dependency install says nothing about signing, nonce recovery, margin accounting, fill detection, or loss controls.
Live mode needs capital before it has hard loss stops
The measured commit defaults to a 200 MON order, a 1,000 MON position cap, and stated starting balances of 600 MON plus 20 USDC in Kuru's margin account. It also records a $100 bankroll for percentage reporting. Live mode needs a private key, funded margin, an RPC endpoint for sends, and a read endpoint for book data and logs. Jev adds another remote dependency and credential to a loop that runs once per block.
Reaching the position cap does not always mean standing down. The README says that when the model's side is blocked, the quote goes on the opposite side with capped: true, while the recorded probabilities still show the original call. A hold occurs when the model misses the block. That behavior may reduce a position, but it also means the submitted side can disagree with the model's answer. Monitoring must distinguish model intent, cap-driven orders, sends, receipts, and later fills.
Gas and loss limits remain in an open pull request
Pull request 2 proposes caps for gas, losses, and reverts, plus fixes to fee accounting and nonce recovery. It remains open and unmerged, so those controls are not part of commit b587759. The contributor reports that the loop pays the configured gas limit even when a quote reverts and argues that posting every block can cost more than the captured spread. That is pull-request evidence, not a result from our sandbox.
The same pull request says sends with no receipt were omitted from one gas total and proposes persisting gas budgets across restarts. Pull request 3 separately proposes a 0.65 confidence threshold, because the current binary choice trades whichever side clears 50%. Both patches point at reasonable safeguards. Their open state is the decision-relevant fact: anyone going live must implement, review, and test equivalent limits rather than assuming the repository already has them.
A reported 83% revert rate exposed stale margin state
Pull request 4 reports that margin balances were refreshed every 200 blocks, leaving the trader to quote a depleted side. Its author measured an 83% quote revert rate before a local balance mirror and a 10-block reconciliation interval, then reported 11% afterward over about 340 block samples. The pull request was closed without merging. Those figures do not establish the current bot's normal rate, but they identify a concrete failure mode in the measured commit.
The same report notes that stopping the process can leave orders resting on the book and margin inside Kuru's account. It adds separate scripts to cancel orders and withdraw margin, but they are also outside the main branch. A production run needs shutdown handling that confirms cancellations, accounts for fills during shutdown, and verifies funds after withdrawal. A container restart is not a trading stop if an earlier order remains live.
September code and October pull requests show interest, not maturity
GitHub showed 2,772 stars and 9 open issues and pull requests on October 4, 2026. The repository was created on September 16 and last pushed on September 17, while outside pull-request activity continued through October 1. There is no published release. The dates show quick attention around a small public experiment, but no release cadence or merged history of the safety work raised after launch.
Hummingbot is the stronger starting point when you need an established market-making framework and multiple connectors. Freqtrade or Jesse makes more sense when strategy research and backtesting come before a live key. Jev Trader is most useful as readable execution code: 62 files expose the book read, model decision, signed order, receipt, fill log, and SSE output without much scaffolding. Keep it dry until those same paths have tests and enforced budgets.

