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://your-name.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. Each developer needs their own unique domain (e.g.,
wes.ngrok.dev
,john.ngrok.dev
) to avoid conflicts. - Update the
start.sh
script to use your specific ngrok domain.
To update your local branch with the latest changes from our default branch (main
), run the following commands:
git checkout your-branch
git pull origin main
For example:
git checkout wes
git pull origin main
If you have uncommitted changes, stash them first:
git stash # Save changes
git pull origin main
git stash pop # Reapply changes
- 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.
-
Update the start script with your ngrok domain:
# Edit start.sh and change this line: ngrok http --config=ngrok.yml --domain=your-name.ngrok.dev 8000
-
Make the start script executable:
chmod +x start.sh
-
Run the development environment:
./start.sh
This script will automatically:
- Create and activate virtual environment (if needed)
- Install dependencies (if needed)
- Start ngrok tunnel with your specific domain
- Start FastAPI server with visible logs
- Clean up both services when you press Ctrl+C
Important for multiple developers: Each developer must use a different ngrok domain in their start.sh
script to avoid conflicts. For example:
- Developer 1:
wes.ngrok.dev
- Developer 2:
john.ngrok.dev
When everything is working correctly, you should see:
From start.sh:
- ✅ Virtual environment activation
- ✅ ngrok tunnel started with your domain
- ✅ FastAPI server starting with logs below
FastAPI server:
- Server running on
http://localhost:8000
- Watching for file changes (auto-reload enabled)
- No error messages during startup
If you see any errors, check:
.env
file is present and configuredngrok.yml
is configured with your auth token- Your ngrok domain is available
- Port 8000 is not already in use
When GitAuto runs in production, it uses AWS Lambda. To view logs and debug issues:
Using AWS CLI:
aws logs tail /aws/lambda/pr-agent-prod --follow | grep -v -E "(START RequestId|END RequestId|REPORT RequestId)" | sed -E 's/[0-9]{4}\/[0-9]{2}\/[0-9]{2}\/\[\$LATEST\][a-f0-9]+ //'
Using AWS Console:
- Go to AWS CloudWatch Console
- Navigate to
Logs
>Log groups
- Find
/aws/lambda/pr-agent-prod
log group - Click on the latest log stream to view real-time logs
- Use the filter box to exclude system messages:
- "START RequestId" - "END RequestId" - "REPORT RequestId"
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.