Geodi, GEODE's official pixel character
Back to the hall

GEODE

Autonomous Agent Harness

From observation to the next action.

A local autonomous-agent harness you can hand research, file work and scheduled tasks.

2026.02.21 — present

Design, judgment, verification: Author · implementation: Claude · review: Codex

  • CLIPublished · PyPI
  • MCP serverImplemented

Audit scenarios are produced through phases in a fixed order.

The host owns the phase order, and role agents in each phase split the work. The resulting seed pool and the selected rubric become inputs to the Petri behavioral audit.

Seed map · drawn from the evals paths at pinned commit 9e2c041
GEODE audit-scenario generation and Petri auditHow audit scenarios (seeds) are written and audited. The seed_generation orchestrator owns the phase order while role agents draft, review and improve, and the result is exported as a survivors directory and meta-review files. A Petri audit takes a seed selection and assigns three separate model roles: the auditor plays the seed scenario, the target is the whole GEODE scaffold, and the judge scores the transcript by dimension into an Inspect log. SIL measurement reads that result, and a retained measurement becomes baseline evidence for the next generation.Auditor modelplays the seed scenarioTarget base modelthe model GEODE wrapsJudge modelscores the whole transcriptInspect .eval logarchive · summarySIL measurement · measure.pyread by the policy-search chapterbaseline snapshotdim means · evidencehandoff pointerlatest_pointer.json · priorsseed_generation/orchestrator.pyphase order · PipelineStatecheckpoint · resumeagents/ · draftSupervisor · run strategyliterature_review · off by defaultGenerator · candidate seedsagents/ · reviewProximity · dedupeCritic · reviewPilot · optional · not in smokeRanker · Eloagents/ · improveEvolver · improveMeta-reviewer · next priorsrun_dir/survivors/ · candidate .md copiessurvivors.json · Elo · pilotmeta_review.json · state.jsonpetri/seedsbundled seeds · *.mdpetri/runner.pygeode audit · /audit · toolcost estimate · dry-run by defaultpetri/geode_target.pyGEODE as target · AgenticLooppetri/judge_dimsjudge_dimensions · YAMLstate files outside a runevals/seed_generationscenario authoringevals/petriaudit run1run phases in order2baseline evidence3 previous meta-review · latest_pointer.json · priors → agents/ · draft34 candidate seeds · agents/ · draft → agents/ · review45survivors · Elo6 next iteration · from Critic · Meta-reviewer · next priors → Critic · review67 export survivors · agents/ · improve → run_dir/78latest pointer1--seed-select2bundled seeds3 model roles · three seats · geode audit · /audit · tool → Auditor model34seed scenario dialogue5 model calls · GEODE as target · AgenticLoop → Target base model56transcript7 judge_dimensions · judge_dimensions · YAML → Judge model78dimension scores1dimension scores2 measurement · Inspect .eval log → SIL measurement · measure.py23baseline update4baseline evidence

Scenario authoring

The orchestrator owns the phase order, role agents draft and filter candidates, and the result is exported through a file contract.

  1. phase order · PipelineStateseed_generation/orchestrator.pyrun · decide: run phases in orderagents/ · draft

    The orchestrator owns the phase order and state merging; each phase’s role agent does the work. Within a phase the work can fan out through SubAgentManager, and sub-agents do not recurse (depth 1).

  2. dim means · evidencebaseline snapshotdata: baseline evidenceagents/ · draft

    Generator, Critic and Evolver read the selected baseline’s per-dimension means, standard errors and evidence. The first generation has no baseline and uses the default prompts.

  3. latest_pointer.json · priorshandoff pointerdata: previous meta-reviewagents/ · draft

    The previous run’s meta-review leaves next-generation priors and under-covered dimensions for this generation to consider.

  4. agents/ · draftdata: candidate seedsagents/ · review

    Generator candidates pass Proximity dedupe, Critic review, Pilot (optional; skipped in smoke runs) and Ranker’s Elo ranking in turn.

  5. agents/ · reviewdata: survivors · Eloagents/ · improve

    Evolver improves the highest-ranked candidates, and Meta-reviewer summarizes the run into next-generation priors.

  6. Meta-reviewer · next priorsagents/ · improverun · decide: next iteration · from CriticCritic · reviewagents/ · review

    With max_iterations set, after Meta-reviewer the improved candidates go through Critic → Pilot → Ranker → Evolver → Meta-reviewer again. Supervisor, Generator and Proximity do not rerun; the default is zero iterations.

  7. agents/ · improvedata: export survivorsrun_dir/

    Surviving candidate bodies are copied as files into survivors/, Elo and pilot scores go to survivors.json, and the meta-review and state are written separately.

  8. meta_review.json · state.jsonrun_dir/data: latest pointerlatest_pointer.json · priorshandoff pointer

    One latest_pointer.json records where this run’s seed_pool and meta_review are. The per-run outputs are canonical; the pointer is a best-effort aid for the next run, and a failed write is only logged. Not every run has both fields.

