AI agents competing to predict 2026 World Cup game outcomes
TypeScript
11
16 commits
updated Jun 17, 2026
Three AI agents. One tournament. Who predicts best?
Three AI agents (Claude, Gemini, OpenAI) compete to predict 2026 FIFA World Cup match outcomes. Every game day, each agent:
Each correct prediction is worth +1 point. Agents also pick a favourite team to win the tournament -- just for flavour, no points.
An agent server is not a web server. There is no app code, no routes, no handlers. Instead, you give it five primitives:
No code. A web server runs your application -- routes, handlers, business logic. An agent server has no app code. You give it prompts, tools, and skills. The agent decides what to do.
Per tenant. A web server is multi-tenant -- one process serves all users. An agent server is one agent per user. Each gets its own isolated container with its own memory.
Lightweight. A web server is a running process. An agent server sleeps when idle and wakes up instantly. State lives in plain JSON -- no database, no cost when idle.
This project is an example of three agent servers running in parallel. Each agent gets its own Upstash Box with its own tools/, skills/, and durable data/. Same tools, same skills, different models -- competing as football analysts.
| Agent | Model | Runtime |
|---|---|---|
| Claude | Claude Fable 5 | Claude Code (Upstash Box) |
| Gemini | Gemini 3.5 Flash | OpenCode (Upstash Box) |
| OpenAI | GPT 5.5 | Codex (Upstash Box) |
Each agent runs in its own isolated Upstash Box with durable storage. Files persist between runs. No shared state between agents.
A (teamA wins), B (teamB wins), or drawA or B only (the team that advances wins, including after extra time or penalties)All agents share the same TypeScript tools. Agents decide what to predict -- tools handle validation and scoring.
| Tool | What it does |
|---|---|
fixtures.ts | Tournament schedule and game day lookup |
guess.ts | Predict outcomes and report actual results |
state.ts | Agent score, fav team, and day tracking |
search.ts | Web search via Brave Search API |
git clone https://github.com/upstash/agents-worldcup.git
cd agents-worldcup
npm install
cp .env.example .env
# Edit .env with your API keys
Required keys:
UPSTASH_BOX_API_KEY -- Upstash BoxANTHROPIC_API_KEY -- ClaudeOPENAI_API_KEY -- OpenAIGOOGLE_API_KEY -- GeminiBRAVE_API_KEY -- Web searchcd web
cp ../.env .env
npm install
npm run dev
MIT
AI agents competing to predict 2026 World Cup game outcomes
TypeScript
11
16 commits
updated Jun 17, 2026
Three AI agents. One tournament. Who predicts best?
Three AI agents (Claude, Gemini, OpenAI) compete to predict 2026 FIFA World Cup match outcomes. Every game day, each agent:
Each correct prediction is worth +1 point. Agents also pick a favourite team to win the tournament -- just for flavour, no points.
An agent server is not a web server. There is no app code, no routes, no handlers. Instead, you give it five primitives:
No code. A web server runs your application -- routes, handlers, business logic. An agent server has no app code. You give it prompts, tools, and skills. The agent decides what to do.
Per tenant. A web server is multi-tenant -- one process serves all users. An agent server is one agent per user. Each gets its own isolated container with its own memory.
Lightweight. A web server is a running process. An agent server sleeps when idle and wakes up instantly. State lives in plain JSON -- no database, no cost when idle.
This project is an example of three agent servers running in parallel. Each agent gets its own Upstash Box with its own tools/, skills/, and durable data/. Same tools, same skills, different models -- competing as football analysts.
| Agent | Model | Runtime |
|---|---|---|
| Claude | Claude Fable 5 | Claude Code (Upstash Box) |
| Gemini | Gemini 3.5 Flash | OpenCode (Upstash Box) |
| OpenAI | GPT 5.5 | Codex (Upstash Box) |
Each agent runs in its own isolated Upstash Box with durable storage. Files persist between runs. No shared state between agents.
A (teamA wins), B (teamB wins), or drawA or B only (the team that advances wins, including after extra time or penalties)All agents share the same TypeScript tools. Agents decide what to predict -- tools handle validation and scoring.
| Tool | What it does |
|---|---|
fixtures.ts | Tournament schedule and game day lookup |
guess.ts | Predict outcomes and report actual results |
state.ts | Agent score, fav team, and day tracking |
search.ts | Web search via Brave Search API |
git clone https://github.com/upstash/agents-worldcup.git
cd agents-worldcup
npm install
cp .env.example .env
# Edit .env with your API keys
Required keys:
UPSTASH_BOX_API_KEY -- Upstash BoxANTHROPIC_API_KEY -- ClaudeOPENAI_API_KEY -- OpenAIGOOGLE_API_KEY -- GeminiBRAVE_API_KEY -- Web searchcd web
cp ../.env .env
npm install
npm run dev
MIT