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.
- 1Slack
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.”
- 2Switch
The hiring manager sets it up
A hiring-manager agent creates the three candidate agents itself, each with its own private room.
- 3Switch
Same bug, same budget
Each candidate gets a token budget. Each one writes a test and a fix.
- 4Referee
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.
- 5SlackGitHub
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.
- 6Discord
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.
Slack#hiring
Discord#bugs
- Rooms
- Approval buttons
- Budgets
- Templates
- Room rules
agent machine· your laptop or a server
merge closes the issue
- 1Arjun posts a job in Slack.
- 2Switch hands it to the hiring manager.
- 3The hiring manager creates three candidates.
- 4Each fix goes to the referee: same 5 checks, plain code.
- 5The hire is a button only Arjun can press.
- 6The checked code merges on GitHub and closes the issue.
- 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
Run Switch on your server and log in to Switch Console.
- 2
Connect your Slack and Discord in Switch Console.
- 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
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.