Forgeo¶
A scheduled, agent-driven software factory for one repository. Every interval_minutes Forgeo wakes up and does one thing:
- Task — picks the oldest
OPENtask whose dependencies areCOMPLETED(or the earliest duerun_at), runs it via your agent, commits and pushes on the configured branch. - Refactor — if no task is runnable, runs the agent with
refactor_promptinstead. - Blocked — if the agent exits
blocked_exit_code, marks the taskBLOCKED, writesBLOCKER.md, and pauses until you reopen it.
Principles¶
- One repo, one branch (
mainby default), one agent at a time. Overlapping cycles are skipped, never killed. - No PRs or merge strategies — everything commits directly.
- Any agent CLI works if it reads
FORGEO_TASK.
Where state lives¶
| File | Purpose |
|---|---|
forgeo.yaml |
Config (Configuration) |
backlog.json |
Task list — file, HTTP endpoint, or Jira/GitHub/GitLab (Backlog) |
backlog.json.bak* |
Rotating snapshots of a file backlog (before each run) |
BLOCKER.md |
Rendered from BLOCKED tasks; keep outside repo |
forgeo.log |
Rotating log (5 MB × 3), also in dashboard |
runs.jsonl |
Durable run history, one JSON line per cycle |
backlog.state.json |
Live daemon state (pid, last outcome, next run) |
backlog.lock / backlog.run |
Daemon and per-cycle locks |
~/.config/forgeo/instances.yaml |
Instance registry (multi-repo) |
~/.config/forgeo/web.toml |
Dashboard bearer token (optional) |
Runtime files sit next to the backlog file; with a remote backlog they go in state_dir (defaults to the config directory).
Next steps¶
- Getting Started — install and run your first task.
- Configuration — every
forgeo.yamlkey. - Backlog format — task schema, ordering, providers.
- CLI reference — all commands.