Skip to main content

ctrlrelay

License: Apache 2.0 PyPI Python Tests and lint

Assign an issue. Get a reviewed pull request. Answer questions from your phone.

ctrlrelay turns the coding agent you already use into a teammate that works your GitHub backlog in the background. It picks up issues, writes the code in a clean branch, opens a pull request, waits for CI, gets the change reviewed, and pings you on Telegram or Mattermost only when it truly needs you.

It runs on your own machine. Your code, your credentials, your agent subscription. No hosted service in the middle.

Documentation · Get started · Why ctrlrelay

Why ctrlrelay

Coding agents are great when you sit and watch them. ctrlrelay is for the work you don't want to sit and watch.

  • Your backlog is the to-do list. No new tool to learn. Assign an issue (or add a label) and the work starts. The result is a normal pull request your team already knows how to review.
  • Runs where your code already lives. ctrlrelay is a small program on your laptop or server — not a cloud service. Nothing leaves your machine except the calls your agent and GitHub already make. No per-seat platform fee on top of the agent you already pay for.
  • It asks instead of guessing. When the agent is stuck, you get the question in chat. You reply from your phone and the same session picks up where it stopped.
  • Safe by default. Every issue gets its own isolated copy of the repo. One job per repo at a time. Optional Linux sandbox that hides your secrets from the agent. Nothing merges without your rules allowing it.
  • Done means done. It waits for CI, fixes failing checks, and posts an independent review on the pull request — so what reaches you is ready to read, not a first draft.
  • Pick your agent per repo. Claude Code today, or OpenCode — which can run on a local model — for the repos where that fits.
  • Grows with you. Start on one laptop. Add more machines later; they share the work without stepping on each other.
  • Open source. Apache 2.0. Read every line of what runs on your machine.

What it does

  • Issues → pull requests. Watches every repo you choose and works each new issue end to end.
  • Questions in your chat. Telegram (a private bot) or Mattermost (a channel on your own server).
  • Automatic review. Every agent pull request gets a second-opinion review comment before you look at it.
  • Daily security sweep. Reviews Dependabot alerts and pull requests across your repos every morning.
  • Status page. See what each agent is doing, what is waiting, and what needs you — at a glance.
  • Many machines, one account. Spread work across machines, with one chat and one status page.
  • Settings follow you. Optional sync of your agent setup across machines through a private GitHub repo.

How it works

flowchart LR
    GH[("GitHub<br/>issues")] -->|new issue| CR["ctrlrelay<br/>on your machine"]
    CR -->|works in a clean branch| AG["Coding agent<br/>Claude Code · OpenCode"]
    AG -->|stuck?| CH["Your chat<br/>Telegram · Mattermost"]
    CH -->|your answer| AG
    AG -->|opens| PR["Pull request"]
    PR -->|CI + review| YOU(["You merge"])
  1. You assign an issue to yourself, or add a label you pick.
  2. ctrlrelay starts the agent in a fresh, isolated copy of the repo.
  3. If the agent has a question, it lands in your chat. Your reply goes straight back to the same session.
  4. A pull request opens. ctrlrelay waits for CI, fixes what fails, and posts a review.
  5. You merge — or ask for changes, like with any teammate.

Quick start

pipx install ctrlrelay
ctrlrelay setup          # finds your repos and writes your config
ctrlrelay poller start   # starts working assigned issues

You need Python 3.12+, the GitHub CLI, and a coding agent CLI. The getting started guide covers prerequisites, chat setup and running it as a background service.

Documentation

Everything lives at ainvirion.github.io/ctrlrelay:

Contributing

Contributions are welcome. Read the contributing guide and the code of conduct. First-time contributors sign a one-time Contributor Assignment Agreement in the pull request.

Security

Found a vulnerability? Please follow the security policy and open a private advisory — not a public issue.

License

Apache License 2.0 — see LICENSE.

Copyright (c) 2026 AInvirion LLC. All Rights Reserved.

Metadata

Release files for ctrlrelay 0.23.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ctrlrelay 0.23.0
File Size Uploaded Provenance Actions
ctrlrelay-0.23.0.tar.gz 1.2 MB With provenance Details for ctrlrelay-0.23.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ctrlrelay 0.23.0
File Interpreter ABI Platform Actions
ctrlrelay-0.23.0-py3-none-any.whl Python 3 none any Details for ctrlrelay-0.23.0-py3-none-any.whl

Total release size: 1.8 MB

Release files / ctrlrelay-0.23.0.tar.gz

Download URL ctrlrelay-0.23.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
93864d63c69b24577218dde46f65e0242b8347c1ad6ffe656dd025cc9f2fdcb8
BLAKE2b-256 checksum
How to use checksums
0367a0f8aa2fb98ebe273b2866692116d9aca52c894e25e44e27bb0245aaa012
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / ctrlrelay-0.23.0-py3-none-any.whl

Download URL ctrlrelay-0.23.0-py3-none-any.whl
Size 573.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73b19e55c0bc12484a34e5e4c2213e58d973f19fcd3dfd161bbe5273a3bd2668
BLAKE2b-256 checksum
How to use checksums
34faceefa48457e8a27ab39058c9aef40bf44dacedda8ed539247355fcaab97c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for ctrlrelay 0.23.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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ctrlrelay-0.23.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.23.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page