tamesu

A tamesu seal character shaking hands with a chat robot over a ticked checklist

tamesu (試す, “to try, to test”) is an open-source, agentic testing framework and CLI written in Go. You describe a test the way you would brief a colleague: a persona, a goal, and what a good outcome looks like. A simulated user then talks to your agent or drives your web app, and deterministic checks and LLM judges grade the result. Your agents, tested like users would.

tamesu init, validate, list and doctor in a terminal

Quick start

brew install xavidop/tap/tamesu        # macOS; Windows: scoop install tamesu; Linux: a .deb, .rpm or .apk
tamesu init                            # tamesu.yaml + examples/support-agent.yaml
tamesu validate                        # file:line errors for anything wrong
tamesu doctor                          # resolve every secret through mamori and check the setup
tamesu run                             # run the suites: transcripts, metrics, junit.xml, exit code

The Quick start walks through a first project.

What you can do

TaskWhere to read
Write a suite: targets, personas, scenarios, steps and assertions in YAMLSuites
Start from a complete, working projectRecipes
Describe a REST agent, a LiveKit voice agent, a phone agent or a web app as a targetSuites: Target
Grade a conversation with an LLM judge and deterministic checksConcepts: assertions
Keep API keys out of suites with mamori secret refsConfiguration: secrets
Validate suites with file and line numbers, in your editor and in CItamesu validate
Check the whole setup, secrets included, without printing a valuetamesu doctor
Run the suites and read the reportstamesu run, Reports
Test a REST agentREST target
Test an agent over gRPCgRPC target
Test a Pipecat botPipecat target
Test a LiveKit voice agent, in text or audioLiveKit target
Pick models, override prompts, see traces, count costAI (Genkit)
Drive tests from go testGo API
Run tamesu in GitHub Actions, GitLab CI or DockerCI

Seven targets, one model

TargetWhat it isTransport
browserA web app, driven by an agent from natural-language goalsChromium over CDP (chromedp)
restAn HTTP agent that answers one user turn per requestHTTP, SSE or WebSocket
livekitA realtime voice agent in a LiveKit room, in text or audioWebRTC
sipA phone agent reached through a LiveKit SIP service and your trunkSIP / PSTN
realtimeAn agent speaking the OpenAI Realtime protocol, in text or audioWebSocket
grpcAn agent behind tamesu’s turn API, a small gRPC service you implementgRPC
pipecatA Pipecat bot through its websocket transport, in text or audioWebSocket

All seven share the suite schema, the assertion model, the persona and scenario definitions, the metrics and the report format, and all seven work with the action cache for browser goals, the recorder, the generator, the HTML report, the red-team packs, load mode and the MCP server for coding agents.

All AI through Genkit, all secrets through mamori

  • Every model call (the simulated user, the judges, scenario generation, speech) is a Genkit flow. Models are Genkit references such as googleai/gemini-2.5-flash or anthropic/claude-sonnet-4-6, so switching provider is a one-line change, and every run is traceable in the Genkit Developer UI.
  • Every secret is a mamori ref (env:, aws-sm://, vault://, op://, …), resolved once per run, revealed only at the moment of use and replaced by ‹secret:NAME› everywhere else. See Security.

Next steps