Skip to main content

A generic test harness for voice agent workflows

Project description

PyPI Release License Tests

voicetest

Open-source test harness for voice agent workflows.

  • Simulate conversations — LLM-powered users talk to your agent, LLM judges score the results
  • Test any platform — Retell, VAPI, LiveKit, Bland, Telnyx, or custom agents
  • Convert between formats — Import from one platform, export to another via a unified graph IR
  • Diagnose failures — Auto-fix broken prompts with an LLM-powered repair loop
  • Run anywhere — CLI, Web UI, REST API, CI/CD

Installation

uv tool install voicetest

Or add to a project (uv run voicetest to run):

uv add voicetest

Or with pip:

pip install voicetest

Quick start

Try voicetest with a sample healthcare receptionist agent and 8 test cases:

# Set up an API key (free, no credit card at https://console.groq.com)
export GROQ_API_KEY=gsk_...

# Load demo and start web UI
voicetest demo --serve

Tip: If you have Claude Code installed, skip API key setup and use claudecode/sonnet as your model. See Claude Code Passthrough.

Web UI Demo (light)

Web UI

voicetest serve

Agent import, graph visualization, test execution with real-time streaming transcripts, run history, diagnosis, and more at http://localhost:8000.

Platform support

Import from any supported format, convert through the unified AgentGraph, and export to any other:

Retell CF ─────┐                  ┌───▶ Retell LLM
               │                  │
Retell LLM ────┼                  ├───▶ Retell CF
               │                  │
VAPI ──────────┼                  ├───▶ VAPI
               │                  │
Bland ─────────┼───▶ AgentGraph ──┼───▶ Bland
               │                  │
Telnyx ────────┤                  ├───▶ Telnyx
               │                  │
LiveKit ───────┤                  ├───▶ LiveKit
               │                  │
XLSForm ───────┤                  ├───▶ Mermaid
               │                  │
Custom ────────┘                  └───▶ Voicetest JSON
Platform Import Push Sync API Key Env Var
Retell RETELL_API_KEY
VAPI VAPI_API_KEY
Bland BLAND_API_KEY
Telnyx TELNYX_API_KEY
LiveKit LIVEKIT_API_KEY + LIVEKIT_API_SECRET

CI/CD

Run voice agent tests in GitHub Actions to catch regressions before production:

name: Voice Agent Tests
on:
  push:
    paths: ["agents/**"]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v5
      - run: uv tool install voicetest
      - run: voicetest run --agent agents/receptionist.json --tests agents/tests.json --all
        env:
          GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}

Configuration

Settings are stored in .voicetest/settings.toml:

[models]
agent = "groq/llama-3.1-8b-instant"
simulator = "groq/llama-3.1-8b-instant"
judge = "groq/llama-3.1-8b-instant"

[run]
max_turns = 20
audio_eval = false
streaming = false

Any LiteLLM-compatible model works — OpenAI, Anthropic, Google, Ollama, and more. See the full configuration reference.

Documentation

Full documentation is at voicetest.dev/docs.

Topic Description
Getting Started Install, demo, first test walkthrough
Core Concepts Agent graphs, node types, test cases
CLI Reference All commands and options
Features Format conversion, diagnosis, audio eval, snippets, and more
Configuration Models, settings, Claude Code, platform credentials
Architecture Engine internals, DI, storage
Development Contributing, Docker setup, code quality

Contact

Questions, feedback, or partnerships: hello@voicetest.dev

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voicetest-0.43-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file voicetest-0.43-py3-none-any.whl.

File metadata

  • Download URL: voicetest-0.43-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for voicetest-0.43-py3-none-any.whl
Algorithm Hash digest
SHA256 9457aedf12b74c51a345b9b01c7a2cd96f060cad0704a62711e359fb88c7f3cb
MD5 aa37c42564265d0fd0050e77a7aefe8d
BLAKE2b-256 500752e1b1cb2046c0925ce9dcee483f8c5d3ca69f6c2af7e6b49695a24b43d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for voicetest-0.43-py3-none-any.whl:

Publisher: publish.yml on voicetestdev/voicetest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page