- Go to https://github.com/settings/apps
- Click
New GitHub App. - Fill in
GitHub App namelikeGitAuto Dev {Your Name}e.g.GitAuto Dev John. - Fill in
Homepage URLlikehttp://localhost:8000. - Fill in
Webhook URLwith your Smee channel URL (e.g.https://smee.io/your-channel-id). GitHub requires HTTPS for the webhook URL. Smee.io is GitHub's recommended webhook proxy for local development - it forwards webhook payloads to your localhost via the smee-client. See section 3-3 for setup. - Fill in
Webhook secretwith your preferred secret. - Fill in
Repository permissionsActions: Read & WriteChecks: Read & WriteCommit statuses: Read & WriteContents: Read & WriteIssues: Read & WritePull requests: Read & WriteSecrets: Read & WriteVariables: Read & WriteWorkflows: Read & Write
- Fill in
Organization permissionsMembers: Read-only
- Fill in
Subscribe to eventsInstallation 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 keyand download the private key.
- Go to GitHub Apps in the GitHub Developer Settings.
- Choose your local GitHub app and go to the
Install Apppage. - Install the app to the repository where you want to test.
- Or directly go to
https://github.com/settings/apps/{your-github-app-name}/installationssuch ashttps://github.com/settings/apps/gitauto-for-dev/installations.
GitHub requires HTTPS for webhook events. We use Smee.io (GitHub's recommended webhook proxy) to forward webhook payloads to your localhost.
- Go to https://smee.io and click
Start a new channel. - Copy the channel URL (e.g.
https://smee.io/abc123xyz). - Add
SMEE_URL="https://smee.io/abc123xyz"to your.envfile. - Set this same URL as the
Webhook URLin your GitHub App settings (section 3-1, step 5).
Each developer gets their own unique Smee channel URL - no conflicts, no paid plans needed.
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 mainFor example:
git checkout wes
git pull origin mainIf you have uncommitted changes, stash them first:
git stash # Save changes
git pull origin main
git stash pop # Reapply changes- Ask for the
.envfile from @hiroshinishio. - Put the
.envfile 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
Generaltab on the left. - Scroll down to
Private keysection. Generate a private key. - Run
base64 -i your/path/to/private-key.pemto encode the private key to base64. - Copy the output and paste it in the
GH_PRIVATE_KEYfield in your.envfile.
-
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 Smee.io webhook proxy (forwards GitHub webhooks to localhost)
- Start FastAPI server with visible logs
- Clean up both services when you press Ctrl+C
When everything is working correctly, you should see:
From start.sh:
- ✅ Virtual environment activation
- ✅ Smee.io webhook proxy started
- ✅ 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:
.envfile is present and configured withSMEE_URL- 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-prodlog 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"
Pull Request #123
└── Commit (sha: abc123)
└── check_suite (GitHub Actions)
├── Workflow: "ci" (.github/workflows/ci.yml)
│ ├── Job: build → check_run: "build"
│ ├── Job: test → check_run: "test"
│ └── Job: lint → check_run: "lint"
└── Workflow: "deploy" (.github/workflows/deploy.yml)
└── Job: deploy → check_run: "deploy"
For CircleCI hierarchy, see services/circleci/README.md.
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.