For candidates

The interview is real work now.

You get a real codebase, a real budget, and a real task — and you work the way you work every day: your tools, your machine, your judgment. Setup takes about two minutes.

Step 01

What's in your invite

The hiring team sends you a link with one-time credentials. You'll need these four things:

Git remote URL

https://tasted.dev/git/<session>

Clone this to get the task repo.

Git credentials

A username and password for the remote. They only work for your session.

API key

One-time key for the model gateway. It meters your token budget.

Model aliases

eco, standard, premium — use any as your model name. Real model ids (like claude-sonnet-5) route to the same configured model.

Step 02

Clone the repo

Replace USERNAME and PASSWORD with your session credentials. The password is long — paste it carefully.

git clone https://tasted.dev/git/{session_id}

# git will prompt: Username -> {session_id}, Password -> your git token
# save them so pushes don't re-prompt:
git config --global credential.helper store

History on the remote is immutable — force-pushes are rejected — so commit continuously as you work. Every push runs the task's checks.

If you're asked to configure anything else

You shouldn't be. The repo, the budget, the models, and the checks are all configured for you. If a credential was lost, ask the hiring team to rotate it — they can generate fresh ones in seconds.

Step 03

Point your agent at the session

Choose the tool you already use. Both protocols are supported by the same session key.

Claude Code

Set these environment variables, then start claude in the repo directory. The session key goes in ANTHROPIC_AUTH_TOKEN; the model is one of your aliases.

# ~/.bashrc, ~/.zshrc, or the shell you use for this session
export ANTHROPIC_BASE_URL=https://tasted.dev
export ANTHROPIC_AUTH_TOKEN=sk-taste-…
export ANTHROPIC_MODEL=claude-sonnet-5

# gateway model discovery: lets Claude Code see the session's models
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1

# then, in the repo:
claude

Verify before starting: claude --version should print a version. Headless runs work too: claude -p "…" --dangerously-skip-permissions. Use a real model name like claude-sonnet-5 or an alias like standard — both route to the same configured model.

OpenCode

Create an opencode.json in the repo root pointing at the session. The key stays out of the file, read from TASTE_API_KEY.

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "taste": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Taste session",
      "options": {
        "baseURL": "https://tasted.dev/v1",
        "apiKey": "{env:TASTE_API_KEY}"
      },
      "models": {
        "eco": { "name": "Eco" },
        "standard": { "name": "Standard" }
      }
    }
  }
}

export TASTE_API_KEY=sk-taste-…
opencode run --model taste/standard "…"
# or just: opencode

Any OpenAI- or Anthropic-compatible tool

Cursor, Copilot, custom agents, SDKs — point the base URL at https://tasted.dev/v1 with your session key and pick an alias as the model. The same session works with both protocol styles:

# OpenAI style (base URL ends in /v1)
export OPENAI_BASE_URL=https://tasted.dev/v1
export OPENAI_API_KEY=sk-taste-…
export OPENAI_MODEL=eco
# Anthropic style (base URL is the root — Claude Code appends /v1)
export ANTHROPIC_BASE_URL=https://tasted.dev
export ANTHROPIC_AUTH_TOKEN=sk-taste-…
export ANTHROPIC_MODEL=standard
Step 04

Verify, then work

A 10-second connectivity check

# your budget, with your key:
curl https://tasted.dev/v1/budget \
  -H "Authorization: Bearer sk-taste-…"

You should get JSON with your remaining budget. Then ask your agent something simple in the repo — if it answers, you're live.

Troubleshooting

ErrorWhat it means
401 / authentication requiredWrong or rotated key — ask for a fresh one.
403 / forbiddenA capability is disabled for your session's plan (e.g. streaming).
429 / budget exhaustedThe token budget is spent. The session is complete — push your work.
400 / model not foundThe alias isn't in your session. Use eco, standard, or premium.
"issue with the selected model" in Claude CodeEnable gateway model discovery: export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1.
non-fast-forward on pushHistory can't be rewritten. Commit on top instead of force-pushing.
Fairness

Same task, same models, same budget — for everyone.

Every candidate in a cohort gets identical conditions. Scores are calibrated per level, and every result carries an audit trail. The evaluators see your work artifact — not your camera feed, not your keystrokes.

Your environment stays yours

Taste observes exactly two things: model traffic through the gateway and every commit you push. Nothing else.

No tool you haven't chosen

If you don't use AI agents, the task is completable without them — the budget just goes further.

History you can't rewrite — and don't need to

Force-pushes are rejected so the timeline is honest. Dead ends and recovery are part of engineering — they're part of your score.

Treat it like a normal day of work.

Plan before you type, commit as you go, and let the dead ends show — recovery is signal, not noise. The engineers reviewing your session are looking for judgment, and judgment is exactly what your everyday workflow already produces.

Setup takes ~2 minutes · the work is the interview