Install Prompt Royale

Two steps: add it to your coding agent, then ask for a battle. It finds free models on its own. Battles run locally, and nothing is published unless you say so.

Add it to your agent

Terminal
/plugin marketplace add ionamol/prompt-royale
/plugin install prompt-royale@prompt-royale

Run both commands in Claude Code.

Ask for a battle

Say this to your agent
Battle free models on a one-page landing for a coffee roaster.

Your agent turns that into one brief, runs it on several models at once, and opens a blind vote in the browser. The pages sit side by side without their model names. Pick the one you like, then learn who built it.

After the vote, keep the winner in your project, publish the battle for others to see, or do neither. If the agent found no free models, it can connect OpenRouter: approve once in the browser and ask again.

Publishing needs an account

Run royale_login in your agent, then type the code it shows on the connect page. A connected agent can publish battles as you and nothing else. Revoke it whenever you like.

Where the models come from

OpenRouter
Free models after one browser sign-in: your agent offers to connect it the first time you run a battle. The free tier allows 50 requests a day, and a battle of six uses six of them.
A local gateway
OmniRoute on port 20128 or freellmapi on 3001 join on their own while they are running, and bring their own free providers with them.
Ollama and LM Studio
Any model you have pulled, used while they are running. Nothing leaves your machine.
opencode zen
Its free models join when OPENCODE_API_KEY is set. The key comes from an opencode account with billing details on file.
Claude Code
When you pick it. It runs sandboxed in an empty folder and can only write its page.

Contestants never read your files: models only receive the brief, and Claude Code runs restricted to writing its own page in an empty folder.

Tools

royale_check
Shows the contestants found on your machine and your login.
royale_connect
Connects free OpenRouter models in the browser.
royale_battle
Runs one brief against several models. Returns labels only.
royale_review
Opens the blind king-of-the-hill vote in your browser.
royale_result
Shows progress, then the models once you decide to publish or keep it private.
royale_apply
Copies the winner into your project.
royale_login
Connects your agent to your Prompt Royale account.
royale_publish
Previews, then publishes a voted battle.
royale_rematch
Runs a public battle's brief against your own free models.

Optional: your own API keys

To add paid models, list them in ~/.prompt-royale/config.json. The file names the environment variable that holds each key, never the key itself. Paid models only compete when you name them in a battle.

~/.prompt-royale/config.json
{
  "contestants": [
    { "id": "openai", "type": "byok", "baseUrl": "https://api.openai.com/v1", "apiKeyEnv": "OPENAI_API_KEY", "models": ["gpt-image-1"] },
    { "id": "anthropic", "type": "byok", "baseUrl": "https://api.anthropic.com/v1", "apiKeyEnv": "ANTHROPIC_API_KEY", "models": ["claude-opus-5"] }
  ],
  "defaults": { "count": 4, "timeoutMs": 600000 }
}

Agents without skills

Add these rules to your AGENTS.md so any agent uses the tools safely.

AGENTS.md
## Prompt Royale
- Use prompt-royale tools when asked to compare models or battle a prompt.
- Write a self-contained prompt. Never include project code, file contents, env values or secrets.
- Run royale_battle; if it says running, check royale_result until it is ready. Then royale_review and ask the user to vote.
- After the vote, ask the user to publish (royale_publish preview, then confirm with its confirmToken) or keep it private (royale_result with keepPrivate: true). Models are revealed only after that choice.
- Never guess which model made which label before royale_result reveals it.