Evaluate any agent on any benchmark in the simplest way possible
Exgentic is a universal evaluation framework that enables standardized testing of AI agents across diverse benchmarks and domains. It provides a consistent interface for evaluating any agent on any benchmark, making it easy to compare performance, reproduce results, and ensure your agent works reliably across different tasks and environments.
Exgentic serves multiple audiences in the AI agent ecosystem:
- General Audience - Visit www.exgentic.ai to explore the first general agent leaderboard comparing leading agents and frontier models across varied tasks.
- Agent Builders - Evaluate your agents comprehensively across multiple domains and benchmarks to ensure robust performance and identify areas for improvement.
- Researchers & Component Developers - Test general agentic components (such as memory systems, context compression, planning modules) across different agents and domains to validate their effectiveness and generalizability.
- Benchmark Builders - Evaluate your benchmark across multiple agents to ensure it provides meaningful differentiation and works reliably with different agent architectures.
- π Universal Evaluation Framework - Evaluate any agent on any benchmark with a consistent, standardized interface
- π€ Multi-Agent Support - Built-in support for LiteLLM, SmolAgents, OpenAI MCP, and Claude Code agents
- π Comprehensive Benchmarks - Industry-standard benchmarks including TAU2, AppWorld, SWE-bench, BrowseComp+, GSM8K, and HotpotQA
- π Flexible LLM Integration - Works with any LLM provider through LiteLLM (OpenAI, Anthropic, and more)
- π» Multi-Interface - Python API, CLI and GUI for different workflows and use cases
- π Interactive Dashboard - Web-based interface for real-time monitoring and configuration
- π Advanced Observability - Comprehensive logging with trajectory tracking, OpenTelemetry integration, and detailed traces
- βοΈ Fine-Grained Control - Configure model parameters, run limits, and benchmark/agent-specific settings
- π Structured Output - Organized directory structure with session-level and run-level artifacts for easy analysis
- π° Cost Tracking - Automatic tracking of API costs and performance metrics
- π Scalable - Built-in caching, optimization, and monitoring features for scaled evaluations
- π§© Extensibility - Modular architecture makes it easy to add new agents or benchmarks
- Python 3.11 or higher
- Virtual environment (recommended)
Clone the repository:
git clone https://github.com/Exgentic/exgentic.git
cd exgenticSet up your environment:
python3.11 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[smolagents]"Run the setup command for each benchmark before first use:
exgentic setup appworld
exgentic setup tau2Configure your API keys for OpenAI, Anthropic or any other platform support by LiteLLM.
# For OpenAI
export OPENAI_API_KEY=... # your OpenAI API key
# Or for Anthropic
export ANTHROPIC_API_KEY=... # your Anthropic API keyAlternatively, create a .env file in the project root with your API keys. Exgentic will load them automatically.
TAU2 Benchmark with LiteLLM
exgentic list benchmarks
exgentic list agents
# Using OpenAI
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--model gpt-4o \
--set benchmark.user_simulator_model="gpt-4o" \
--output-dir ./outputs
# Or using Anthropic
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--model claude-3-5-sonnet-20241022 \
--set benchmark.user_simulator_model="claude-3-5-sonnet-20241022" \
--output-dir ./outputsYou can see all available benchmarks using:
exgentic benchmark listYou can install and use any of these:
- π― tau2 - Simulated customer support tasks across multiple domains (retail, airline, banking) with realistic user interactions
- π± appworld - Multi-app API environment testing agents' ability to interact with various application interfaces
- π browsecompplus - Web search and browsing benchmark evaluating information retrieval and navigation capabilities
- π» swebench - Software engineering benchmark for resolving real-world GitHub issues in Python repositories
There are two simple example benchmarks:
- π hotpotqa - Multi-hop question answering over Wikipedia requiring reasoning across multiple documents
- π’ gsm8k - Grade school math word problems (GSM8K dataset) with optional calculator tool support
Setup: pip install -e ".[litellm]"
Setup: pip install -e ".[smolagents]"
Setup: pip install -e ".[openaimacp]"
Setup: To be added...
Launch the interactive dashboard:
exgentic dashboardThe dashboard provides a web interface where you can:
- Select benchmarks and agents from the sidebar
- Configure parameters in the 'Run' tab
- Initiate evaluations with the 'Run' button
- Monitor progress and view results in real-time
Each run creates its own directory under outputs/<run_id>/:
outputs/<run_id>/
βββ benchmark_results.json # Benchmark-specific aggregated results
βββ results.json # Overall scores, costs, and per-session statistics
βββ run/
β βββ config.json # Snapshot of benchmark and agent configuration
β βββ run.log # Main execution log
β βββ error.log # Error that cause session to fail
β βββ warnings.log # Warnings and issues during execution
β βββ litellm/
β βββ trace.jsonl # LiteLLM API traces (if using LiteLLM)
βββ sessions/<session_id>/
βββ config.json # Session-specific configuration
βββ results.json # Framework-level results for the session
βββ session.json # Session metadata
βββ trajectory.jsonl # One JSON line per step (action + observation)
βββ agent/
β βββ agent.log # Agent execution log
β βββ litellm/
β βββ cache.log # LiteLLM cache operations
β βββ trace.jsonl # Agent-specific LiteLLM traces
βββ benchmark/
βββ config.json # Benchmark configuration
βββ results.json # Benchmark-specific results
βββ session.log # Benchmark adaptor log
βββ [benchmark-specific files]
For TAU2 runs, additional files appear under sessions/<session_id>/benchmark/:
| File | Description |
|---|---|
dialog.log |
Human-readable conversation transcript |
tau2_session.log |
TAU2 framework internal log |
Common Commands
exgentic list benchmarks
exgentic list subsets --benchmark tau2
exgentic list tasks --benchmark tau2 --subset retail --limit 5
exgentic list agents
exgentic evaluate --benchmark tau2 --agent tool_calling --subset airline --task 12 --task 34
exgentic evaluate --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10 \
--set benchmark.user_simulator_model="gpt-4o" \
--set agent.max_steps=20 \
--max-steps 100 \
--max-actions 100
exgentic evaluate execute --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic evaluate aggregate --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic evaluate session --benchmark tau2 --agent tool_calling --subset airline --task 12
exgentic evaluate session --config session_config.json
exgentic status --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic preview --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic results --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10For Python API usage examples, see the examples/ directory.
To learn more about Exgentic's architecture and design, see our arXiv paper.
We welcome issues and pull requests! Please see CONTRIBUTING.md for guidelines.
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--set agent.model.temperature=0.2Supported fields: temperature, top_p, max_tokens, reasoning_effort, num_retries, retry_after, retry_strategy
Agents will warn and ignore any unsupported fields.
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--max-steps 100 \
--max-actions 100The Exgentic stops a session when it reaches either limit and records a limit_reached status.
Default: 100 for both limits
Enable distributed tracing for your agent evaluations:
-
Install dependencies:
pip install -e .[otel]
-
Set up an OTEL Collector: Use Jaeger or Langfuse. See the OpenTelemetry Collector documentation for details.
-
Configure environment variables:
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf # or 'grpc' export EXGENTIC_OTEL_ENABLED=true
-
View traces: OTEL logs are written to
<session_root>/otel.log
If you use Exgentic or Exgentic harness in your research, please cite it by using the following BibTeX entry.
@misc{bandel2026generalagentevaluation,
title={General Agent Evaluation},
author={Elron Bandel and Asaf Yehudai and Lilach Eden and Yehoshua Sagron and Yotam Perlitz and Elad Venezian and Natalia Razinkov and Natan Ergas and Shlomit Shachor Ifergan and Segev Shlomov and Michal Jacovi and Leshem Choshen and Liat Ein-Dor and Yoav Katz and Michal Shmueli-Scheuer},
year={2026},
url={https://arxiv.org/abs/2602.22953},
}This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
For questions and support, please open an issue on GitHub.


