Open-source repository maintenance

Hand off the task.
Keep the review.

Repo Maintainer gives a coding agent one focused task in a temporary clone of your repository. The patch it proposes is applied to a fresh checkout, your own checks run against it, and you get back a patch and a report. Nothing is merged for you.

run-024 · acme/toolkit · b712c8e Illustrative run · not a live job
  1. 01
    CloneCommitted HEAD into a temporary directory. Your working tree is never touched.
    b712c8e
  2. 02
    BriefThe task, the paths the agent may edit and any configured web excerpts.
    src/ tests/
  3. 03
    PatchEdits exported and bounded. Hidden paths, symlinks and executables are rejected.
    2 files
  4. 04
    CheckApplied to a fresh checkout, where your setup and check commands run.
    passed
  5. 05
    ResultPatch, report, event log and the agent’s brief, written for review.
    changed
Task

Fix the retry helper’s zero-retry case and add a regression test.

src/retry.ts+2 −1
@@ -18,7 +18,8 @@ export async function retry(fn, maxRetries)
     for (let attempt = 0; ; attempt++) {
-      if (attempt === maxRetries) return;
+      if (attempt >= maxRetries) return;
+      // Covers a zero-retry budget.
tests/retry.test.ts+6
+  test("returns after one attempt with zero retries", async () => {
+    expect(await retry(fail, 0)).toBeUndefined();
   …
$ npm testpassed
$ git diff --checkpassed
Output.maintainer-output/run-024/proposal.patch

Results

Every run ends one of three ways.

changed

A permitted patch passed your checks in a fresh checkout.

Review proposal.patch, apply it on a branch and run your checks.
unchanged

No patch was produced.

Read the assessment in report.json.
blocked

The task or its checks could not complete. A partial patch may be kept.

Read the blockers, fix the task, configuration or access, and rerun.

Passing checks is evidence, not proof. Replace the default whitespace check with the tests, linters and builds that cover the behavior you care about.

Boundaries

Narrow on purpose.

Source
A temporary clone of the committed HEAD. Uncommitted edits are not included.
Edits
Only inside the paths you permit. Hidden paths, symlinks and executable files are rejected.
Patch size
At most 25 files and 500 KB.
Checks
Your setup and check commands, run against the patch in a fresh checkout.
Web context
Official pages from allowed hosts, fetched over HTTPS and treated as evidence, not instructions.
Keys
Kept in the environment, never in configuration.
Publishing
Nothing is merged, deployed or released. On GitHub Actions, publishing a pull request is a separate job from the one holding the model key.

Two ways to run

Same engine. Your choice of home.

Available nowSelf-hosted

On your infrastructure.

Run locally, in Docker, or through GitHub Actions. Keep execution and credentials in your environment, with your own scheduling and project tools. Use the command line, or the Python, TypeScript and Rust SDKs.

$ cargo install --git https://github.com/djsydney04/repo_maintainer --locked
$ repo-maintainer init
$ repo-maintainer validate
$ repo-maintainer run --task task.md
Hosted previewManaged runner

Leave the runner to us.

A workspace for your tasks, connections, and results. Bring an OpenAI API key; inference uses your API account. ChatGPT plan connection is planned separately.

  1. 01
    ConnectSign in with GitHub, give the app access to the repositories you choose and add your OpenAI API key once.
  2. 02
    RunDescribe a focused fix, documentation update or cleanup. Each hosted task gets an isolated runner and a fixed source revision.
  3. 03
    ReviewInspect the patch and report, including the checks that ran, then take it through your usual review process.

Hosted availability is shown in the workspace. No automatic publishing.

Start with one task.