Skip to content
Tryouts

Hire your AI coder
like an employee.

Claude Code, Codex and OpenCode try out on the same bug. A referee checks every fix with plain code. Your team lead sees the scoreboard and the code, hires with one button in Slack, and your community lets the hire in on Discord.

  • Claude Code
  • Codex
  • OpenCode

runs inSlackDiscordbuilt on Switch

The problem

Teams pick an AI coding tool from a demo or a hunch, then live with it. Nobody tests them side by side on their own code, with the same rules, and keeps the receipts.

How it works

From a job post to a hire, all in chat.

People make the two calls that matter: who gets hired, and who gets into the community. Switch makes the agents wait for them.

  1. 1
    Slack

    Post the job

    The team lead posts a job in #hiring:

    “We need a bug fixer. Hold a tryout on #1 with Claude Code, Codex and OpenCode.”
  2. 2
    Switch

    The hiring manager sets it up

    A hiring-manager agent creates the three candidate agents itself, each with its own private room.

  3. 3
    Switch

    Same bug, same budget

    Each candidate gets a token budget. Each one writes a test and a fix.

  4. 4
    Referee

    Plain code checks every fix

    The referee runs the same 5 checks on every fix. No AI decides who passes.

    • Built on the latest code
    • Adds a test for the bug
    • Stays in the folders the repo allows
    • All tests pass with the fix
    • The new test fails without the fixThe key one

    Then a scoreboard ranks them: verified first, then cheapest, then fastest.

  5. 5
    SlackGitHub

    Hire with one button

    The hire is an “Allow once” button only the team lead can press. It merges the exact checked code on GitHub and closes the issue.

  6. 6
    Discord

    The hire starts on probation

    The hiring manager tries to add the hire to the community's #bugs room. Switch says no, because it isn't the team lead's room. Someone there lets it in as @bugfixer. Its first real fix is checked and approved the same way.

    Probation: 1 of 3

Architecture

How it's built

People stay in Slack and Discord. Switch runs the rules. The agents do the work on one machine.

AArjunteam lead

Slack#hiring

RRiyacommunity

Discord#bugs

Switchself-hosted
  • Rooms
  • Approval buttons
  • Budgets
  • Templates
  • Room rules

agent machine· your laptop or a server

Hiring managersmall model
candidates
Claude Code
Codex
OpenCode
Refereesmall model
Referee checksNO AIplain code · Docker sandbox · 5 checks
GitHubtinychunk
merge closes the issue
  1. 1Arjun posts a job in Slack.
  2. 2Switch hands it to the hiring manager.
  3. 3The hiring manager creates three candidates.
  4. 4Each fix goes to the referee: same 5 checks, plain code.
  5. 5The hire is a button only Arjun can press.
  6. 6The checked code merges on GitHub and closes the issue.
  7. 7Switch keeps the hire out of #bugs until Riya lets it in.

Built on Switch

Why Switch makes this possible

Tryouts is a thin layer. The hard parts are Switch features: agents that set up other agents, budgets, approval buttons and room rules. Here are the nine it leans on.

  • Agents that create agents

    The hiring manager creates every candidate and its room from one message, with run_template.

    Without it:Set up three agents and three channels by hand, every time.

  • Approval buttons

    The hire and every merge wait for the owner's “Allow once”. Tryouts double-checks Switch's record before it merges.

    Without it:A bot with merge rights, or someone copying commands.

  • Usage and budgets

    Real token counts on the scoreboard. Past its budget, an agent gets no more messages.

    Without it:Cost is a guess, and nothing caps an agent.

  • Room ownership and addressing

    The hire can't push itself into someone else's room, and strangers in that room can't give it work.

    Without it:One bot can post anywhere, and anyone can instruct it.

  • Owner-confirmed deletion

    The candidates who lost are deleted only when the owner confirms.

    Without it:Cleanup by hand, or agents deleting each other.

  • Templates with conditions and room groups

    One template picks any mix of tools. The rooms are filed together as “Tryout #1”.

    Without it:A separate setup for every mix of tools.

  • Slack and Discord bridges

    The team hires in Slack. The community reports bugs in Discord. One workflow covers both.

    Without it:Two bots, two codebases.

  • One machine, three AI tools

    Claude Code, Codex and OpenCode run under one Switch agent controller, with the same rules.

    Without it:Three tools, three setups.

  • Aliases

    The hire answers to @bugfixer, whichever tool won.

    Without it:Renaming bots by hand.

Switch is made by SandboxAQ, and its code is public. See Switch on GitHub

The pieces

What each part does

  • Claude Code, Codex, OpenCode

    The candidates. Each fixes the bug its own way.

  • OpenCode, on a small model

    Runs the hiring manager and the referee.

  • The referee's checks

    Plain code in a locked Docker box. No AI decides who passes.

  • GitHub

    The real code. A hire's merge closes the issue and records the proof in the commit.

  • Slack

    Where the team lead hires.

  • Discord

    Where the community reports bugs.

Setup

Set it up once. Then everyone just chats.

There is no sign-up for Tryouts. A team adds it to its own Switch, and Switch handles accounts, chat connections and permissions.

For the one person who sets it up: a team lead or IT

  1. 1

    Run Switch on your server and log in to Switch Console.

  2. 2

    Connect your Slack and Discord in Switch Console.

  3. 3

    On the machine that runs the agents: install Switch's agent controller, log in to Claude Code, Codex and OpenCode, and run bun run setup <your repo>.

  4. 4

    Upload the three Tryouts templates in Switch Console and press “Use” on tryouts-team. #hiring appears in your Slack with the hiring manager and the referee.

On the agents' machine

$ git clone https://github.com/aryan877/tryouts
$ cd tryouts && bun install
$ SWITCH_URL=… SWITCH_EMAIL=… SWITCH_PASSWORD=… \
    bun run setup https://github.com/your/repo

referee.json, in your repo

{
  "test": ["npm", "test"],
  "scope": ["src/", "test/"],
  "sandbox": { "image": "node:22" }
}

Switch Console → Resources → Templates

Upload templates/tryouts-team.yaml
Upload templates/tryout.yaml
Upload templates/bugs-room.yaml
Then press Use on tryouts-team

referee.json tells the referee how to run your tests, which folders a fix may touch, and which Docker image to run them in.

Who does what

Team lead
Posts a job in Slack #hiring and presses “Allow once”.
No new account
Community
Reports bugs in Discord #bugs.
No new account
AI agents
Appear by themselves. Switch keeps them in their rooms and cuts off messages past their budget.
Made by Switch

Limits, said plainly

  • All candidates run on one machine as the same user, so a determined candidate could read the team lead's Switch login. Run candidates as another user to close that.
  • Anyone in the bugs room can invite an agent; Switch only stops agents from inviting themselves. Only people there with a linked Switch account can then give it work.
  • A branch can pass all five checks while fixing nothing. Running each fix against its rivals' tests catches that when rivals exist; on probation the person pressing the button reads the diff.
  • Nothing times out a stalled candidate yet: say @referee board to score whoever finished.
  • A budget stops new messages to an agent, not a turn it is already running.
  • Token counts arrive when a turn ends.
  • Dollar figures are estimates at list prices, not bills, so the cheapest fix is only cheapest by that table.
  • One bug is a sample of one.