About
What is Waza?
Section titled “What is Waza?”Waza (技 - Japanese for “skill/technique”) is a Go CLI for evaluating agent
workflows, skills and custom agents. Repository, CLI and MCP scenarios make
workflow behavior first-class without requiring a SKILL.md.
Start with Concepts and the offline Quick Start,
then configure an authenticated model-backed run. Published v0.39.0 includes
these workflows; see release availability and platform limits.
The Problem
Section titled “The Problem”Evaluating an agent workflow requires more than checking its final response: teams need repeatable tasks, meaningful graders, and evidence they can inspect across runs. Skills and custom agents can be part of that workflow, but are not required.
The Solution
Section titled “The Solution”Waza supports a workflow from an offline harness check to agent-backed evaluation:
| Phase | Capability |
|---|---|
| Scaffold | Create a suite for a repository, CLI, MCP, skill or custom-agent scenario |
| Preflight | Check configuration and dependencies without running an agent |
| Test | Run mock trials or explicitly configured agent-backed evaluations |
| Evaluate | Grade results, inspect recorded evidence and compare runs |
Mock results check harness wiring, not agent quality. Real agent runs require appropriate authentication, permissions and model access, and may incur costs.
Architecture
Section titled “Architecture”Waza is built in Go for:
- Bundled core runtime; selected graders and dependencies can need interpreters or services
- Fast execution
- Cross-platform compatibility (Linux, macOS, Windows)
Components
Section titled “Components”cmd/waza/: CLI entrypoint and commands.internal/: execution engines, models, orchestration, graders and other packages.web/: dashboard (React and Tailwind).examples/: example evaluations and scenarios.
Design Principles
Section titled “Design Principles”- Fixture isolation — Task workspaces protect original fixtures; isolation is not a security sandbox.
- Pluggable graders — 13 native grader kinds check different aspects of a run.
- Cross-model evaluation — Compare configured agent runs across supported models and providers.
- Offline-first checks — Use preflight and mock execution before opting into real runs.
- Inspectable evidence — Review recorded results and events in the CLI or dashboard; unavailable evidence remains explicit.
Key Features
Section titled “Key Features”Structured Benchmarks
Section titled “Structured Benchmarks”Define test cases in YAML:
name: code-explainer-evaltasks: - "tasks/*.yaml"
graders: - type: text config: regex_match: ["function", "parameter"]13 Native Grader Kinds
Section titled “13 Native Grader Kinds”- Code — Python assertions
- Text — Text matching
- File — Output file checking
- Diff — Diff comparison
- JSON Schema — JSON structure validation
- Prompt — LLM-powered evaluation
- Behavior — Agent behavior validation
- Action Sequence — Tool call sequence validation
- Skill Invocation — Skill invocation validation
- Program — Program execution validation
- Trigger — Skill activation checks
- Tool Constraint — Required/forbidden tool constraints
- Tool Calls — Tool events and argument checks
Multi-Model Comparison
Section titled “Multi-Model Comparison”waza run eval.yaml --model gpt-4o -o gpt4.jsonwaza run eval.yaml --model claude-sonnet-4.6 -o sonnet.jsonwaza compare gpt4.json sonnet.jsonInteractive Dashboard
Section titled “Interactive Dashboard”waza serveExplore results, trends, and comparisons in a web interface.
CI/CD Ready
Section titled “CI/CD Ready”Pre-configured GitHub Actions workflow:
waza init my-project# Creates .github/workflows/eval.ymlContributing
Section titled “Contributing”We welcome contributions! Here’s how to get involved:
Report Issues
Section titled “Report Issues”Found a bug or have a feature request?
- Check existing issues
- Open a new issue with clear reproduction steps
- Include error logs and environment details
Contribute Code
Section titled “Contribute Code”- Fork the repository
- Create a branch for your feature:
git checkout -b feature/my-feature - Make changes following the code style
- Write tests for new functionality
- Run linter and tests:
Terminal window make lintmake test - Commit with clear messages:
feat: Add my feature - Push to your fork and open a pull request
Development Setup
Section titled “Development Setup”# Clone repositorygit clone https://github.com/microsoft/waza.gitcd waza
# Set up Go environmentgo version # Requires 1.26+git lfs installgit lfs pull
# Build (Make, Node.js 22.23.4+ on 22.x or 24+, npm 9.6.5+; generates dashboard assets)make build
# Testmake test
# Lintmake lint
# Run./waza --helpCode Style
Section titled “Code Style”- Follow Go idioms (Effective Go)
- Use
gofmtfor formatting - Include unit tests for new code
- Document public functions
Adding Validators
Section titled “Adding Validators”To add a native grader:
- Implement
Graderininternal/graders/. - Add the parameter type in
internal/models/grader_params.goand the kind/schema entry. - Add the matching
Create()factory case and tests. - Update the README, canonical grader catalog and configuration examples.
Documentation
Section titled “Documentation”- Update relevant docs when changing behavior
- Add examples for new features
- Keep README.md and GUIDE.md in sync
Community
Section titled “Community”Discussions
Section titled “Discussions”Have questions or ideas? Join the conversation:
- GitHub Discussions — Ask questions, share ideas
- GitHub Issues — Report bugs, request features
Support
Section titled “Support”Roadmap
Section titled “Roadmap”See the active feature tracker #657 and delivery tracker #866. The original platform roadmap #8 is closed and retained for historical context.
License
Section titled “License”Author
Section titled “Author”Shayne Boyer (@spboyer)
Maintained by the waza team and community contributors.
Questions? Open an issue or start a discussion.
Inspiration
Section titled “Inspiration”The waterfall timeline visualization in the waza dashboard was inspired by the .NET Aspire distributed application dashboard, which provides a similar trace/span view for distributed systems observability.