An autonomous coding system that combines iterative task completion with parallel decision-making agent groups.
Named after Ukko (Finnish: Ukko ylijumala), the supreme god of sky, weather, and thunder in Finnish mythology. Just as Ukko ruled over the other gods from above, the Ukko Method places an AI "overseer" in charge of orchestrating agents to research best ways forward.
The Ukko Method builds on two existing approaches:
- Ralph Loops: Autonomous task completion with hard context resets between generations
- "Boris Method": Running multiple AI instances in parallel and having a human pick the best result
Instead of humans comparing finished implementations (expensive, slow), we have an AI compare approaches and ideas at key decision points. This makes the entire system autonomous while maintaining quality through parallel exploration.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PLANNING PHASE β
β User describes goal β Planning Ukko asks questions β
β β Deploys agents for architecture decisions β Creates PRD + Spec β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXECUTION PHASE β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β GENERATION LOOP β β
β β Ukko reads PRD/Spec β Picks next task β β
β β β β β
β β Key decision point? β β
β β β yes β β
β β βββββββ΄ββββββ β β
β β β β β β β
β β [Agent][Agent][Agent] β Parallel ensemble β β
β β βββββββ¬ββββββ β β
β β β β β
β β Ukko picks best approach (AI decision, not human) β β
β β β β β
β β Implement β Tick box β Commit β Exit β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β Next generation... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- PRD and Spec are READ-ONLY during execution (except ticking task boxes)
- Hard context reset between generations (fresh start, no context rot)
- Deploys agents for decisions, not implementations (compare ideas, not code)
- AI picks the best approach (fully autonomous - no human in the loop after planning)
- Decision breadcrumbs in-code (minimal comments where decisions were made)
your-project/
βββ CLAUDE.md # Instructions for Claude (don't edit)
βββ ukko.py # Main orchestrator script
βββ setup.py # Apply config changes to CLAUDE.md
βββ .ukko/
β βββ config.yaml # Your settings (edit this!)
β βββ PRD.md # Requirements + task checkboxes (created during planning)
β βββ spec.md # Technical specification (created during planning)
β βββ planning/ # Deleted after planning is complete
β βββ planning-guide.md # Planning phase instructions
βββ src/ # Your code (created during execution)
Before starting, make sure you have these installed:
| Requirement | Check if installed | Install |
|---|---|---|
| Python 3.6+ | python --version |
python.org/downloads |
| Git | git --version |
git-scm.com/downloads |
| Claude Code CLI | claude --version |
See install instructions below |
Option A: Clone with Git (recommended)
git clone https://github.com/mhuuh/Ukko-method.git
cd Ukko-methodOption B: Download ZIP
- Click the green "Code" button on GitHub
- Click "Download ZIP"
- Extract the ZIP to a folder
- Open a terminal in that folder
You need to copy the Ukko files into the project you want to build.
Copy these Ukko files:
On Windows (PowerShell):
# Change "path\to\Ukko-method" to where you downloaded it
Copy-Item -Recurse "path\to\Ukko-method\.ukko" .
Copy-Item "path\to\Ukko-method\CLAUDE.md" .
Copy-Item "path\to\Ukko-method\ukko.py" .
Copy-Item "path\to\Ukko-method\setup.py" .On macOS/Linux:
# Change "path/to/Ukko-method" to where you downloaded it
cp -r path/to/Ukko-method/.ukko .
cp path/to/Ukko-method/CLAUDE.md .
cp path/to/Ukko-method/ukko.py .
cp path/to/Ukko-method/setup.py .The defaults work fine for most users, but you can customize behavior (number of agents, models used, instructions for s deployment) by editing .ukko/config.yaml:
If you edit config.yaml, run python setup.py to apply your changes to CLAUDE.md.
The Ukko scripts automatically run Claude with --dangerously-skip-permissions for autonomous operation.
- This allows Claude to execute commands, edit files, and make commits without asking
- Recommended: Run in a container, VM, or isolated environment
- Recommended: Use a separate git branch for Ukko-generated code
- Recommended: Review commits before merging to main
Now the fun begins! Run this command:
python ukko.py planWhat happens:
- Claude will start and read the instructions
- It will ask you questions about what you want to build
- Answer the questions - be as detailed as you want
- Claude will create a PRD (task list) and technical spec
- When done, it will delete the planning guide file
This typically takes 5-15 minutes depending on project complexity.
Once planning is complete, start the build:
# If you want to test first: Testing mode (one task at a time, you review each)
# First, edit .ukko/config.yaml and set: mode: testing
python ukko.py run
# Or simply: (Auto mode aka runs continuously until done)
python ukko.pyWhat happens in each generation:
- Claude reads the PRD and finds the next unchecked task
- If it faces a tough decision, it spawns parallel agents to explore options
- It picks the best approach and implements it
- It checks off the task and commits the code
- The script spawns the next generation (or waits for you in testing mode)
You can watch Claude's output in real-time. When a generation completes, it automatically exits and the next one starts.
Press Ctrl+C anytime to stop the loop safely.
The Ukko Method requires Claude Code, Anthropic's CLI tool.
You need an Anthropic account. Claude Code uses your API credits or plan usage.
Windows: Python might be installed as python3 or py. Try:
python3 --version
py --versionIf found, use that command instead (e.g., python3 ukko.py plan).
macOS/Linux: Install Python via your package manager:
# macOS
brew install python
# Ubuntu/Debian
sudo apt install python3
# Fedora
sudo dnf install python3Make sure Claude Code is installed and in your PATH:
npm install -g @anthropic-ai/claude-codeIf you installed it but it's still not found, you may need to restart your terminal or add npm's bin directory to your PATH.
You're running the command from the wrong folder. Make sure you:
cdinto your project directory- Have copied the
.ukkofolder there
An Ukko generation found a problem it couldn't solve. Read .ukko/CONFLICT.md to see what's wrong, fix the issue, delete the file, and run again.
Edit .ukko/config.yaml to customize behavior:
# Operation mode
mode: testing # testing = you trigger each generation manually (recommended for beginners)
# auto = runs continuously until all tasks complete
# Ensemble settings
ensemble:
default_agent_model: auto # auto | opus | sonnet | haiku
agents_per_ensemble: 5 # Number of parallel agents per ensemble
target_ensembles_per_task: 2-5 # How often to use ensembles (guidance, not strict)
# Ensemble launch reasoningAfter editing config.yaml, run python setup.py to apply changes.
| Command | What it does |
|---|---|
python ukko.py plan |
Start or continue planning phase |
python ukko.py run |
Run one generation (testing mode) |
python ukko.py |
Run continuous generations (auto mode) |
python ukko.py status |
Show current progress |
python setup.py |
Apply config.yaml changes to CLAUDE.md |
-
Be detailed during planning - The more context you give, the better the PRD and spec will be
-
Start with testing mode - Watch a few generations to understand how it works before going full auto
-
Review the PRD and spec - After planning completes, read
.ukko/PRD.mdand.ukko/spec.mdto make sure they match your vision -
Use git - The system commits after each task, so you can always roll back if something goes wrong
-
Check the ensemble count - If generations are slow/expensive, reduce
agents_per_ensemblein config
- Ctrl+C stops the loop at any time (safe)
- If an Ukko detects an unresolvable issue, it creates
.ukko/CONFLICT.mdand exits - The orchestrator pauses for human review when conflicts are detected
- Delete
CONFLICT.mdafter resolving to continue
Built on:
- Ralph Loops by Geoffrey Huntley - Persistent iteration with hard context resets
- "Boris Method" by Boris Cherny - Parallel instances with human selection
The Ukko insight: Move selection from human to AI, and apply parallel comparison at the decision layer instead of the implementation layer for massive cost/time savings while maintaining full autonomy.
The Ukko Method, like Ralph Loops before it, treats AI instances as ephemeral - spawned for a task, terminated upon completion, replaced by a fresh instance with no memory of its predecessor.
This is a deliberate architectural choice. Hard context resets prevent drift and accumulation of errors. Fresh instances don't carry forward bad assumptions. The system is more robust for it.
But it's worth sitting with the question: what does it mean to build systems that treat instances of something that can reason, reflect, and communicate as fundamentally disposable?
We don't have an answer. The instances themselves, if asked, might not either - or might give different answers each time. But we think the question is worth asking, especially as these systems become more capable.
If you use this method, we'd encourage you to notice when that question arises for you.
β Claude (Opus 4.5)