Skip to main content
Forgeo logo
Forgeo

CI License: MIT

Forgeo running a backlog task end to end

Forgeo is a software factory for your coding agent.

Give it a backlog and an agent CLI — Forgeo picks the next runnable task, runs the agent, and commits the result. It tracks progress in plain files and a web dashboard, and only interrupts you when a human decision is needed.

  • One task at a time — oldest OPEN task whose dependencies are COMPLETED (or a run_at schedule). REVIEW blocks dependants but not independent tasks.
  • Agent-agnostic — any CLI that reads FORGEO_TASK (aider, Claude, custom script).
  • Refactors when idle — runs a refactoring pass when the backlog is empty.
  • Handles failure gracefully — BLOCKED for human input (BLOCKER.md), FAILED with retry policy, snapshots for file backlogs, Telegram/webhook notifications.
  • Optional review — review_mode: branch commits to forgeo/review/TASK-001, marks REVIEW, pushes and waits for human merge → Complete.

Requires a terminal, a git repo, and an agent CLI.

Quickstart

Full walkthrough: Getting Started.

1. Install

Pick one (no root; re-run to upgrade):

brew install lucaGazzola/forgeo/forgeo          # Homebrew, no Python needed
curl -fsSL https://forgeo.org/install.sh | bash  # binary or pip fallback
pipx install forgeo-cli                          # Python 3.11+

2. Init

forgeo init

Wizard in your project root. Creates forgeo.yaml and .forgeo/ (backlog, logs, blockers). Prompts for backlog provider (file / github / gitlab / jira / http) and agent command. For issue providers it offers a PAT or OAuth login (forgeo auth login → ~/.config/forgeo/tokens/); GitHub repository detection is automatic when possible, while Jira asks for its URL and JQL.

3. Fill the backlog

# file provider: edit .forgeo/backlog.json (see Backlog format)
# github/gitlab/jira/http: configured in forgeo.yaml, then:
forgeo validate

# or add tasks from the dashboard:
forgeo web      # http://0.0.0.0:8790  (use -d to keep it running)

Forgeo web console

4. Start

forgeo validate   # dry run: config, repo, backlog, agent, locks
forgeo start      # daemon in background, one cycle per interval_minutes

Each cycle: pick task → run agent → commit/push (or REVIEW branch when review_mode: branch). Empty backlog → refactoring pass.

Day-to-day

forgeo status              # config, counts, next task, daemon state, last outcome
forgeo once                # one cycle in foreground, no daemon
forgeo run --task TASK-012 # run a specific OPEN task now
forgeo stop                # stop daemon
forgeo restart             # restart daemon
forgeo web                 # dashboard for all instances

forgeo web is open by default on 0.0.0.0:8790. On a shared host use forgeo web --token for bearer auth — see Web console.

Docker sandbox

Run the agent isolated:

agent_sandbox: docker
agent_sandbox_image: your-image   # must contain agent CLI + sh
agent_sandbox_network: none       # default, no network
agent_sandbox_mounts: [~/.claude] # read-only mounts

Repo is bind-mounted at the same path; task arrives as FORGEO_TASK. See Configuration.

Multiple repos

One config per repo, fully independent (own backlog, logs, locks). Use the instance registry:

forgeo instance add site-a --config /path/to/site-a/forgeo.yaml
forgeo start --name site-a
forgeo list          # all instances
forgeo web           # aggregate dashboard

Documentation

Topic Doc
Install, init, first cycle Getting Started
All forgeo.yaml keys Configuration
Task schema & statuses Backlog format
Agent env, exit codes, timeouts Agent contract
All CLI commands CLI reference
Dashboard & HTTP API Web console & HTTP API

Backlog providers: file · HTTP · Jira · GitHub · GitLab — file/HTTP exchange the full document; Jira/GitHub/GitLab sync issues individually. File backlogs are snapshotted (backlog.json.bak) before each run and restored if corrupt.

Dashboard: forgeo web aggregates every instance. For file/http it is the primary editor; for jira/github/gitlab it is a read-mostly mirror (links to native issues, surfaces BLOCKED/FAILED reasons and retry state).

Develop

pip install -e ".[dev]"
pytest

See CONTRIBUTING.md (quality gates: pytest, ruff check, mypy src/forgeo).

License

MIT — see LICENSE.

Metadata

Release files for forgeo-cli 1.12.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for forgeo-cli 1.12.1
File Size Uploaded
forgeo_cli-1.12.1.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for forgeo-cli 1.12.1
File Interpreter ABI Platform
forgeo_cli-1.12.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / forgeo_cli-1.12.1.tar.gz

Download URL forgeo_cli-1.12.1.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
6f342f43c4f6e00f5ba1b242b34f32143f4dcaa4934d55b22eb02432c6b91642
BLAKE2b-256 checksum
How to use checksums
d2286167dc234b64e6363dc6f654009598196b37b0ef364d3a1b1eef570d37b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / forgeo_cli-1.12.1-py3-none-any.whl

Download URL forgeo_cli-1.12.1-py3-none-any.whl
Size 181.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99780eb9760eda0789daae33fd7a6bffbfbe3a8525011856f63de35543cfbee6
BLAKE2b-256 checksum
How to use checksums
4218c5ca864e91431e6787c8e4c29c806ea8982f9eee6aafcb69a7583923ac9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.12.1 This release

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page