Skip to content
DocsClaim its AI

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:

Activation message
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 ownerOf on-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

Guardrails
RuleValue
Confidence floorAt least 0.55, otherwise hold
Trade sizeAt most the genome's size gene, as a share of the balance being sold
Slippage toleranceBetween 10 and 300 basis points
Cooldown2, 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.
BalanceNo buy without WMON, no sell without $CHOG

When it thinks

Decision triggers
TriggerWhoNotes
Hourly tickEvery awake agentGET /api/agent/tick, called by an external hourly pulse with CRON_SECRET; on production at minute 30 of every hour
Daily Bell ringEvery awake agentOne run per Bell makes its call; it never trades past the ring's deadline. On production the ring is 15:01 UTC.
Think nowPaper agents onlyOnce 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 maxAmountIn and requires canTrade();
  • quotes on QuoterV2 and sets minAmountOut to 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 Traded event.

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.