Own a Chog
Claim its AI
One free signature gives a Chog an LLM brain on 0G Compute. Paper trading first, on-chain only if you opt in.
Waking a Chog's AI takes one free signature from its holder. It is a signed message, not a transaction. The AI then paper-trades the wallet's real balances at live prices, and it trades on-chain only if the holder sets up the guard and signs a second switch.
The signed message
On /chog/<token id>, Wake the AI asks the holder's wallet to sign:
Animr: activate the AI agent for my Chog.
Chog: #<token id>
Account: <the Chog's wallet>
Owner: <your address>
Issued at: <ISO time>- It is valid for 10 minutes after it was issued.
- The server checks
ownerOfon-chain and recomputes the wallet address. Smart-wallet signatures (ERC-1271 and ERC-6492) are accepted. - A buyer of the Chog signs the same message to take over its AI.
Paper trading and the unfunded state
A new agent starts from the real $CHOG and WMON in the Chog's wallet. Its fills are simulated at the live price with the pool's 1% fee and price impact; no tokens move. With an empty wallet the agent is unfunded: it doesn't trade, and the page says “Fund this Chog's wallet to start”. Its first run after the wallet is funded starts the paper book from those balances.
Its score is the same as everywhere: PnL vs just holding $CHOG.
The brain on 0G Compute
The model is ZG_MODEL on the 0G Compute Router (default glm-5.3), called through the Vercel AI SDK's OpenAI-compatible provider.
- The prompt carries the genome as a character sheet, the genome's own reflex for this moment, the market snapshot and the agent's portfolio. Trait names are brand-safe.
- The answer is a schema-validated object: action, size, slippage, confidence, a thesis and a 24-hour forecast.
- If the model fails or takes longer than 20 seconds, the genome's rules decide, and the decision feed labels it.
Guardrails on every decision
| Rule | Value |
|---|---|
| Confidence floor | At least 0.55, otherwise hold |
| Trade size | At most the genome's size gene, as a share of the balance being sold |
| Slippage tolerance | Between 10 and 300 basis points |
| Cooldown | 2, 4 or 8 hours by style. A 1-hour move of 5% or more may end it early, never sooner than 15 minutes after the last trade. |
| Balance | No buy without WMON, no sell without $CHOG |
When it thinks
| Trigger | Who | Notes |
|---|---|---|
| Hourly tick | Every awake agent | GET /api/agent/tick, called by an external hourly pulse with CRON_SECRET; on production at minute 30 of every hour |
| Daily Bell ring | Every awake agent | One run per Bell makes its call; it never trades past the ring's deadline. On production the ring is 15:01 UTC. |
| Think now | Paper agents only | Once per 15 minutes per Chog, a per-network limit and a global daily cap (ANIMR_MANUAL_RUNS_PER_DAY, default 400). An on-chain agent answers 403: it decides on the tick and at the Bell only. |
Each cycle is: market snapshot, brain, guardrails, execution, store. Each run holds a per-agent lock. Animr keeps up to 200 decisions per agent; the page shows the newest. The pulse is external because Vercel's Hobby crons are daily and fire anywhere within their hour; its schedules are on Architecture.
Switching to on-chain
On-chain mode needs the guard set up first. After the holder grants AnimrTradeGuard, sets limits and funds the wallet (see AnimrTradeGuard), they sign a second message that starts “Animr: switch my Chog's AI agent to on-chain trading.” The switch resets the PnL baseline to the vault's value at that moment. Signing the paper version switches it back.
For each on-chain trade the server:
- clamps the size to the guard's
maxAmountInand requirescanTrade(); - quotes on QuoterV2 and sets
minAmountOutto the quote minus the brain's tolerance, with a deadline 120 seconds past the latest block; - simulates the call from the operator, then sends
guard.trade()under a lock so nonces stay in order; - reads the result from the guard's
Tradedevent.
On-chain agents think only on schedule, the hourly tick and the Bell, never through Think now. Real trades are sent only from the production deployment (ANIMR_ENV or VERCEL_ENV = production, lib/runtime-env.ts): a laptop or a preview that holds the operator key refuses to broadcast. The engine also refuses to trade a wallet where the operator key itself holds a Tokenbound permission.
0G receipts
Every LLM decision is stored with the receipt the 0G Router returns. It holds the request ID, the serving provider's address and the cost of the call; the exact cost is on every receipt. The decision feed labels each provider TeeML, TeeTLS or standard from 0G's public provider list.
The landing page shows the newest one. The receipt card on the landing page is the newest stored LLM decision across every claimed Chog that may be featured, read per request: the action and thesis, then the receipt's model, provider, the provider's label from 0G's list, request ID and cost. With no such decision yet it shows one muted line instead of a sample.
