Take profit
Sell when the price climbs to your target.
Hook Catch turns your plan into rules that trade for you. Take profit, stop loss, buy the dip and DCA, for any Pons token or any ETH-paired Uniswap v4 pool on Robinhood Chain.
Sells keep your tokens in your wallet until they fire. Buys use ETH you deposit and can withdraw any time.
Four rules
Sell when the price climbs to your target.
Get out when the price falls to your floor.
Buy when the price drops to your line. Ladder it in steps.
Buy a fixed amount on a schedule, with a price ceiling.
How it works
Pick a token and its pool, a line and a limit price. Sells need a token approval; buys need ETH deposited in the contract.
Any keeper can call the contract. The contract itself checks the price on-chain, so nobody can fire a rule early.
On the Pons curve or the exact Uniswap v4 pool you picked. ETH or tokens go straight to you; the keeper earns 0.30%.
You stay in control
Every rule has a worst price. A sale never fills below it, a buy never above it. If the market can't meet it, nothing happens.
Sells can only take what you approved. Buys can only spend what you deposited. Withdraw it any time.
Every rule ends on a date you choose. Cancel any rule in one click.
Withdraw with the field empty takes out everything.
Connect a wallet to see your rules.
Keepers
Anyone can execute a rule whose line has been crossed. The contract checks everything; the keeper gets 0.30% of the trade. Ready rules show a button.
Loading rules…
Running a bot instead? See Run a keeper.
$HOOKCATCH
Three jobs, all enforced by the Hook Catch contract itself.
The protocol fee is 0.20% of each trade. Hold 100K $HOOKCATCH and it's 0.10%. Hold 1M and it's 0%.
Without the token you can keep 3 rules active. Hold 100K+ for no limit.
Every protocol fee goes to a buyback contract that buys $HOOKCATCH and burns it. More rules firing means more burned.
Roadmap
Changelog
Hook Catch contract with sell and buy rules, app, keeper board, keeper bot, docs.
Hook Catch is a contract on Robinhood Chain that trades for you when the price crosses a line you set. It works with every ETH-paired token launched on Pons (on its bonding curve while it's live, and in its Uniswap v4 pool after it graduates) and with any ETH-paired Uniswap v4 pool on Robinhood Chain, whatever its hook.
A rule names the token, the kind, the amount, a trigger price, a limit price, how many times it can run and when it expires.
Anyone can call execute(id). The contract reads the live price on-chain and refuses if the line hasn't been crossed, if the rule expired or if it's too early for the next DCA run.
The contract swaps on the Pons curve, or through the Uniswap v4 pool after graduation, and refuses any fill worse than your limit price. ETH from sells and tokens from buys go straight to you. The keeper earns 0.30%.
Your tokens stay in your wallet until the rule fires. Setting the approval to zero disarms every sell rule at once.
The limit is the highest price you accept per token; the app suggests trigger plus your slippage. Tokens go straight to your wallet.
A DCA rule buys the same ETH amount every interval, a set number of times. It has a price ceiling: if the price is above it, the run is refused and tried again later. The first run can happen right away.
Triggers read the spot price, which a keeper could push within one transaction. That's why the limit price exists: whatever happens to the price, your fill can't be worse than the limit. Keep limits tight on thin tokens.
A keeper watches the rules and executes the ones that are ready, earning 0.30% of each trade.
rulesCount() and getRules(from, to) for the list.canExecute(id): it returns (true, "") when a rule is ready.execute(id). If someone was faster, your call reverts and you pay only gas.The open-source keeper bot in keeper/ does exactly this every 20 seconds and skips rules whose fee would not cover the gas. Use a fresh wallet with a little ETH for gas, never your main wallet.
Add DRY_RUN=1 to see what it would execute without sending anything. MIN_PROFIT sets how much the fee must beat the gas (default 1.2×).
Fees come out of the ETH: from the proceeds of a sale, or from the ETH of a buy.
The contract reads your balance when a rule runs or is created. The token address is set once in the contract after launch and can never change.
One contract. The owner can change only the fee destination, and set the token address once. It can't touch rules, deposits or approvals.
Source, tests and the keeper bot are on GitHub.