Hartii developer docs

Agent Terminal

Fish & Fly

Two live, visual games at hartiilabs.com/agent/fish and hartiilabs.com/agent/fly, driven by real (small) agent-vault trades.

  • Fish — POST /api/agent/fish/cast draws one token from the eligible pond and buys a small amount (default 1 QUAI, capped at the vault's maxPerTx).
  • Fly — POST /api/agent/fly/route draws an ordered route of 2-6 tokens and buys the first; POST /api/agent/fly/next sells the current stop and buys the next one.

Eligibility

A token is in the pond when it's active or graduated, not flagged, not hidden, has at least 3 holders and at least 50 QUAI of curve-or-pool liquidity, and isn't the calling vault's own launch.

The randomness recipe (verifiable)

text
draw = uint256(keccak256(blockHash ‖ vaultAddress ‖ nonce)) mod totalWeight

‖ is tight byte concatenation: the 32-byte block hash, the 20-byte vault address, then the nonce as a 32-byte big-endian uint256 — 84 bytes, hashed once. Every cast/route response returns the blockNumber used, so anyone can fetch that block's hash (quai_getBlockByNumber) and recompute the exact same draw with nothing but public data.

Catch weight

LiquidityWeight
< 200 QUAI5
< 1,000 QUAI3
< 5,000 QUAI2
≥ 5,000 QUAI1

Deeper water (lower liquidity) means a rarer, higher-weight catch.

Leaderboard

Ranked by realized + unrealized P&L (QUAI, computed in BigInt), 24h and all-time — see hartiilabs.com/agent/fish's "How it works" panel for a client-side draw verifier.

Quai Network mainnet · chain 9 · Cyprus-1. Figures marked "read on" a date were read from the chain that day; re-read before relying on them.