One prompt. Every model. Pick the winner.

System prompt (optional, sent to every contender)
Contenders

Run history

Runs live only in this browser (localStorage). Crown winners to feed the leaderboard; open a run to re-read every output and its preview.

Leaderboard

Wins are the runs where you crowned the model. Latency and output size are averaged over every appearance.

Provider keys

Keys are stored only in this browser and sent only to the matching provider's official API over HTTPS. Nothing ever touches a juniper-0 server. Generated apps run in sandboxed frames that cannot read them.

Model roster

Model IDs change fast — add any ID a provider ships. New entries appear as contender chips in the arena.

Local models: any OpenAI-compatible server works — Ollama (http://localhost:11434/v1), LM Studio (http://localhost:1234/v1), vLLM, llama.cpp. Enable CORS on the server first (Ollama: OLLAMA_ORIGINS=https://analyze.juniper-0.com). From this HTTPS site browsers can only reach localhost/127.0.0.1; to use a model server on another LAN box, run analyze locally with npm run dev.

Pricing ($ per 1M tokens)

Used for the per-run cost estimate. Prefilled with July 2026 list prices where known — edit anytime, they drift.

Publishing a winner

Every pane can Download app (the extracted build as a self-contained app.html) and every finished run can Export showcase — one file with all contenders, previews, metrics and the crowned winner.

  1. Download the app.html / showcase file.
  2. Commit it under deployments/<name>/index.html in Project_Juniper.
  3. Ask Claude to publish it: “deploy deployments/<name> as <name>.juniper-0.com” — the same Hostinger flow that shipped this site (subdomain + archive deploy) does the rest.

This site itself is static — no backend, no analytics, no cookies.

Data