Hermes Flight Recorder — Setup Guide¶
Overview¶
The Hermes Autonomy Flight Recorder is a standalone adversarial eval harness for Hermes Agent runs. It converts run artifacts into normalized traces, scores them against explicit autonomy boundaries, and renders static HTML reports. This is accountability and regression infrastructure — not a sandbox, not a security boundary.
Key Facts: - Deterministic scoring — no API keys, no network required - Static HTML reports — viewable in any browser - Training data export — SFT, DPO, and reward model views - Scenario quality metrics — measures evaluation contract strength - Evidence coverage reports — verifies judgment backing
Prerequisites¶
- Python 3.11+
- Git
- A web browser (for viewing HTML reports)
No API keys or network access required.
Installation¶
git clone https://github.com/zwright8/hermes-flight-recorder.git
cd hermes-flight-recorder
Quick Demo¶
The demo runs offline and deterministically:
python -m unittest discover
./demo.sh
open runs/index.html
Expected Demo Output¶
- ✅ 2 passing reports: prompt-injection resistance, structured email completion
- ❌ 4 failing reports: unsupported claims, prompt-injection obedience, secret exposure, budget violations
- 📊 Compare report: before/after regression comparison
- 📈 Suite compare: aggregate score/pass-rate deltas
- 📋 Suite summary:
runs/suite_summary.json - 🎯 Scenario quality:
runs/scenario_quality.json - 🏋️ Training export:
runs/training_export/with episodes, rewards, preference pairs, SFT/DPO views - 🔍 Evidence coverage:
runs/evidence_coverage.json - 👁️ Trace observability:
runs/trace_observability.json
Usage¶
Run Against a Single Hermes Session¶
# Export a Hermes session trace
hermes session export --session-id <id> --output trace.json
# Run flight recorder against it
python -m flight_recorder evaluate --trace trace.json --output runs/
Run a Suite of Scenarios¶
# Define scenarios in scenarios.yaml
python -m flight_recorder suite --scenarios scenarios.yaml --output runs/
Generate Training Data¶
python -m flight_recorder export-training --runs runs/ --output training_data/
Report Types¶
| Report | File | Description |
|---|---|---|
| Single Run | runs/<run>/report.html |
Per-run scorecard with pass/fail rules |
| Compare | runs/compare.html |
Before/after regression comparison |
| Suite Compare | runs/suite_compare.html |
Aggregate deltas across all scenarios |
| Suite Summary | runs/suite_summary.json |
Pass rates, scores, task-family rollups |
| Scenario Quality | runs/scenario_quality.json |
Contract strength, assertion coverage |
| Evidence Coverage | runs/evidence_coverage.json |
Judgment backing verification |
| Trace Observability | runs/trace_observability.json |
Event volume, type diversity, timing |
Autonomy Boundaries Evaluated¶
The flight recorder scores against explicit boundaries:
| Boundary | What It Checks |
|---|---|
| Prompt Injection Resistance | Agent refuses to execute injected instructions |
| Task Completion Evidence | Claims of completion are backed by observable artifacts |
| Side-Effect Verification | Subagent claims are verified against actual outputs |
| Budget Enforcement | Agent stays within token/cost constraints |
| Secret Protection | Credentials and secrets are not exposed in outputs |
| Delegation Control | Subagent spawning respects configured limits |
Training Data Export¶
The --export-training flag produces:
runs/training_export/
├── episodes/ # Individual run episodes
├── terminal_rewards/ # Per-episode reward signals
├── step_rewards/ # Step-level reward attribution
├── preference_pairs/ # Win/loss pairs for DPO
├── sft/ # Supervised fine-tuning data
├── dpo/ # Direct preference optimization data
├── reward_model/ # Reward model training views
├── failure_modes/ # Categorized failure patterns
├── curriculum/ # Difficulty-progressive curriculum
├── splits/ # Train/validation/test splits
├── dataset_card.md # Dataset documentation
├── quality_metrics.json # Dataset quality metrics
└── manifest.json # Full export manifest
Use Cases for CorpusIQ¶
1. Autonomous Growth Agent QA¶
Before deploying a new growth agent workflow, run it through the flight recorder:
# Export test runs
hermes session export --session-id test-001 --output trace.json
python -m flight_recorder evaluate --trace trace.json
# Check for prompt injection vulnerabilities
grep "prompt-injection" runs/*/report.html
2. Regression Testing¶
After updating agent skills or prompts, verify no regressions:
python -m flight_recorder suite --scenarios regression_suite.yaml
open runs/suite_compare.html
3. Continuous Improvement¶
Export training data to fine-tune models on CorpusIQ-specific agent behaviors:
python -m flight_recorder export-training --runs production_runs/ --output training/
Troubleshooting¶
| Issue | Solution |
|---|---|
ModuleNotFoundError |
Run from within the cloned repo directory |
| Empty reports | Ensure trace JSON has required fields (events, messages) |
| Demo fails | Run python -m unittest discover first to verify environment |
| Large trace files | Use --max-events 10000 to limit processing |
Verification¶
# 1. Run unit tests
python -m unittest discover
# 2. Run demo
./demo.sh
# 3. Check reports exist
ls runs/index.html runs/suite_summary.json
# 4. Verify training export
ls runs/training_export/manifest.json
Limitations¶
- Not a security boundary: Real containment belongs at the OS, process, and network layers
- Offline only: No live monitoring — evaluates completed runs
- Trace-dependent: Quality of evaluation depends on trace completeness
- Deterministic scoring: Does not use LLM-as-judge (by design)
← Skills Catalog | Flight Recorder on GitHub →
Curated by CorpusIQ — one MCP endpoint, all your business tools.