TL;DR
- Add
./.archal/harness.tsto readAGENT_TASK, call your agent, and print the result. - Add
.archal.jsonwithagentpointing at it. archal run --task "..." --docker --clone github.
Add a headless harness
Archal needs a command it can spawn.archal init creates
./.archal/harness.mjs for new integrations. It should:
- read
AGENT_TASK - call your real agent runtime
- print the final answer to stdout
Check the harness
Check the harness outside Archal before letting a scored run spend attempts:Configure .archal.json
Create .archal.json if you want archal run to find your harness without
passing --harness every time:
tsx:
scenarios, seeds, runs, timeout,
agentModel, or evaluatorModel later when you need project defaults. See
the CLI config reference for every field.
Run a task
The quickest scored path is an inline task. Service-clone runs require Docker or sandbox mode..archal.json has an agent field, you can omit --harness. Results
print in the terminal and appear in the dashboard.
Run a scenario
For repeatable tests, write a scenario file and pointarchal run at it:
Promote to a scenario
Turn a one-off task into a scenario file with a title heading, prompt, success criteria, and config:How routing works
Your harness keeps using normal SDKs and service domains. In Docker or sandbox mode, Archal routes supported service traffic to clones and lets non-clone traffic, such as model API calls, pass through. Example: an Octokit call toapi.github.com reaches the GitHub clone during
the run. Your harness code does not need a clone URL.
When to use archal clone instead
Use archal clone when you are autolooping an app
manually, inspecting clone state, or debugging service compatibility. Use
--harness for repeatable scored runs.
Go deeper
- Harness configuration for prompt files, model defaults, and env contracts.
- Docker harness contract for container details.
- Sandbox mode for OpenClaw-compatible sandbox runs.
- Route-mode trust and safety for TLS and local debug details.
