benchmark, harness, model, and environment as independent specs on RunRequest. Benchmarks can prepare and score tasks without knowing which sandbox provider is used. Harnesses can run an agent loop without owning benchmark scoring. Environments can provide execution and file primitives without knowing whether the task came from SWE-bench, Terminal-Bench, GUI grounding, or a research benchmark.
Components
agentcompass.cli: command-line entrypoint.agentcompass.launcher: Python SDK entrypoints and request construction.agentcompass.runtime.models: request, plan, task, result, and progress dataclasses.agentcompass.runtime.runner: orchestration loop.agentcompass.runtime.registry: benchmark, harness, environment, recipe, and analyzer registries.agentcompass.benchmarks: dataset loading and scoring.agentcompass.harnesses: agent/model execution.agentcompass.environments: command and file primitives.agentcompass.recipes: provider-aware plan rewrites.agentcompass.foundation: persistence, locking, limiters, metrics, and utility code.
Composition Model
BaseHarness.supports(...) and recipe matching.
Execution Flow
- CLI or SDK builds a
RunRequest. - Runtime loads component registries and config defaults.
- The benchmark loads and filters tasks.
- The planner builds benchmark, harness, and environment plans.
- Recipes may rewrite compatible plans.
- The environment session starts.
- The benchmark prepares task material.
- The harness runs the agent.
- The benchmark evaluates the output.
- Details, progress, logs, and summary artifacts are persisted.
Design Boundaries
- Benchmarks own task data, preparation, scoring, and aggregation.
- Harnesses own agent execution and return normalized
RunResultobjects. - Environments expose
EnvironmentSessionprimitives such asexec, upload/download, text I/O, and optional endpoints. - Models are carried as
ModelSpec; harnesses decide how to call the endpoint or forward credentials to an agent CLI. - Recipes adapt benchmark/provider combinations before sandbox startup, especially images, workspace roots, snapshots, and resource hints.
- Results and analyzers are downstream of execution, so post-analysis can be rerun without rerunning the benchmark.
