LegacyWorld is a desktop benchmark harness for evaluating computer-use agents in legacy software environments. It includes:
BenchSvc: a Windows-side control service used inside the benchmark VM.src/bench_core: Python harness code for VM orchestration, task execution, state checks, reporting, and agent adapters.tasks: task definitions and verification logic.tests: focused unit and smoke tests for the public harness behavior.
BenchSvc is intended to run only inside an isolated benchmark virtual machine. It exposes endpoints that can start processes, inspect desktop state, and fetch files from the configured benchmark working directory. Do not expose it to untrusted networks.
By default, the service binds to 127.0.0.1:5000. If you intentionally bind it to a broader interface, place the VM behind an appropriate network boundary.
The harness reads configuration from a .env file at the repo root (loaded via python-dotenv). Copy .env.example to .env and fill in the values you need.
The relevant variables:
LEGACY_AGENT_HOST,LEGACY_AGENT_KEY,LEGACY_AGENT_TARGET_ID— endpoint, API key, and target identifier for an agent backend that implements the HTTP contract used byLegacyUseAgentHandler(seesrc/bench_core/agents.py; the handler POSTs to/targets/{target_id}/jobs/and polls/interrupts/resolves through the same prefix). Leave them unset to run with only the no-op baseline handler.BENCHMARK_MODE—custom(default) orgenerated-prompt.QEMU_IMG_PATH,QEMU_SYSTEM_PATH,BASE_IMAGE_PATH— override the defaults insrc/bench_core/main.py. Defaults assume Homebrew QEMU on Apple Silicon; on x86 hosts setQEMU_SYSTEM_PATHto the appropriateqemu-system-x86_64binary.
Install Python dependencies, then run:
make testBuild the Windows service with:
make benchsvc-publishGenerate a local task catalogue with:
make task-catalogThe generated catalogue is written to TASKS.generated.md and is not part of the release source.
LegacyWorld is licensed under the Apache License, Version 2.0. See LICENSE.