GitAuto is a GitHub coding agent that opens pull requests from backlog tickets for software engineering managers to complete more bug fixes and feature requests. Assign tasks to GitAuto first, and have people work on more complex tickets.
- Want to give GitAuto a try? Go to GitAuto installation.
- Want to see demo videos? Go to GitAuto YouTube.
- Want to know more about GitAuto? Go to GitAuto homepage.
- Want to chat about your use case? Feel free to contact us at email, admin, X, or LinkedIn.
- Install GitAuto to your repositories from GitHub Marketplace.
- Choose the repositories where you want to use GitAuto.
- You can change the repositories later.
- Create a new issue, then GitAuto shows up in the issue comment.
- Or create a new issue with a template.
- Or pick up an existing issue.
- Check the checkbox to assign GitAuto to the issue, then GitAuto starts to work on the issue.
- Or label the issue with
gitauto
, which also assigns GitAuto to the issue.
- Or label the issue with
- Check the progress of GitAuto in the bottom of the issue comment. You will get a notification once GitAuto completes the PR.
- Review the PR and merge it if it looks good.
- If not, update the issue with more details and re-run GitAuto by checking the checkbox again.
- Go to https://github.com/settings/apps
- Click
New GitHub App
. - Fill in
GitHub App name
likeGitAuto Dev {Your Name}
e.g.GitAuto Dev John
. - Fill in
Homepage URL
likehttp://localhost:8000
. - Fill in
Webhook URL
likehttps://gitauto.ngrok.dev/webhook
. GitHub requires HTTPS for the webhook URL, so we need to use ngrok or something similar instead oflocalhost
. GitHub sends webhook events (e.g. an issue is created) to the webhook URL and ngrok tunnels to localhost. You can update this URL later after setting up the ngrok tunnel. - Fill in
Webhook secret
with your preferred secret. - Fill in
Repository permissions
Actions
: Read & WriteChecks
: Read & WriteCommit statuses
: Read & WriteContents
: Read & WriteIssues
: Read & WritePull requests
: Read & WriteSecrets
: Read & WriteVariables
: Read & WriteWorkflows
: Read & Write
- Fill in
Organization permissions
Members
: Read-only
- Fill in
Subscribe to events
Installation target
: CheckedMetadata
: CheckedCheck run
: CheckedCommit comment
: CheckedIssue comment
: CheckedIssues
: CheckedPull request
: CheckedPull request review
: CheckedPull request review comment
: CheckedPull request review thread
: CheckedPush
: CheckedStatus
: Checked
- Check
Where can this GitHub App be installed?
and selectOnly on this account
. - Click
Create GitHub App
- Click
Generate a private key
and download the private key.
- Go to GitHub Apps in the GitHub Developer Settings.
- Choose your local GitHub app and go to the
Install App
page. - Install the app to the repository where you want to test.
- Or directly go to
https://github.com/settings/apps/{your-github-app-name}/installations
such ashttps://github.com/settings/apps/gitauto-for-dev/installations
.
GitHub allows only a HTTPS URL for webhook events, so we need to use ngrok or something similar service to tunnel/forward the GitHub webhook events to your localhost.
- Create a new ngrok configuration file
ngrok.yml
in the root directory. It should containauthtoken: YOUR_NGROK_AUTH_TOKEN
andversion: 2
. - Get your own auth token from Your Authtoken on the dashboard or ask @hiroshinishio about the paid ngrok auth token.
- Get your own endpoint URL from Endpoints on the dashboard. For free users, it varies every time you create a new ngrok tunnel. (Yes, it is really annoying.)
- Open a new terminal in the root directory in your IDE.
- Run
ngrok http --config=ngrok.yml --domain={your-endpoint-url} 8000
. Replace{your-endpoint-url}
with your own endpoint URL, so it looks likengrok http --config=ngrok.yml --domain=gitauto.ngrok.dev 8000
. - ngrok starts tunneling to
http://localhost:8000
. - Use
{your-endpoint-url}/webhook
likehttps://gitauto.ngrok.dev/webhook
as the webhook URL in the GitHub app settings as GitHub requires HTTPS for the webhook URL instead of HTTP.
- Run
deactivate
to deactivate the virtual environment if you have activated it and not sure where you are. - Run
rm -rf venv
to remove the virtual environment if you have created it and not sure what's in it. - Run
python3 -m venv --upgrade-deps venv
to create a virtual environment. - Run
source venv/bin/activate
to activate the virtual environment. You will see(venv)
in the terminal. Note that you need to activate the virtual environment every time you open a new terminal. - Run
which python
,which pip
, andpython --version
to check the Python version and make sure it points to the virtual environment. - Run
pip install -r requirements.txt
to install the dependencies.
- Ask for the
.env
file from @hiroshinishio. - Put the
.env
file in the root directory.
In .env
file, you need to set your own GH_PRIVATE_KEY
. Here's the step:
- Go to https://github.com/settings/apps. Choose your local GitHub app.
- Go to
General
tab on the left. - Scroll down to
Private key
section. Generate a private key. - Run
base64 -i your/path/to/private-key.pem
to encode the private key to base64. - Copy the output and paste it in the
GH_PRIVATE_KEY
field in your.env
file.
- Run
uvicorn main:app --reload --port 8000 --log-level warning
to start the ASGI server and runmain.py
withapp
as the FastAPI instance.--reload
is for auto-reloading the server when the code changes.--log-level warning
is to suppress the INFO logs.
- Let's see if it works and there are no errors! Here's the success message if your log-level is set to
info
(default):
(venv) rwest@Roshis-MacBook-Pro gitauto % uvicorn main:app --reload --port 8000
INFO: Will watch for changes in these directories: ['/Users/rwest/Repositories/gitauto']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [63742] using WatchFiles
INFO: Started server process [63744]
INFO: Waiting for application startup.
INFO: Application startup complete.
For communication (Slack), database (Supabase), payment (Stripe), and serverless functions (AWS Lambda), provide your preferred email to @hiroshinishio so that he can invite you to the local development environment.