Archon is a workflow engine for AI coding agents. Define multi-step development workflows in YAML — code review, bug fixes, feature implementation, testing — and run them with a single command.
It is an open-source harness builder for AI coding. Make AI coding deterministic and repeatable.
Here’s an example of an Archon workflow that plans, implements in a loop until tests pass, gets your approval, then creates the PR:
# .archon/workflows/build-feature.yamlnodes: - id: plan prompt: "Explore the codebase and create an implementation plan" - id: implement depends_on: [plan] loop: # AI loop - iterate until done prompt: "Read the plan. Implement the next task. Run validation." until: ALL_TASKS_COMPLETE fresh_context: true # Fresh session each iteration - id: run-tests depends_on: [implement] bash: "bun run validate" # Deterministic - no AI - id: review depends_on: [run-tests] prompt: "Review all changes against the plan. Fix any issues." - id: approve depends_on: [review] loop: # Human approval gate prompt: "Present the changes for review. Address any feedback." until: APPROVED interactive: true # Pauses and waits for human input - id: create-pr depends_on: [approve] prompt: "Push changes and create a pull request"
Tell your coding agent what you want, and Archon handles the rest:
You: Use archon to add dark mode to the settings pageAgent: I'll run the archon-idea-to-pr workflow for this. → Creating isolated worktree on branch archon/task-dark-mode... → Planning... → Implementing (task 1/4)... → Implementing (task 2/4)... → Tests failing - iterating... → Tests passing after 2 iterations → Code review complete - 0 issues → PR ready: https://github.com/you/project/pull/47
export function sanitizeError(error: Error): Error { const sanitized = new Error(sanitizeCredentials(error.message)); if (error.stack) { sanitized.stack = sanitizeCredentials(error.stack); } return sanitized;}
This redacts the sensitive info in the error message. Interesting. Where is this used? I always use symbols that pop up when you click on a variable/function name.