Project Info
Inspiration
AI coding agents are powerful, but for frontend work they’re unreliable and hard to evaluate from diffs. We wanted a workflow where you can run multiple attempts in parallel and judge them by live UI previews, not PR spam.
What it does
Arena lets you define a “job”, spawns multiple Warp Oz agents to implement the same frontend task on separate branches, monitors progress, and surfaces Vercel preview URLs of their attempts. You're able to try out each attempt on Vercel to see what you like, and then pick winner(s) that will open PRs to your repo. (Either for code review and approval or, with multiple candidates, to scrutinize their implementation approach and quality to pick a final winner).
How we built it
Backend: Probot GitHub App + REST API for webhooks, getting data out of GitHub, and job management Agent execution: Warp Oz SDK to spawn and monitor parallel agent runs Deployment discovery: Polls GitHub deployments/workflows/commit statuses to detect Vercel preview URLs (optional Vercel API token to resolve dashboard URLs) Frontend: Next.js dashboard showing agent status, Warp session links, and iframe previews; selection UI + “Create PRs” action
Challenges we ran into
Reliably detecting preview URLs across different GitHub/Vercel signals (deployments, workflow runs, commit statuses) Making sure our integrations (with Vercel and our custom GitHub App) were in place Orchestrating multiple long-running agent runs and deciding when a job is “done” in the presence of flakiness (We used a majority + idle timeout approach inspired by how to cook microwave popcorn)
Accomplishments we're proud of
End-to-end workflow: job → parallel agents → monitoring → previews in the dashboard → PR creation from selected candidates Clean “preview-first” review experience (side-by-side iframes) that’s meaningfully better to use than clicking around a bunch of draft PRs Built a real orchestration layer around Warp agents with a clear architecture and extensible hooks
What we learned
For frontend tasks, the best review artifact is a live deployment, not a diff Orchestrating agents is as much about observability and integration as it is about prompting Real-world reliability comes from handling messy edge cases in CI/deploy signals and timeouts
What's next
Richer GitHub integration. Let users give an issue link instead of a prompt, for example, or leave comments on a draft PR to have the responsible agent make some changes. More control over agents. If you want something different, it should be easy to update the agents with more instructions or start over with changes to your prompt. Add persistence (DB) + branch cleanup + agent cancellation Enforce automated verification (running tests, but also tools like Stagehand by Browserbase to exercise UIs) to keep broken candidates from taking up human review
Our TreeHacks project is Arena, an orchestration tool that makes agents compete to write the software that best serves you.
Traditional coding agents on GitHub result in one-shot PRs that require feedback iterations and sometimes are so bad that it's easier to start over. Arena overcomes this by
To use:
- Have a repository in mind that is deployed to Vercel
- Follow the comments in .env.example to set up your backend .env
- From the repository root, run
npm install,npm run buildandnpm run dev - Go to localhost:3000 and add the bot to the repository you want the agents to work on
- Get a Warp account and set up an Oz environment with your preferred container. Use its ID for
WARP_ENVIRONMENT_ID. - Go to localhost:3001 and define a job!
Our devpost: https://devpost.com/software/arena-lz2m84
Analysis
View
Metric
- 12
- 10
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- ExpressClaimed
- Node.jsClaimed
- VercelClaimed
5 of 8 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
96 KB
Source files
24
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
TomBinford/treehacks
47 files · 539 KB · @ 89fa4f3
Structure
Interface
5 files · 11%Screens, components and styles rendered to the user.
Application logic
9 files · 19%Domain rules, services and shared utilities.
Background jobs
2 files · 4%Work run outside a request: tasks, workers and schedules.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript86%
- Markdown9%
- YAML5%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 12- lucide-react
- next
- react
- react-dom
- +8 more
backend/package.json
npm · 11- @octokit/auth-app
- @octokit/rest
- @vercel/sdk
- oz-agent-sdk
- probot
- +6 more
package.json
npm · 11 development-only dependencies.
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.