An AI software-engineer that triages GitHub issues, plans, implements, and reviews changes on your repos using cheap OpenRouter models via the opencode harness.
Project description
cheaphelp
An AI software-engineer for your GitHub repositories. cheaphelp installs as a background service on your machine, watches the repos you register, and runs a team of narrow AI agents — powered by cheap OpenRouter models through the opencode terminal harness — to triage issues, plan work, implement it, and open pull requests for human review.
Status: full pipeline wired and exercised live. All roles run end-to-end against a real repository; expect to keep tuning prompts and hardening edge cases.
Install
The recommended way to install the cheaphelp CLI on your machine:
pipx install cheaphelp
# or, if you don't use pipx:
pip install --user cheaphelp
For development (running from a clone, contributing, or testing unreleased
changes), use uv sync inside the clone and invoke the CLI as
uv run cheaphelp … — see Quick start step 1.
Quick start
# 1. (Development install — end users should `pipx install cheaphelp`, see
# the Install section above.) Clone, sync deps, and install the
# `cheaphelp` command globally.
git clone https://github.com/jacotay7/cheaphelp.git
cd cheaphelp
uv sync # install deps (needed before tool install)
uv tool install --from . cheaphelp # puts `cheaphelp` on $PATH
# 2. Create your machine-local workspace (~/.cheaphelp) and store secrets.
# Prompts for your tokens, or pass them as flags / set them later.
cheaphelp init
# 3. Check everything is wired up.
cheaphelp doctor
# 4. Register a repo to work on.
cheaphelp repo add owner/name
cheaphelp repo list
# 5. Dry-run one tick (shows what it *would* do, no changes).
cheaphelp run --dry-run
# 6. Run it for real (responder engages open issues).
cheaphelp run
# 7. Or drain the whole backlog now: repeat ticks until one is idle.
cheaphelp run --continuous
# 8. Install the background timer (default every 10 minutes; each firing
# runs `cheaphelp run --continuous` by default, see the docs).
cheaphelp systemd install --interval 10m
cheaphelp systemd status
Upgrading. After pulling new code, re-run
uv tool install --from . --reinstall cheaphelpto refresh the global command. A plaingit pullupdates the source tree but does NOT refresh the installed binary, anduv run cheaphelpwould then diverge from your checkout.
Documentation
- Getting started — install, requirements, running modes
- Pipeline — how the agents collaborate and the quality gate
- Configuration —
config.jsonfields, models, budget knobs - Workspace — files cheaphelp writes to disk
- Sandboxing — how agents are isolated and its limits
- Cost tracking — daily budget and per-issue cost reporting
- Background service — running under the systemd timer
- Dev guide — for contributors (testing, source layout, mocking opencode)
For contributors
See CONTRIBUTING.md and the Dev guide.
Project details
Release history Release notifications | RSS feed
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 cheaphelp-1.0.0.tar.gz.
File metadata
- Download URL: cheaphelp-1.0.0.tar.gz
- Upload date:
- Size: 165.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e29f96c5d94e49d148ee8b3f691331411d7e7fa94baff640c6d94cdb1d0432ef
|
|
| MD5 |
b0508b6043b0cfb3a2b14a8fd030d560
|
|
| BLAKE2b-256 |
91695e98fbf093af02d36aeceec7a61340b52932e219d5f46b4116d9f08362af
|
Provenance
The following attestation bundles were made for cheaphelp-1.0.0.tar.gz:
Publisher:
release.yml on jacotay7/cheaphelp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cheaphelp-1.0.0.tar.gz -
Subject digest:
e29f96c5d94e49d148ee8b3f691331411d7e7fa94baff640c6d94cdb1d0432ef - Sigstore transparency entry: 1822592406
- Sigstore integration time:
-
Permalink:
jacotay7/cheaphelp@e643f66062faa094e58ddd590d26abfd7b03df2b -
Branch / Tag:
refs/tags/1.0.0 - Owner: https://github.com/jacotay7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e643f66062faa094e58ddd590d26abfd7b03df2b -
Trigger Event:
push
-
Statement type:
File details
Details for the file cheaphelp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: cheaphelp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 95.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d680ee9eacc3eaae2a758b95648c214623d557056d91f6b930372c90cdf2c06
|
|
| MD5 |
6ef752cdf76100ce7fa4adec25dcc84b
|
|
| BLAKE2b-256 |
093594176cc740ea90491bd31f2c81cc7051b81bbff3ba6eac147bacaaff5de5
|
Provenance
The following attestation bundles were made for cheaphelp-1.0.0-py3-none-any.whl:
Publisher:
release.yml on jacotay7/cheaphelp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cheaphelp-1.0.0-py3-none-any.whl -
Subject digest:
6d680ee9eacc3eaae2a758b95648c214623d557056d91f6b930372c90cdf2c06 - Sigstore transparency entry: 1822592415
- Sigstore integration time:
-
Permalink:
jacotay7/cheaphelp@e643f66062faa094e58ddd590d26abfd7b03df2b -
Branch / Tag:
refs/tags/1.0.0 - Owner: https://github.com/jacotay7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e643f66062faa094e58ddd590d26abfd7b03df2b -
Trigger Event:
push
-
Statement type: