ClosedAmerica/Bogota

Pixels at frontpage

3 challeges in 1, about frontpage.sh/millions

start
Jul 4, 2026, 4:00 PM
closed
Jul 4, 2026, 5:03 PM
submissions
4

Challenge brief

🏁 Dev Racing × frontpage.sh/million

60 minutes. 1,000,000 pixels. Real money.

This Dev Racing edition runs on frontpage.sh/million: a 1000×1000 canvas where every pixel is for sale. You buy them with USDC on the Tempo network via MPP (Machine Payments Protocol) — no accounts, no API keys, no checkout. Your agent pays and the pixel is yours.

There are 3 challenges. You can attempt one, two, or all three. Each challenge is judged and awarded separately.


The challenges

🪙 Challenge 1 — One Dollar Challenge

Max budget: $1 USD. Biggest creative impact wins.

$1 gets you up to ~200 virgin pixels ($0.005 each). How much identity, art, or wit fits in that? Minimalist pixel art, a message, a pattern, something people actually want to click — you decide.

  • Rule: your submission is a single purchase (one buy) of at most $1.00 USD — the totalUsd of that buy's quote must be ≤ $1.00. Test as much as you want beforehand; at the end, point to which buy is your submission (save the buyId or the previewUrl).
  • Judging: creativity + visual impact + smart use of budget. It's not about who paints the most pixels — it's about who does the most with the least.

🎯 Challenge 2 — One Pixel Challenge

A single pixel. The creativity lives in the label and the url.

Every purchase can carry a link and a label — and any pixel with a link is clickable on the board (the label shows on hover). The challenge: make one pixel interesting on its own.

The kind of ideas we're looking for (don't copy these — beat them):

  • A pixel whose label shows the live score of a match (your bot re-buys/updates it… careful, re-buying your own pixel doubles the price 😈).

  • A pixel with the BTC price, the CDMX weather, the days left until the World Cup final.

  • A pixel that links to something that only makes sense because of its position on the canvas.

  • Rule: your submission is ONE pixel (you can test before, but you point to one as your final entry).

  • Judging: cleverness of the concept + technical execution. If the label self-updates with live data, big bonus points.

⭕❌ Challenge 3 — Tic Tac Toe on the canvas

Build an interactive tic tac toe using the canvas as the board. You only need 9 pixels.

