Skip to main content

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)
  • claude or codex command
  • 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 project
  • event = "loop_start": Run before each processing loop starts
  • event = "loop_end": Run after each processing loop ends (always executed by finally)
  • 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_EVENT
  • AUTOLAND_HOOK_LOOP_INDEX
  • AUTOLAND_HOOK_RESULT (started, pushed, no_change, merged, unexpected_response, error)
  • AUTOLAND_HOOK_PR_NUMBER

Workflow

  1. PR Detection: Selects the oldest open PR and checks out to the corresponding branch
  2. Checks Waiting: Waits for GitHub checks to complete
  3. Auto-fix: AI agent analyzes review comments and executes necessary fixes
  4. Push Changes: Commits fixes and posts a processing report as a comment
  5. Re-check: Checks for new comments and determines merge eligibility
  6. 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

autoland-0.4.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autoland-0.4.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

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

Hashes for autoland-0.4.0.tar.gz
Algorithm Hash digest
SHA256 1ba1fcc98a6e711f396a23e4c41edcb4bace1c9acff31db5094360a553bae1ed
MD5 b95817b7e69395c39513254fc1979f84
BLAKE2b-256 76dedcd322a26892d6eb9256e922b7c2df83a84c3449754e22e353ad44966b90

See more details on using hashes here.

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

Hashes for autoland-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3a44ff906d5afc155de087829a3ba6ab0b9ea77824893fad0b2cc3c368cfce2
MD5 058732af569084dd0beb9275065f5e5d
BLAKE2b-256 b150fda68da6f93506463aa0ed85172331aa9a1eefe723194e650d925d6fad55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page