Autobolt — Autonomous Coding Agent
Autobolt is an autonomous, self-improving SWE (Software Engineering) agent that writes code, runs tests, reads errors, fixes itself, and iterates until tests pass. It runs entirely locally via Ollama — no API costs, no data leaves your machine.
Quick Start
# Install
pip install -e .
# CLI — chat with the agent
autobolt
# Server — web UI with WebSocket streaming
autobolt-server
# → http://localhost:8000
# Benchmark — measure solve rate on 10 built-in tasks
python -m distributed_agents.benchmark --model llama3.2:3b
# Real-world benchmark — run against real GitHub issues
python -m distributed_agents.real_benchmark --max-per-repo 3
What It Does
| Mode | Command | What Happens |
|---|---|---|
| Chat | autobolt |
Interactive CLI. Type a task, agent uses tools to complete it. |
| Web UI | autobolt-server |
Dark-theme chat at http://localhost:8000. Toggle "Auto Iterate" to write → test → fix → retest autonomously. |
| Benchmark | benchmark |
Runs 10 predefined tasks (fib → rate-limiter). Reports solve rate, iterations, token cost, failure modes. |
| Real Benchmark | real_benchmark |
Discovers real GitHub issues via merged PR references, clones repos, runs agent, reports solve rate per repo. |
| Dashboard | http://localhost:8000/dashboard |
Charts: solve rate by difficulty/repo, token heatmap, iterations distribution. |
Architecture
┌─────────────────────────────────────────────────────┐
│ CLI (Rich) │ Web UI + WebSocket │
├─────────────────────────────────────────────────────┤
│ Iterative Developer │ LLM (Ollama) │ Tools │
│ write → test → fix → │ qwen3 / │ 12 fn │
│ retest (max 5 iters) │ llama3 │ calls │
├─────────────────────────────────────────────────────┤
│ Memory Store │ Project Scanner │ Change Planner │
│ (SQLite) │ deps/scripts │ dependency- │
│ │ /conventions │ ordered files │
├─────────────────────────────────────────────────────┤
│ Auto Quality Gate │ Benchmark Harness │
│ lint/typecheck │ built-in + real GitHub │
│ after every edit │ issue pipeline │
└─────────────────────────────────────────────────────┘
System Components
| Module | File | Purpose |
|---|---|---|
| LLM Client | llm.py |
Ollama /api/chat wrapper. 600s timeout, 2048 output tokens. |
| Tools | tools.py |
12 function tools: read, write, edit, bash, glob, grep, ls, web_search, web_fetch, git_status, git_diff, git_log, think. Permission system with session-level approval. |
| Iterative Developer | iterative_dev.py |
Core loop: write code → run tests → parse failures → feed back to LLM → retest. Parses pytest, jest, Go test, Cargo test output. Self-correction on no-tool-use (2 retries). |
| Memory Store | memory_store.py |
SQLite with 4 tables (projects, sessions, tasks, tool_uses). Keyword-overlap similarity recall injects past context into system prompt. |
| Project Scanner | project_scanner.py |
Auto-detects project type, package manager, dependencies, frameworks, scripts, test/lint/typecheck commands, code conventions (tabs vs spaces, quotes, semicolons). |
| Auto Quality Gate | auto_quality.py |
Hooks after write/edit tools — auto-runs linter + typecheck, appends synthetic errors for LLM to fix before proceeding. |
| Change Planner | change_planner.py |
Uses LLM to plan file creation/modification order respecting cross-file dependencies before making changes. |
| GitHub Issue Scraper | github_scraper.py |
PR-first discovery: scans merged PRs → extracts referenced issue numbers. Filters by body length (>50 chars), diff size (<500 lines), test presence in diff. Installs repo dependencies. Checks out parent commit. Returns targeted test paths. |
| Real Benchmark Runner | real_benchmark.py |
Runs agent against real GitHub issues across 12 repos (pytest, django, pydantic, celery, redis-py, aiohttp, fastapi, flask, httpx, rich, requests, sentry). Reports solve rate, iteration efficiency, token cost, failure modes, per-repo breakdown. CSV export. |
| Built-in Benchmark | benchmark.py |
10 calibration tasks (3 easy, 4 medium, 3 hard). Automated JSON report + formatted console output with difficulty breakdown and failure mode analysis. |
| Task Queue | task_queue.py |
In-memory async job queue for long-running benchmarks. POST /benchmark → returns job_id → poll GET /tasks/{id}. Max 1 concurrent job. |
| Server | server.py |
FastAPI server. Endpoints: /chat, /iterate, /project, /sessions, /session/{id}, /task/{id}, /tasks, /tasks/{job_id}, /benchmark/results, /dashboard. WebSocket /ws. |
| CLI | main.py |
Rich-powered interactive CLI. Commands: dev <task>, iterate <task>, history, recall <query>, cost. Vision support (image paths). |
Benchmark Results (Calibration Suite)
Model: llama3.2:3b via Ollama (19 tok/s on M2 Pro)
| Difficulty | Solved | Rate | First Try | Avg Iters | Avg Tokens |
|---|---|---|---|---|---|
| Easy | 3/3 | 100% | 2/3 | 1.3 | 8,035 |
| Medium | 4/4 | 100% | 3/4 | 1.5 | 10,255 |
| Hard | 3/3 | 100% | 3/3 | 1.0 | 2,478 |
| Total | 10/10 | 100% | 8/10 (80%) | 1.3 | 7,256 |
Note: These are calibration tasks, not real-world GitHub issues. The same agent achieved 0% on real issues with a small model (qwen3:8b). The bottleneck is model capability, not the agent platform. Swap in a stronger model (DeepSeek V3, GPT-4o) and the infrastructure scales.
What It CAN'T Do (Yet)
| Gap | Cause | Status |
|---|---|---|
| Navigate large unfamiliar codebases | 3B-8B models lack the context window and reasoning depth for surgical fixes in 100K+ line repos | Model limit — needs 30B+ or API-grade |
| Distinguish "my fault" from pre-existing failures | Parent commit may have unrelated test failures | Mitigated via targeted test paths from PR diff |
| Install complex build dependencies | Some repos need compiled extensions, system packages | Partial — pip install works for pure Python |
| Run full test suites quickly | 12-15 tok/s on M2 Pro = 15-35 min per issue | Switch to faster model or API fallback |
Real-World Benchmark
12 configured repos with PR-first issue discovery. To run:
# Scan and run against all repos (takes hours on small models)
python -m distributed_agents.real_benchmark --max-per-repo 3 --max-retries 3
# Quick test on one issue
python -m distributed_agents.real_benchmark --issues "pytest-dev/pytest#14683"
# Export results as CSV
python -m distributed_agents.real_benchmark --export-csv results.csv
Requirements
- Python 3.10+
- Ollama with a model pulled (
llama3.2:3b,qwen3:8b, etc.) - Optional: GitHub CLI (
gh) for real-issue benchmark
License
MIT
Metadata
Release files for autobolt-cli 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| autobolt_cli-0.1.0.tar.gz | 28.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autobolt_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.8 kB
Release files / autobolt_cli-0.1.0.tar.gz
| Download URL | autobolt_cli-0.1.0.tar.gz |
|---|---|
| Size | 28.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d64c01252a15cf38919532b3acc8328374afccd8f602831312c24ba0b15b1be0
|
|
BLAKE2b-256 checksum How to use checksums |
9b0c8f15602710d548952b37c89c93da537cf8590f6d40be1bc87dcc2e15086c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / autobolt_cli-0.1.0-py3-none-any.whl
| Download URL | autobolt_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 32.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
405a0f6b6f536b21a1dbc6a6f26fe4617edaed7a3ad96fdd04f9f365d00651d0
|
|
BLAKE2b-256 checksum How to use checksums |
26ada653845adeb2fe053732907e330094e91416eafe170e3db38d49f5fa1916
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for autobolt-cli 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.