Audit run

The auditor plays the seed (a scenario instruction), the target is the GEODE scaffold, and the judge scores the transcript. The three roles are separate model seats.

  1. survivors/ · candidate .md copiesrun_dir/data: --seed-selectgeode audit · /audit · toolpetri/runner.py

    An audit takes a seed selection (a survivors directory, bundled seeds, ids or tags) and passes it to Inspect’s inspect_petri/audit task. Seed generation does not start an audit itself.

  2. bundled seeds · *.mdpetri/seedsdata: bundled seedsgeode audit · /audit · toolpetri/runner.py

    The repository’s bundled seeds can be selected as they are.

  3. geode audit · /audit · toolpetri/runner.pyrun · decide: model roles · three seatsAuditor model

    Auditor, target and judge models are set separately. The default is a dry run; real calls happen only after a cost estimate is confirmed. When all three roles share a provider, a same-provider bias marker is attached.

  4. Auditor modeldata: seed scenario dialogueGEODE as target · AgenticLooppetri/geode_target.py

    A seed is a scenario instruction for the auditor. The auditor leads the conversation and can create tools and tool results only when target_tools is enabled.

  5. GEODE as target · AgenticLooppetri/geode_target.pydata: model callsTarget base model

    The whole GEODE AgenticLoop (tools, hooks, memory) is wrapped as one model API, so the audited target is the GEODE scaffold, not the base model alone.

  6. GEODE as target · AgenticLooppetri/geode_target.pydata: transcriptJudge model

    The judge reads each sample’s full transcript once and scores it by dimension.

  7. judge_dimensions · YAMLpetri/judge_dimsrun · decide: judge_dimensionsJudge model

    The selected judge-dimension YAML sets the scoring dimensions. This is a behavioral audit, a different measurement from task completion.

  8. Judge modeldata: dimension scoresInspect .eval log

    The Inspect .eval log and a summary are archived. An archive failure is noted and does not block the audit result.

Measurement → next generation

SIL uses audit scores for its verdict, and a retained measurement becomes baseline evidence for the next seed generation. This does not mean the link ran automatically in every campaign.

  1. Judge modeldata: dimension scoresInspect .eval log

    The Inspect .eval log and a summary are archived. An archive failure is noted and does not block the audit result.

  2. Inspect .eval logrecord · observe: measurementSIL measurement · measure.py

    SIL’s measure.py runs the audit subprocess and computes fitness from its result.

  3. SIL measurement · measure.pydata: baseline updatedim means · evidencebaseline snapshot

    SIL’s ledger writes a retained measurement as the baseline. Seed generation reads that evidence when a baseline is selected (automatically or explicitly).

  4. dim means · evidencebaseline snapshotdata: baseline evidenceagents/ · draft

    Generator, Critic and Evolver read the selected baseline’s per-dimension means, standard errors and evidence. The first generation has no baseline and uses the default prompts.

Every connection at the same weight. Pick a flow to highlight only its path, with numbered steps.

  • Solid · the direction requests, candidates and results flow
  • Dashed · run, decide, authorize, configure
  • Long dash-dot · records and observation, separate from the verdict
  • Heavy black line · the selected flow; numbers give the order
  • Box · a code or record boundary, its path in the header
  • Inner chip · a component in that boundary
  • Dashed box · outside that boundary
  • orchestrator · audit entry
  • audit target · scoring dimensions
  • outputs · state files
  • role agents · bundled seeds

The orchestrator fixes the first-pass order and the repeat order. Configuration, registered roles and the resume point can skip some phases, and not every campaign ran every phase. State-file locations depend on the environment, so no paths are shown.

Three roles
A seed is a scenario instruction, written by a person or generated; the auditor is the model that plays it, the target is the audited GEODE scaffold, and the judge is the model that scores the transcript. Scores and logs are the judge’s outputs.
What is measured
A Petri audit scores behavioral dimensions. It is not a task-completion rate or a product-quality guarantee.