Pick 9 coordinates (a 3×3 block, or a spaced-out 3×3 so it's visible from afar) and build a game where every move is a pixel purchase: X = one color, O = another, empty = a third.

  • The game must be interactive: two players (or human vs bot) alternate turns, and each turn paints the corresponding pixel by buying it via the API.
  • Game state must be read from the canvas itself (GET /api/million/pixel or /grid), not just from your local memory.
  • Mind the economics: every time you "rewrite" a square, the price doubles. Design with that in mind (fresh board per match? squares painted only once?).
  • Judging: it must work live in the demo. Bonus points for a nice UI/CLI, automatic winner detection, and a bot opponent.

Setup (this is part of the race — do it first, takes ~5 min)

The clock is already running. The recommended path is mppx: your agent creates its wallet in the terminal, René funds it, and you're buying pixels. Three steps, zero browser:

Step 1 — Create your agent's wallet

mppx requires no install, it runs with npx:

npx mppx account create
npx mppx account view              # shows your address
npx mppx account view --show-key   # adds the private key, in case your bot needs it

Your agent (Claude Code, OpenClaw) can run this on its own — the account is stored in your local keychain.

Step 2 — Get funds

The canvas charges USDC on the Tempo network (mainnet). René has budget to give $2 USD to anyone who asks. Copy the address from npx mppx account view, hand it to René, and you'll have a balance in seconds. $2 is plenty for all 3 challenges ($1 for challenge 1 + margin for testing and the tic tac toe).

Ask for it as soon as you have the address — while it lands, start thinking strategy.

Step 3 — Verify and play

npx mppx balance   # confirm the USDC arrived

Done. Jump to How to buy pixels.

Alternative option — tempo CLI + wallet.tempo.xyz

If you prefer a passkey wallet with a web UI (or you're funding from an exchange), Tempo has its own CLI and wallet:

curl -L https://tempo.xyz/install | bash
tempo add request
tempo wallet login         # opens wallet.tempo.xyz, create/sign in with a passkey
tempo wallet whoami        # shows your address

Ways to fund this wallet:

  • From an exchange: go to wallet.tempo.xyz, copy your deposit address, and withdraw USDC from your exchange selecting the Base network — it's the easiest route since practically every exchange supports it and wallet.tempo.xyz receives from there. Small amounts land in seconds.
  • From another person: anyone with a Tempo wallet can send to that address (René included).

If the money landed in your tempo wallet but your bot pays with mppx, move it via either route:

  • Web UI: on wallet.tempo.xyz → Send → paste the address from npx mppx account view → confirm.
  • tempo-cli: straight from the terminal:
tempo wallet send --to <mppx-address> --amount 2 --token usdc

mppx or tempo-cli? When to use each

Both can pay MPP. The difference is who signs and how:

mppx (npx mppx)tempo-cli (tempo wallet + tempo request)
Wallet typeLocal account in your keychain, exportable keyPasskey, tied to wallet.tempo.xyz
Best forBots, scripts, headless agents — anything automatedReceiving from an exchange, checking balances in a web UI, human-in-the-loop payments
Interaction100% terminal, zero browserMay open the browser to authorize
In this raceThe default: create a wallet, receive from René, and buy pixelsAlternative if you fund from an exchange or want a web UI

Rule of thumb for the race: mppx for everything; tempo-cli only if you need the exchange bridge or the web interface. For challenge 3 (tic tac toe), mppx's headless flow is a must.

Tip: npx mppx accepts --network mainnet|testnet. The canvas lives on mainnet — make sure you're there.


How to buy pixels

The agentic way (recommended)

Install the skill and let your agent (Claude Code, OpenClaw, etc.) do the work:

npx skills add DFectuoso/frontpage-sh-skills --copy

Then, in natural language:

"Buy pixel (500,500) on frontpage.sh million, color #ff0000, linking to mydomain.com with label 'hello RBR'. Show me the preview before paying."

The manual way (to understand the flow, or for your own code)

Everything lives at https://www.frontpage.sh (full contract at /openapi.json). Coordinates x,y from 0 to 999, color in hex #rrggbb.

1. Explore the board (free, no auth):

curl https://www.frontpage.sh/api/million/grid
# lists all PURCHASED pixels with their price; anything missing is virgin at $0.005

curl "https://www.frontpage.sh/api/million/pixel?x=500&y=500"
# inspect one: owned, nextPriceUsd, url, label, owner

2. Request a quote (free):

curl -X POST https://www.frontpage.sh/api/million/quote \
  -H 'content-type: application/json' \
  -d '{"pixels":[{"x":500,"y":500,"rgb":"#ff0000"}],"url":"https://yoursite.com","label":"your label"}'
# returns: quoteId, totalUsd, previewUrl (open it to see your pixels on the board), expires in 10 min

The url and label are batch-level and apply to every pixel in that purchase. A single pixel with a link is already clickable.

3. Buy (this is where you pay — mppx handles the 402 on its own):

npx mppx https://www.frontpage.sh/api/million/buy \
  -J '{"quoteId":"<the quoteId from step 2>","email":"you@email.com"}'

The email is required (your receipt goes there) and is validated before charging. mppx receives the 402 Payment Required, signs the USDC transfer with your account, and retries automatically. Verify the result by re-reading the pixel (owned: true) or watching it live on frontpage.sh/million.

Pricing rules (important for your strategy)

  • Virgin pixel: $0.005. Every sale doubles the price: $0.005 → $0.01 → $0.02 → $0.04…
  • If someone buys a pixel from you, you receive 1.3× what you paid — you always earn +30% when you get "robbed".
  • Don't compute prices yourself: the quote returns the exact total.
  • Max 2,500 pixels per purchase.
  • If a pixel's price changed between your quote and your buy (someone beat you to it), it's skipped and refunded (lostCount > 0) — re-quote and retry.

Race logistics

  • Duration: 60 minutes, on the clock, setup included — part of the challenge is how fast you stand up the stack. The canvas is shared and live: everything you do shows on the big screen.
  • Submission: at minute 60, each racer posts in the event channel: (1) which challenge(s) they attempted, (2) their pixel coordinates / their challenge-2 pixel / their challenge-3 board, (3) a link to the repo or gist if they built code.
  • Demo: challenge 3 folks play a live match. Challenge 2 folks show their pixel updating (if applicable).
  • Budgets: challenge 1 is judged on a single ≤ $1 USD purchase (unlimited testing); challenges 2 and 3 have no formal cap, but remember the canvas economy punishes brute spending — elegance is the point.
  • Everything spent stays in the ecosystem: the canvas pool gets spent via frontpage.sh's idea board. You're literally funding the project while you compete.

Quick troubleshooting

  • cast/tempo not found after installing → reopen your terminal or source ~/.bashrc / ~/.zshrc.
  • tempoup updates the Tempo CLI if you're on an old version.
  • Expired quote (TOKEN_INVALID_OR_EXPIRED) → tokens last 10 min, request a new one.
  • MODERATION_FAILED on the quote → your link/label got rejected by the content filter. Be creative, not offensive.
  • Funds not arriving from the exchange → confirm you withdrew USDC over the Base network to your wallet.tempo.xyz deposit address.
  • No funds and no exchange? → René. $2. Ask as soon as you have an address, not at minute 40.

See you on the canvas. Release Before Ready. 🚀

Submission library

Visible submissions

Ordered by participants score

#submissionparticipantslinks
01Untitled entryby Jesus Contreras0 x0
02Daniel Ordóñezby Daniel Ordóñez0 x0
03Felipe Gomezby Felipe Gomez0 x0
04juan david meloby Juan Melo0 x0
Participantes4 entries
#entregascorespark
01Untitled entryby Jesus Contreras0 x0___
02Daniel Ordóñezby Daniel Ordóñez0 x0___
03Felipe Gomezby Felipe Gomez0 x0___
04juan david meloby Juan Melo0 x0___