Compare atomic-agent, Hermes, and OpenClaw on the same local chat
model (default campaign: gemma-4-26b-a4b) using the public GAIA
validation split. Scoring uses the official GAIA question_scorer
normalization (exact match).
npm run build(eval spawnsdist/cli/index.jsfor atomic-agent).- Managed llama daemons or
ATOMIC_AGENT_EVAL_LLAMA_URL. - For atomic-agent memory fabric: embedding daemon on port
19092(started byatomic-agent models startwhen an embedding model is configured). - Competitors:
hermesandopenclawonPATH(skipped automatically when missing). - Full GAIA (not smoke):
HF_TOKEN+npm run eval:agents:datasets.
cp eval-agents/.env.example eval-agents/.env
# edit tokens / URLsUnit tests (scoring + parsing, no LLM):
npm run eval:agents:lint
npx vitest run --config eval-agents/vitest.config.ts eval-agents/harnessSmoke (committed fixtures, all agents):
npm run eval:agents:smokeGAIA validation Level 1 (real dataset):
npm run eval:agents:datasets # once
npm run eval:agents:level1Filter agents:
ATOMIC_AGENT_EVAL_AGENTS=atomic-agent npm run eval:agents:smokeScorecard:
npm run eval:agents:scorecardEach run writes eval-agents/reports/run-<ISO>/:
matrix.csv/matrix.jsonl— per (agent × question) rowenvironment.json— pinned model, sampling, git SHA
- Chat model: shared
llama-serverURL for all agents. - atomic-agent: memory fabric on (chat + embedding daemons when available).
- Hermes / OpenClaw: stock CLI, local OpenAI-compatible endpoint.
- Prompt: GAIA prefix +
FINAL ANSWER:convention; scorer is deterministic. - Hermetic smoke:
datasets/gaia/fixtures/smoke-level1.json(no HF leak).
See docs/PHASE0-COMPATIBILITY.md for research notes and known risks.