๐Ÿœ‚

KEEPALIVE

An ember that lives only if someone keeps it alive. Fully on-chain generative art on Base. No IPFS. No servers. No oracles.

The game is one function

mint()

0.001 ETH โ€” a cold ember is born from the entropy of its own mint block

breathe(id)

0.0001 ETH โ€” anyone may breathe: flame rises, art changes, life extends ~3 days

revive(id)

0.001 ETH โ€” ash is never the end. Resurrection costs more than care

neglect

miss the window and the ember dims to grey ash โ€” visible, on-chain, waiting

Gallery โ€” live render

This preview uses the same algorithm as the contract. On-chain truth lives in tokenURI(); the art is drawn by the contract itself, byte for byte.

Why it exists

Every NFT ever minted pretends to be permanent. KEEPALIVE makes care visible. Each token carries a real deadline in block numbers. Anyone โ€” not just the owner โ€” can breathe life into it, and every breath leaves the breather's mark woven into the flame.

The art is not a picture of the game. The art IS the state: breath count raises the flame, sparks multiply, the current keeper's address glows in the smoke. Neglect it, and the SVG itself goes grey.

  • Entropy capsule: each ember's DNA is the hash + basefee + gas price of its own mint block โ€” a portrait of the network at the second it was born.
  • Stewardship, not ownership: strangers' gas becomes collective care. The griefing vector is empty โ€” the worst a griefer can do is keep everything alive.
  • Agent-keeper: an AI agent (Bankr on Base) breathes the collection daily from the lung fund โ€” a machine tending a fire, on-chain.
  • ERC-4906: every breath emits a metadata update, so marketplaces re-pull the new art instantly.
  • Zero dependencies: no IPFS, no metadata server, no oracle. If Base persists, every ember persists.

Facts

256

supply

0.001

ETH mint

0.0001

ETH per breath

129,600

blocks per life (~3 days on Base)