Developer Guide
This section is for contributors extending Dexter, adding agents, modifying schemas, writing tool scripts, or changing pipeline behavior.
Design philosophy
Dexter v0 is prompt-orchestrated: the model determines routing, branching, and exit conditions. This makes it fast to experiment with loop structure before committing to a hardened state machine.
Key principles for contributors:
- Trust executable files over prose:
opencode.json,.opencode/agents/*.md,configs/base.yaml,tool_scripts/, andschemas/are source of truth - One artifact per subagent: subagents write exactly one file and exit
- Orchestrator owns control flow: ordering, retries, gates, stop conditions
- Schema gates everywhere: validate JSON after every subagent write
- Resume from disk: never assume a step ran; probe
.intermediate/first - Minimal diffs: match existing conventions; don't over-engineer
What v0 deliberately does not solve
- Fault tolerance: a subagent that produces a weak IR passes it forward silently
- Stateful backtracking: no retry logic inside subagent nodes
- Multi-object scenes: one object per run
- Production orchestration: prompt-based routing vs explicit state machine
The natural next step for production: replace prompt orchestration with an explicit graph, fixed transitions, deterministic branching, typed IRs at each edge.
Developer guide sections
| Topic | Page |
|---|---|
| Repo layout and key files | Project Structure |
| Adding agents, steps, gates | Extending the Pipeline |
| JSON Schema conventions | Schemas & Validation |
| Tool script conventions | Tool Script Standards |
| Local dev workflow | Local Development |
Prerequisites for contributors
- Python 3.10+, Blender 3.6+, OpenCode CLI
- Familiarity with JSON Schema, OpenCode agent config, and the Architecture docs
- Read
AGENTS.mdat the repo root; it is what OpenCode agents see
Contribution workflow
- Read
AGENTS.mdand the relevant agent prompt in.opencode/agents/ - Make changes to prompts, schemas, scripts, or config
- Validate schemas:
python3 tool_scripts/common.py --schema schemas/<name>.schema.json --data <test.json> - Run a test pipeline on a bundled input image
- Update documentation if behavior changes
There is no checked-in test runner or CI. Focused verification is JSON Schema validation (python3 tool_scripts/common.py --schema … --data …), Ruff lint/format on tool_scripts/ (see Tool Script Standards), and manual pipeline runs.