# Project export: Treemux

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: TreeHacks 2026
- Tagline: We simulated TreeHacks.
- Devpost: https://devpost.com/software/treemux
- GitHub: https://github.com/ojpbarbosa/treehacks-26
- Demo: https://treemux26.vercel.app/
- Team: 5 GitHub contributor(s) — barbosa.joao (30 commits), JettChenT (10 commits), Jolie Teo (4 commits), Claude Opus 4.6 (3 commits), Possible (1 commits)

## Devpost submission (written by the team)

### Overview

Link to demo Video demo link (it's taking time to upload so we put it here!): https://drive.google.com/drive/folders/1KrYEVZuv6BYaxwpSi-P-ywp5DF7RNGrP

### Inspiration

While ideating, we were inspired by two emerging trends. First, the rise in large scale simulations where multiple agents interact with each other[1]. This area was mainly used to model social experiments. The second trend is async agents that do real-world software engineering with minimal human intervention[2]. We realised AI, in 2026, are now able to take on the full pipeline of project development, from ideating to producing an end project. As the speed and cost of validating ideas is getting increasingly negligible, we believe it would be especially valuable to generate and validate ideas at scale to solve ambitious exploratory problems. [1] https://x.com/simile_ai/status/2022011618176237657 [2] https://builders.ramp.com/post/why-we-built-our-background-agent

### What it does

Treemux takes a broad problem statement like TreeHacks and spawns parallel AI agents with diverse profiles, each of which independently explore the solution space. Specifically, each agent generates its own idea, builds a full-stack Next.js application, commits to GitHub, and deploys to Vercel. (To see an example, visit: https://treemux-khueopstbpoeyrjchbbpf-ezt2gb5e0-vjxs.vercel.app/). Then, we simulate judges to evaluates their ideas and converge on an overall winner. At the same time, a dashboard visualizes each agent’s progress as a live DAG. You can watch code being written, builds completing, and deployments going live. When all agents finish, an evaluator judges the submissions. We benchmarked our evaluator judge panel against the dataset from Si, Yang & Hashimoto (2024), where 100+ NLP researchers blind-reviewed research ideas. Single LLM reviewers scored near random chance (53.3%), but our multi-judge panel with achieved stronger agreement with human consensus (achieving a Spearman rank correlation of 0.924), showcasing that the pipeline is robust to noisy scores, judge bias, and reviewer disagreement.

### How we built it

There are four parts to Treemux. Orchestrator API (Bun + TypeScript): this spawns the swarm of workers based on task description, creates GitHub repos/branches, provisions Vercel deployments, and broadcasts real-time events to frontend over websockets Worker sandboxes (Python + Modal): each agent runs in an isolated container with Node.js, Bun, and Claude Code CLI pre-installed, along with baked-in skill references (shadcn/ui, Vercel best practices, AI SDK docs) Evaluator Engine (Node + TypeScript + Browserbase): designs a custom AI judge panel from your criteria, researches real people as persona judges, runs all judges (with browser access for live demos), streams results back. Live dashboard (Next.js + Tailwind + React Flow): consumes Server-Sent Events to render a real-time visualization into agents' work progress, artifacts(websites produced), and a judging results.

### Challenges we ran into

Given the same exploratory task description, agents tend to come up with the same ideas (similar to how the jokes generated by different LLMs are always the same). To prevent mode collapse, we produce a diverse set of personalities for the agents. Specifically for TreeHacks, we collected hacker profiles from the #hacker-intros channel in slack server, and after anonymisation, used them as the base personality of agents.

### Accomplishments we're proud of

The entire pipeline (from idea generation to live deployed apps) could be run with just one prompt, with zero human intervention The dashboard makes the blackbox AI pipeline feel less abstract, since you can see each agent’s steps, like the idea generation, code commits, builds, deployments, live. Each agent produces a deployed websites, a GitHub repo, and a written pitch.

### What we learned

We found out how important observability is. When we were discussing the concept with judges, a lot of them said they would like to see the agents in action. Thus we made sure to prioritize the UI. We wanted a UI that is immersive, without overwhelming users with noise.

### What's next

Treemux currently mostly simulates judging in a tech-project-related setting (think hackathons, YC-batches etc), but the core orchestration system is domain-agnostic. Over time, it can evolve into a generalized evaluation layer for any structured parallel exploration problem. Consider simulating architectural proposals, government policy trade-offs, parallel R&D hypotheses, or even research journal submissions. These can all be configured with the right choice of new tool calls, MCPs, judges and simulation context. We also plan to make agent roles fully configurable. Users could define agent personalities or agents, such as “optimise for profitability,” “optimise for social impact,” or “optimise for speed”, and watch how different incentives change the exploration and the final winner. Treemux could allow users to use their own ideas as inputs into the system, so that they can be evaluated against the other agent generated solutions. This can help them find blind spots and stress test assumptions.

## README (from the GitHub repository)

# Treemux

**AI-Powered Orchestration Platform**

Treemux takes a single problem statement and spawns N parallel AI workers — each running Claude Code CLI inside isolated Modal sandboxes — to ideate, implement, and deploy complete projects autonomously. Every task set gets its own GitHub repo, and each worker gets its own branch and live Vercel deployment, for quick idea prototyping, with real-time progress streamed to users. Finally, we run our own evaluator model, which is responsible for evaluating and judging each of the projects based on idea and implementation.

> Task → N × AI Workers (Modal + Claude Code) → GitHub → Vercel → Live Demos → AI Judges

This has tremendous potential. Imagine a founder simulating a batch of 100 YC companies in 3 hours for $10 worth of Claude credits and having a deep research judge pick the best *implemented* idea.

---

## System Overview

![System Overview](system-overview.drawio.svg)

The architecture is split into four independent services:

| Folder | Stack | Role |
|--------|-------|------|
| `api/` | Bun + TypeScript | Orchestrator — HTTP/WS server, task lifecycle, provider integrations |
| `worker/` | Python + Modal | Implementation — isolated sandboxes running Claude Code CLI |
| `eval/` | TypeScript + Claude Agent SDK | Evaluation — multi-judge scoring with browser-based testing |
| `web/` | Next.js + React + @xyflow/react | Frontend — real-time pipeline visualization and results dashboard |

---

## How It Works

1. **Task Submission** — `POST /v1.0/task` with a problem description and N worker profiles
2. **Setup** — Orchestrator creates a GitHub repo, N branches, and N Vercel deployments
3. **Spawn** — N Modal sandboxes boot (Ubuntu + Node + Bun + Claude Code CLI)
4. **Implement** — Each Claude agent autonomously writes code, using `treemux-report` to:
   - `start` — declare its idea and step plan
   - `step` — commit, push, and report progress after each step
   - `done` — write PITCH.md and finalize
5. **Real-Time UI** — Workers POST callbacks → API → WebSocket → React dashboard updates live
6. **Evaluation** — When all workers finish, the eval service judges every deployment with AI agents + real browsers
7. **Results** — Rankings, composite scores, and detailed feedback streamed to the frontend sidebar

### Final Outputs (per worker)

| Output           | Description                          |
| ---------------- | ------------------------------------ |
| GitHub Branch    | Full source code on its own branch   |
| Vercel URL       | Live deployed demo at a unique URL   |
| PITCH.md         | Auto-generated project pitch         |
| Evaluation Score | Feasibility, novelty, demo readiness |

---

## Provider Deep Dive

Treemux integrates with 8 external providers. Here's exactly how each one is used.

### 1. Modal — Cloud Sandboxes

**Used by:** `worker/`, `eval/`

Modal provides isolated cloud sandboxes where AI agents execute code without risk to the host system.

- **Implementation workers** (`worker/implementation_worker.py`): Each worker spawns a Modal sandbox with a custom image (Ubuntu + Node.js + Bun + Claude Code CLI). The API triggers the worker via Modal's HTTP endpoint. Inside the sandbox, `runner.py` sets up git, runs Claude Code CLI, and pushes code to GitHub on every step.
- **Evaluation sandboxes** (`eval/src/modal/client.ts`): The eval system can optionally dispatch judge agents to Modal sandboxes for isolated browser-based evaluation, preventing resource contention when running many judges in parallel.
- **Configuration**: `MODAL_IMPLEMENTATION_WORKER_URL` env var points to the deployed Modal function endpoint.

### 2. GitHub — Version Control

**Used by:** `api/`, `worker/`

GitHub stores all generated code and enables Vercel auto-deployments via branch tracking.

- **Repo creation** (`api/src/github.ts`): The API creates a new public GitHub repo per task (e.g. `treemux-<nanoid>`) using the REST API with `auto_init: true`.
- **Branch creation** (`api/src/github.ts`): N branches are created (one per worker, e.g. `treemux-worker-<jobId>`), each forked from the default branch's HEAD SHA. Includes retry logic for the initial commit race condition.
- **Git push from sandbox** (`worker/runner.py`): Inside the Modal sandbox, the worker configures git with the provided `GITHUB_TOKEN`, `GIT_USER_NAME`, and `GIT_USER_EMAIL`, then commits and force-pushes after every implementation step.
- **Authentication**: `GITHUB_TOKEN` (Personal Access Token with `repo` scope).

### 3. Vercel — Deployment Platform

**Used by:** `api/`

Vercel provides instant deployments for every worker branch, giving each implementation a live URL.

- **Project + Deployment creation** (`api/src/vercel.ts`): Uses the `@vercel/sdk` to create a deployment linked to the GitHub repo + branch. Framework is set to Next.js with `npm run build` / `npm install`.
- **Auto-deploy on push**: Vercel watches each branch — every `git push` from the worker triggers a new build automatically.
- **Deployment protection** (`api/src/vercel.ts`): Disables SSO/password protection so all deployments are publicly accessible for evaluation.
- **Environment variables** (`api/src/vercel.ts`): Injects `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, and `OPENROUTER_API_KEY` into each Vercel project so deployed apps can call AI services at runtime.
- **Authentication**: `VERCEL_TOKEN` (Vercel API token).

### 4. Anthropic (Claude) — AI Code Generation & Evaluation

**Used by:** `worker/`, `eval/`

Claude powers both the code-writing agents and the evaluation judges.

- **Claude Code CLI** (`worker/runner.py`): The implementation sandbox runs `claude` (the Claude Code CLI) which autonomously writes, edits, and commits code. It receives the task idea, worker profile, temperature, and risk level as context. Authenticated via `CLAUDE_CODE_OAUTH_TOKEN`.
- **Claude Agent SDK** (`eval/src/agents/`): The evaluation system uses the Claude Agent SDK (`@anthropic-ai/claude-agent-sdk`) for three agent types:
  - **Planner agent** — generates a judging plan with scoring categories and judge personas
  - **Judge agents** — score each project on defined criteria (text-only or browser-based)
  - **Report writer** — produces a rankings summary from all judge results
- **Models used**: `claude-sonnet-4-5-20250929` for planning/research/judging, `claude-opus-4-6` for report writing.
- **Authentication**: `ANTHROPIC_API_KEY` for the Agent SDK, `CLAUDE_CODE_OAUTH_TOKEN` for the CLI.

### 5. OpenRouter — AI API Gateway

**Used by:** `api/`

OpenRouter provides access to multiple LLM providers through a single API.

- **Ideation** (`api/src/ideation.ts`): Calls OpenRouter with `google/gemma-2-9b-it` to generate structured ideas from the task description + worker profiles. Returns a JSON array with `idea`, `risk` (0-100), and `temperature` (0-100) per worker. Currently the pipeline uses synthetic ideation (passing the task directly), but the OpenRouter infrastructure is fully wired.
- **Pitch generation**: The worker sandbox has access to `OPENROUTER_API_KEY` to generate compelling elevator pitches for the evaluator.
- **Authentication**: `OPENROUTER_API_KEY`.

### 6. OpenAI — Alternative AI Provider

**Used by:** `worker/` (sandbox environment)

OpenAI GPT models are available as an alternative AI provider in the sandbox.

- **Environment injection**: The API injects `OPENAI_API_KEY` into both the Modal sandbox and the Vercel deployment environment, allowing worker-built apps to use GPT models at runtime.
- **Authentication**: `OPENAI_API_KEY`.

### 7. BrowserBase (Stagehand) — Browser Automation

**Used by:** `eval/`

BrowserBase provides cloud browser sessions for evaluating deployed web applications.

- **Stagehand SDK** (`eval/src/tools/stagehand.ts`): The evaluation system uses `@browserbasehq/stagehand` to launch browser sessions that navigate to each deployed project URL.
- **Session pooling** (`eval/src/tools/stagehand-pool.ts`): A pool manager maintains concurrent browse

[README truncated for size]

## Detected evidence (automated analysis)

Indexed codebase: 201 recognized source files, 875 KB.
- CSS (language) — detected in the code
- FastAPI (technology) — detected in the code
- Next.js (technology) — detected in the code
- Python (language) — detected in the code
- React (technology) — detected in the code
- Tailwind CSS (technology) — detected in the code
- TypeScript (language) — detected in the code
- Vercel (technology) — claimed on Devpost, not found in the code
- AI coding agent: Claude Code — evidence: commit authorship or trailers
- AI coding agent: Codex — evidence: config files committed to the repository

## Codebase structure (from repository index)

### Files (120 of 220)

```
.gitignore
api/.env.example
api/assets/personas/johnny.md
api/assets/personas/mrv.md
api/assets/tasks/treehacks.md
api/bun.lock
api/package.json
api/src/config.ts
api/src/eval-bridge.ts
api/src/github.ts
api/src/ideation.ts
api/src/implementation-spawn.ts
api/src/index.ts
api/src/logger.ts
api/src/observability.ts
api/src/server.ts
api/src/task.ts
api/src/types.ts
api/src/vercel.ts
api/tsconfig.json
eval/Dockerfile
eval/package.json
eval/scripts/deploy.ts
eval/src/agents/judge.ts
eval/src/agents/planner.ts
eval/src/agents/report-writer.ts
eval/src/agents/research.ts
eval/src/api.ts
eval/src/cli.ts
eval/src/config.ts
eval/src/eval/callback.ts
eval/src/eval/protocol.ts
eval/src/eval/schemas.ts
eval/src/eval/server.ts
eval/src/index.ts
eval/src/modal/client.ts
eval/src/modal/delivery.ts
eval/src/modal/hmac.ts
eval/src/modal/semaphore.ts
eval/src/modal/webhook-server.ts
eval/src/modal/webhook-types.ts
eval/src/orchestrator-modal.ts
eval/src/orchestrator.ts
eval/src/sandbox/judge.ts
eval/src/sandbox/planner.ts
eval/src/sandbox/report.ts
eval/src/sandbox/research.ts
eval/src/sandbox/utils.ts
eval/src/scoring/compute.ts
eval/src/scoring/normalize.ts
eval/src/scoring/outliers.ts
eval/src/tools/stagehand-pool.ts
eval/src/tools/stagehand.ts
eval/src/types.ts
eval/tests/agents/judge-maxturns.test.ts
eval/tests/agents/judge-prompt.test.ts
eval/tests/agents/judge-session.test.ts
eval/tests/agents/planner-prompt.test.ts
eval/tests/config.test.ts
eval/tests/eval/callback.test.ts
eval/tests/eval/protocol.test.ts
eval/tests/eval/schemas.test.ts
eval/tests/eval/server.test.ts
eval/tests/modal/client.test.ts
eval/tests/modal/delivery.test.ts
eval/tests/modal/hmac.test.ts
eval/tests/modal/integration.test.ts
eval/tests/modal/semaphore.test.ts
eval/tests/modal/webhook-server.test.ts
eval/tests/orchestrator-concurrency.test.ts
eval/tests/sandbox/utils.test.ts
eval/tests/scoring/compute.test.ts
eval/tests/scoring/normalize.test.ts
eval/tests/scoring/outliers.test.ts
eval/tests/tools/stagehand-pool.test.ts
eval/tsconfig.json
eval/vitest.config.ts
generations.md
README.md
system-overview.drawio
web/.env.example
web/app/api/events/route.ts
web/app/api/log/deployment/route.ts
web/app/api/log/push/route.ts
web/app/api/log/start/route.ts
web/app/api/log/step/route.ts
web/app/create/page.tsx
web/app/globals.css
web/app/judges/page.tsx
web/app/layout.tsx
web/app/live/page.tsx
web/app/page.tsx
web/bun.lock
web/components/BuildFlow.tsx
web/components/ControlBar.tsx
web/components/DotGrid.tsx
web/components/EventFeed.tsx
web/components/flow/BuildNode.tsx
web/components/flow/JudgingNode.tsx
web/components/flow/PreviewNode.tsx
web/components/flow/StartNode.tsx
web/components/JudgesScreen.tsx
web/components/LandingPage.tsx
web/components/LiveBuildRoom.tsx
web/components/MetricsStrip.tsx
web/components/MilestoneTimeline.tsx
web/components/MobileTeamSwitcher.tsx
web/components/pipeline/DeployNode.tsx
web/components/pipeline/EvalSidebar.tsx
web/components/pipeline/JudgeNode.tsx
web/components/pipeline/PipelineFlow.tsx
web/components/pipeline/PitchNode.tsx
web/components/pipeline/ProfileNode.tsx
web/components/pipeline/TaskNode.tsx
web/components/pipeline/WaitingNode.tsx
web/components/pipeline/WorkerNode.tsx
web/components/TeamMonitor.tsx
web/contexts/SimulationContext.tsx
web/data/commentary.ts
web/data/teams.ts
[100 more files omitted for size]
```

### Dependencies

- api/package.json: @types/bun@latest, @vercel/sdk@^1.19.1, chalk@^5.6.2, nanoid@^5.1.6, typescript@^5
- eval/package.json: @anthropic-ai/claude-agent-sdk@^0.2.42, @browserbasehq/stagehand@^3.0.8, @types/node@^25.2.3, @types/ws@^8.18.0, commander@^14.0.3, csv-parse@^6.1.0, dotenv@^17.3.1, modal@^0.6.2, tsx@^4.21.0, typescript@^5.9.3, vitest@^4.0.18, ws@^8.18.0, zod@^4.3.6
- web/package.json: @tailwindcss/postcss@^4.1.18, @types/node@^25.2.3, @types/react@^19.2.14, @types/react-dom@^19.2.3, @vercel/analytics@^1.6.1, @vercel/speed-insights@^1.3.1, @xyflow/react@^12.10.0, framer-motion@^12.34.0, lucide-react@^0.564.0, next@^15.3.0, react@^19.2.0, react-dom@^19.2.0, tailwindcss@^4.1.18, typescript@^5.9.3
- worker/pyproject.toml: fastapi@>=0.129.0, modal@>=1.3.3

### Recent commits (newest first)

- docs: readme
- feat: improve landing page
- refatctor: improve implementation
- feat: integrate eval
- feat: implement eval
- merge eval
- feat: add claude code oauth
- Generations
- Fix typos and enhance clarity in README
- Update README for clarity and typo corrections
- docs: improve readme
- Revise README for clarity and detail
- Add files via upload
- feat: improve create page
- update worker
- feat(api): add cors
- fix merge conflict
- feat(api): observability integration
- feat: add taskid
- feat: improve observability

## Key source files (fetched from GitHub, selected and truncated for size)

### generations.md

```markdown
## Nexus

url: https://treemux-khueopstbpoeyrjchbbpf-7xuwtbn2k-vjxs.vercel.app
```json
{"taskId": "tawvnppqcpiploobsagpz", "jobId": "pmwcoqikaxnzfufwlnolv", "url": "https://treemux-khueopstbpoeyrjchbbpf-7xuwtbn2k-vjxs.vercel.app"}
{"taskId": "tawvnppqcpiploobsagpz", "jobId": "pmwcoqikaxnzfufwlnolv", "repoUrl": "https://github.com/vjxventures/treemux-khueopstbpoeyrjchbbpf.git", "idea": "Nexus: AI-native knowledge OS reimagining Dropbox for 2026 \u2014 upload docs, get AI-powered organization, semantic search, and multi-turn conversational agent across your entire knowledge base", "pitch": "# Nexus \u2014 AI-Native Knowledge OS\n\n**What if Dropbox were founded in 2026?** Instead of dumb file sync, Nexus is an AI-native knowledge workspace where your documents aren't just stored \u2014 they're *understood*. Upload any document (PDF, DOCX, Markdown, CSV, JSON) and Nexus instantly indexes it with vector embeddings, extracts intelligent tags, and makes it queryable through natural conversation with Claude.\n\nWhat makes Nexus unique is its seamless RAG pipeline: every document is embedded on upload using OpenAI's text-embedding-3-small, enabling semantic search that finds relevant context by meaning rather than keywords. When you chat with Nexus, it retrieves the most relevant documents via cosine similarity, injects them as context, and Claude delivers precise, citation-backed answers across your entire knowledge base.\n\nThe result is a product that turns passive file storage into an active knowledge partner \u2014 auto-organizing documents into smart collections, generating one-click AI summaries, and letting you ask questions like \"what are the key themes across all my documents?\" Built with Next.js, Vercel AI SDK, and a refined dark editorial UI, Nexus demonstrates how AI transforms every layer of a product from storage utility to intelligence platform.", "success": true, "error": null, "branch": "treemux-worker-pmwcoqikaxnzfufwlnolv"}
```

## PulseAid

https://treemux-khueopstbpoeyrjchbbpf-jb8uo90j2-vjxs.vercel.app
```json
{"taskId": "ivmxvyzprbeknmxjcalcj", "jobId": "coupebzlpkkhwkvkxmjme", "repoUrl": "https://github.com/vjxventures/treemux-ptqehisuulfqodbhqyyur.git", "idea": "PulseAid: AI-native benefits navigator reimagining Zenefits (YC W13) with multi-agent Claude architecture that helps employees understand, optimize, and use their health benefits through natural conversation", "pitch": "# PulseAid \u2014 AI-Native Benefits Navigator\n\n**Over $750 billion in employee health benefits go unused every year** because plan documents are confusing, jargon is impenetrable, and nobody has time to figure out what's actually covered. PulseAid is an AI-native reimagining of Zenefits (YC W13) that flips the model: instead of helping HR manage benefits administration, it gives every employee a personal AI benefits navigator that speaks plain language. Ask PulseAid \"my kid broke his arm \u2014 what do I do?\" and it instantly looks up your specific 
[truncated — 8551 more characters]
```

### api/assets/personas/johnny.md

```markdown
hey everyone, this is johnny, 4th year gt ai + robotics, 4th and final year at treehacks, here are some interesting things about me

got on the news recently for clawd bot
makes instagram content and got viral on insta and tiktok (on stanford campus lol)
slept on the roof of my own hacker house and lived in weworks for a month straight
rides electric unicycles around the us
yapped to elon musk a while back

```

### worker/pyproject.toml

```
[project]
name = "worker"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "fastapi>=0.129.0",
    "modal>=1.3.3",
]

```

### eval/Dockerfile

```
FROM oven/bun:1 AS base

WORKDIR /app

# Install deps
COPY package.json bun.lock* ./
RUN bun install --frozen-lockfile 2>/dev/null || bun install

# Copy source
COPY tsconfig.json ./
COPY src/ ./src/

ENV NODE_ENV=production

EXPOSE 3000

CMD ["bun", "run", "src/eval/server.ts"]

```

### api/package.json

```
{
  "name": "@treemux/api",
  "type": "module",
  "scripts": {
    "start": "bun run src/server.ts",
    "dev": "bun run src/index.ts"
  },
  "devDependencies": {
    "@types/bun": "latest"
  },
  "peerDependencies": {
    "typescript": "^5"
  },
  "dependencies": {
    "@vercel/sdk": "^1.19.1",
    "chalk": "^5.6.2",
    "nanoid": "^5.1.6"
  }
}

```

### web/package.json

```
{
  "name": "treehacks26-temp",
  "private": true,
  "version": "0.0.0",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@vercel/analytics": "^1.6.1",
    "@vercel/speed-insights": "^1.3.1",
    "@xyflow/react": "^12.10.0",
    "framer-motion": "^12.34.0",
    "lucide-react": "^0.564.0",
    "next": "^15.3.0",
    "react": "^19.2.0",
    "react-dom": "^19.2.0"
  },
  "devDependencies": {
    "@tailwindcss/postcss": "^4.1.18",
    "@types/node": "^25.2.3",
    "@types/react": "^19.2.14",
    "@types/react-dom": "^19.2.3",
    "tailwindcss": "^4.1.18",
    "typescript": "^5.9.3"
  }
}

```

### eval/package.json

```
{
  "name": "eval-agent",
  "version": "1.0.0",
  "description": "AI evaluation system using Claude Agent SDK and BrowserBase Stagehand",
  "main": "dist/index.js",
  "type": "module",
  "scripts": {
    "build": "tsc",
    "test": "vitest run",
    "test:watch": "vitest",
    "cli": "tsx src/cli.ts",
    "deploy": "tsx scripts/deploy.ts",
    "server": "tsx src/eval/server.ts"
  },
  "bin": {
    "eval-agent": "./dist/cli.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@anthropic-ai/claude-agent-sdk": "^0.2.42",
    "@browserbasehq/stagehand": "^3.0.8",
    "commander": "^14.0.3",
    "csv-parse": "^6.1.0",
    "dotenv": "^17.3.1",
    "modal": "^0.6.2",
    "ws": "^8.18.0",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@types/node": "^25.2.3",
    "@types/ws": "^8.18.0",
    "tsx": "^4.21.0",
    "typescript": "^5.9.3",
    "vitest": "^4.0.18"
  }
}

```

### web/app/page.tsx

```typescript
'use client'

import { useRouter } from 'next/navigation'
import LandingPage from '../components/LandingPage'

export default function Home() {
  const router = useRouter()

  return (
    <LandingPage
      onStart={() => router.push('/create')}
      onCreateTask={() => router.push('/create')}
    />
  )
}

```

### eval/src/index.ts

```typescript
export { createEvaluator } from "./api.js";
export type { EvaluatorConfig, EvaluateOptions } from "./api.js";
export { orchestrateModal } from "./orchestrator-modal.js";
export type {
  Config,
  Project,
  JudgeSpec,
  JudgeResult,
  JudgingPlan,
  ProjectScores,
  EvaluationResults,
  OutlierAnalysis,
  ProgressEvent,
} from "./types.js";

```

### web/app/layout.tsx

```typescript
import type { Metadata } from 'next'
import DotGrid from '../components/DotGrid'
import './globals.css'
import { SpeedInsights } from '@vercel/speed-insights/next';
import { Analytics } from '@vercel/analytics/next';

export const metadata: Metadata = {
  title: 'Treemux',
  description: 'Treemux simulates AI teams from idea to deployment — generating products, pitches, and metrics in a sandbox.',
}

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <head>
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
        <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
      </head>
      <body>
        <DotGrid />
        <SpeedInsights />
        <Analytics />
        {children}
      </body>
    </html>
  )
}

```

[192 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]