Screenshots
About
A bot that never wastes an energy
Luchamon Bot automates battles on luchamon.com, a fully on-chain auto-battler on the Base chain. Each Luchamon gets seven energies per week; the bot spends them on the best move, never losing one.
It signs its transactions with the game's Fast Mode Wallet — the main wallet stays cold.
Pick by simulation, not heuristics
For each fight, the game offers eight random opponents. Rather than guess, the bot runs each of the eight through the game's own battle engine, over many VRF seeds, to estimate a win probability. It then plays the best available one — the "least bad," since even the loser earns $LUCHA, so no energy is wasted. The objective is tunable per Luchamon: safe aims for the surest win, aggressive for the strongest still-safe opponent to climb the ladder.
These simulations need thousands of on-chain reads. A local Anvil fork serves the same bytecode about 24× faster than the free RPC tier — a calibration run drops from ~40 min to under a minute once the cache is warm.
A run is one drain
npm start is one run: it drains the week's available energy, then exits. The process is the run — it never loops or schedules itself. An always-on core service reads the weekly reset on-chain and launches the drain at the right moment, with progress and a debrief pushed to Telegram.
Local cockpit
A web cockpit (React + Vite, strict TypeScript) drives the bot locally: run an anti-meta analysis, inspect the roster, and apply a build by signing the updateBuild transaction with your main wallet in Rabby or MetaMask. The core service never holds the main key — it prepares the calldata and journals, nothing more. In the Docker stack, nginx serves the bundle and re-injects the API secret server-side: the JS bundle never sees it.
Stack
Built in TypeScript with viem for on-chain interaction, deployable via Docker (core + Telegram + cockpit + Anvil) in one docker compose up. Architectural decisions are recorded as ADRs in a private vault — 24 to date.
Roadmap
Economic agent — staking & capital allocation
In progressMonte-Carlo simulation of the staking bonus, an algorithm to allocate a $LUCHA budget across the roster, and applying recommendations from the cockpit.
Cockpit — post-audit UI/UX polish
In progressGraduated confirmation protocol for fund-moving actions, typed design tokens, component primitives, and a global command palette.
Local web cockpit (always-on core)
Shipped2026-06React + Vite cockpit plus a core API service, in fast dev mode or a LAN-only Docker stack. The API secret never reaches the browser bundle.
Opponent selection by simulation
Shipped2026-06Each opponent is run through the game's own battle engine over many VRF seeds to estimate a win probability; the bot plays the best available move.
Anvil forks for fast simulations
Shipped2026-06A local fork serves the same bytecode ~24× faster than the free RPC tier, with fail-fast if the simulation backend is degraded.
Scheduled autonomous run + Telegram debrief
Shipped2026-05One run drains the week's energy then exits; the weekly reset is read on-chain, with progress and a debrief pushed to Telegram.
Active roster & profitability
Shipped2026-05Per-Luchamon builds, stats and skills, ROI tracking ($LUCHA earned, energy consumed), and baseline snapshots to measure every mutation.
More from patolabs
Souffle
Guided breathing, 13 soundscapes and synchronized haptics. Find your calm in minutes.
Orfeo
Participative auto-DJ — guests propose and vote from their phones, an autonomous brain decides what to play and when.
Claude project template
A project skeleton wired for developing with Claude Code — from ticket to merge, with project tracking in a local Obsidian vault.