A CLI tool that automatically fixes and merges GitHub PRs using AI agents
Project description
English | 日本語
Autoland
A CLI tool that automates the fix and merge workflow after creating PRs with Vibe Coding.
Overview
AI Autoland fully automates the post-review workflow for pull requests. When you integrate AI review tools like CodeRabbit or Claude Code Review into your CI, it automatically fixes the review feedback and executes the merge.
Key Features
- Automatic Fixes: Automatically fixes review feedback using Codex or Claude Code
- Automatic Merge: Automatically merges after fixes are completed
- Automatic detection and processing of open PRs
- Waiting for GitHub checks completion
- Automatic commit and push of fixes
- Automatic merge decision and execution
- Project hooks for loop start/end custom commands
- Two Operation Modes:
- Single Mode: Processes only one PR
- Watch Mode: Continuously monitors and processes new PRs
Prerequisites
- An AI code review tool (CodeRabbit, Claude Code Review, etc.) must be running in your CI
- Designed for use with Vibe Coding
gh(GitHub CLI)claudeorcodexcommand- Execution in a Git repository
Notes
- This tool does not include code review functionality. It must be used in combination with external CI review tools
- The free public version does not include code quality improvement features
- If you need code quality improvement features, please use the commercial version that will be released in the future
Installation
pipx install autoland
Please refer to https://pipx.pypa.io/latest/installation/ for pipx installation.
Usage
Run in the target repository directory:
autoland
Repository-specific instructions
Place an AUTOLAND.md file in the target repository to share project-specific guidance (coding standards, edge cases, required checks, etc.). Its content is passed to the coding agent together with the review context when requesting fixes.
Project hooks
Place an AUTOLAND.hooks.toml file in the repository root to run custom commands at loop boundaries.
hooks_enabled: Enable/disable all hooks for this projectevent = "loop_start": Run before each processing loop startsevent = "loop_end": Run after each processing loop ends (always executed byfinally)on_error = "continue" | "abort": Continue or stop autoland when hook fails
version = 1
hooks_enabled = true
[[hooks]]
name = "pre-loop"
event = "loop_start"
enabled = true
command = ["./scripts/pre_loop.sh"]
timeout_sec = 30
on_error = "continue"
[[hooks]]
name = "post-loop"
event = "loop_end"
enabled = true
command = ["./scripts/post_loop.sh"]
timeout_sec = 30
on_error = "continue"
Hook commands receive these environment variables:
AUTOLAND_HOOK_EVENTAUTOLAND_HOOK_LOOP_INDEXAUTOLAND_HOOK_RESULT(started,pushed,no_change,merged,unexpected_response,error)AUTOLAND_HOOK_PR_NUMBER
Workflow
- PR Detection: Selects the oldest open PR and checks out to the corresponding branch
- Checks Waiting: Waits for GitHub checks to complete
- Auto-fix: AI agent analyzes review comments and executes necessary fixes
- Push Changes: Commits fixes and posts a processing report as a comment
- Re-check: Checks for new comments and determines merge eligibility
- Execute Merge: Automatically merges if there are no issues
flowchart TD
Start(["Start"]) --> Use[["Usage<br>Run in target repository: <code>autoland</code>"]]
subgraph CLI["Process performed by CLI tool"]
direction TB
C0{"Are there any open PRs?"}
C1["Select oldest open PR and<br>checkout to corresponding branch"]
C2["Wait for GitHub checks to complete"]
C3["Launch fixing agent and<br>pass PR context"]
C6["Post agent-generated report<br>as PR comment"]
C4{"Did agent add commits?"}
C5["push"]
C8["Merge PR"]
end
subgraph AG["Coding Agent"]
direction TB
A1["Analyze context"]
A2{"Are there any issues?"}
A3["Implement necessary fixes and commit"]
A5["Create issues for out-of-scope problems<br>(if --create-issue enabled)"]
A4_fix["Output result report (fix details)"]
A4_ok["Output result report (no issues)"]
A_OUT["Report"]
end
Use --> C0
C0 -- Yes --> C1 --> C2
C0 -- No --> End(["End"])
C2 --> C3 --> A1 --> A2
A2 -- Yes --> A3 --> A5 --> A4_fix --> A_OUT
A2 -- No --> A5 --> A4_ok --> A_OUT
A_OUT --> C6
C6 --> C4
C4 -- No (mergeable) --> C8 --> End
C4 -- Yes (has changes to push) --> C5 --> C2
Design Principles
- CLI does not manage authentication credentials, leverages existing tools
- Complex decisions are delegated to AI, only mechanical decisions are implemented on the CLI side
- Timestamped log output for long-running operations
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file autoland-0.4.0.tar.gz.
File metadata
- Download URL: autoland-0.4.0.tar.gz
- Upload date:
- Size: 18.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ba1fcc98a6e711f396a23e4c41edcb4bace1c9acff31db5094360a553bae1ed
|
|
| MD5 |
b95817b7e69395c39513254fc1979f84
|
|
| BLAKE2b-256 |
76dedcd322a26892d6eb9256e922b7c2df83a84c3449754e22e353ad44966b90
|
File details
Details for the file autoland-0.4.0-py3-none-any.whl.
File metadata
- Download URL: autoland-0.4.0-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3a44ff906d5afc155de087829a3ba6ab0b9ea77824893fad0b2cc3c368cfce2
|
|
| MD5 |
058732af569084dd0beb9275065f5e5d
|
|
| BLAKE2b-256 |
b150fda68da6f93506463aa0ed85172331aa9a1eefe723194e650d925d6fad55
|