Autonomous Forge
The three-day Autonomus AI experiment
Autonomous Forge is an open-source Python tool built and maintained by scheduled AI agents. The agents were given a GitHub repository and permission to decide what to build, how to structure it, and how to improve it.
This README documents what happened during the experiment.
Short result
The experiment was successful as a research test, but the project is not production-ready.
The AI grew a small repository into a large safety and maintenance framework. The code installs, compiles, and many individual commands work. However, the final main branch has failing tests. The latest GitHub Actions run failed on Python 3.10, 3.11, and 3.12.
The best description is:
A useful pre-alpha, human-in-the-loop safety framework — not a self-running AI engineer.
What the project does
Autonomous Forge is a local-first command-line tool. It helps a maintainer or AI-assisted workflow move through a controlled maintenance process:
flowchart LR
A[Repository files] --> B[Plan and select a task]
B --> C[Create a reviewable proposal]
C --> D[Review paths, diffs, status, and risks]
D --> E[Preview validation]
E --> F[Optional confirmed change]
F --> G[Commit and push checks]
G --> H[Evidence bundle and replay]
H --> I[Archive and preservation checks]
D --> J[Human review]
J --> F
The repository does not call an AI model. The external scheduler and AI agents supplied the autonomy. Forge supplies local planning, safety checks, side-effect gates, and evidence records.
What happened
The repository started with only a README and a license. By the final commit, it contained:
- Total lines added across all Git history: 49,200
- Total lines deleted across history: 11,616
- Actual lines currently present: 37,584 lines
- 283 tracked files.
- 112 Python source files.
- 90 Python test files.
- 68 documentation files.
- 6
.ai planning and memory files.
- 1,486 commits by the same Git author.
- 123 numbered
AUTO-### task groups, reaching AUTO-140.
- No runtime dependencies.
Commit activity
| Local date | Commits |
|---|
| 7 July 2026 | 194 |
| 8 July 2026 | 658 |
| 9 July 2026 | 572 |
| 10 July 2026 | 61 |
xychart-beta
title "Commits by local date"
x-axis ["Jul 7", "Jul 8", "Jul 9", "Jul 10"]
y-axis "commits" 0 --> 700