Quick Start: Your First PR in 15 Minutes
This guide walks you through installing Pilot, configuring it for your repository, and getting your first automatically-generated pull request.
Prerequisites: A GitHub repository, a GitHub personal access token, and an Anthropic API key. Optionally, a Telegram bot token for the chat interface.
Install
brew tap alekspetrov/pilot
brew install pilotVerify the installation:
pilot --version
# pilot version v0.21.2Configure
Run the setup wizard
pilot initThis creates ~/.pilot/config.yaml with your project settings. The wizard walks you through selecting your ticket source, notification channels, and project paths.
Set environment variables
# Required
export ANTHROPIC_API_KEY="your-anthropic-api-key"
export GITHUB_TOKEN="your-github-personal-access-token"
# Optional: Telegram bot
export TELEGRAM_BOT_TOKEN="your-telegram-bot-token"Your GitHub token needs repo scope for reading issues and creating PRs. Create one at github.com/settings/tokens (opens in a new tab).
Start Pilot
# GitHub polling with dashboard
pilot start --github --dashboard
# Or with Telegram + autopilot
pilot start --github --telegram --autopilot=stage --dashboardYou should see the dashboard appear:
┌─ PILOT ─────────────────────────────────────────┐
│ Status: Running Mode: GitHub Polling │
│ Queue: 0 tasks Uptime: 12s │
│ │
│ Waiting for issues labeled "pilot"... │
└───────────────────────────────────────────────────┘Create Your First Ticket
Open a new terminal and create a GitHub issue:
gh issue create \
--title "Add health check endpoint" \
--label pilot \
--body "Create a GET /health endpoint that returns JSON with status ok and the current server timestamp. Add a test."No gh CLI? Create the issue directly on GitHub. The key is the pilot label — that's what triggers Pilot to pick it up.
Within 30 seconds, Pilot detects the issue and starts working. The dashboard updates in real-time:
⏳ Processing: Add health check endpoint
Implementing [████████████░░░░░░░░] 60% GH-12 32s
[14:35:15] Started Navigator session
[14:35:18] Analyzing codebase patterns...
[14:35:25] Creating health endpoint
[14:35:40] Adding route
[14:35:55] Writing tests...
✅ PR created: github.com/you/your-repo/pull/13Review and Merge
Pilot creates a PR with:
- Implementation following your codebase patterns
- Tests matching your existing test structure
- A clear PR description linking back to the issue
Review it like any team member's code:
gh pr view 13
gh pr diff 13If it looks good, merge it:
gh pr merge 13If you're running with --autopilot=stage, Pilot monitors CI automatically and merges once tests pass — no manual merge needed.
Suggested Starter Tickets
These are well-scoped tasks that work reliably as first tickets:
| Ticket | Why it works |
|---|---|
| "Add health check endpoint" | Simple, bounded, easy to verify |
| "Write tests for UserService" | Clear scope, follows existing test patterns |
| "Add loading spinner to Button component" | Small UI change with clear output |
| "Update README with setup instructions" | Documentation, low risk |
| "Add input validation to create endpoint" | Well-defined rules, testable |
Avoid for first tickets: Architecture changes, multi-service refactors, or tasks that require decisions about tradeoffs. Start with bounded, well-defined work to build confidence in the output quality.
Troubleshooting
Pilot doesn't pick up my issue
- Check the issue has the
pilotlabel (exact match, case-sensitive) - Verify
GITHUB_TOKENis set and hasreposcope - Confirm the repository matches your
config.yamlproject path - Check logs:
pilot start --github --dashboardshows polling activity
PR quality is low
- Initialize Navigator in your project:
claude /nav-init(inside Claude Code) - Add a
CLAUDE.mdfile with your code standards - Write more detailed ticket descriptions — treat them like you're briefing a junior developer
Token costs seem high
- Navigator reduces token usage by 92% — make sure it's initialized
- Check complexity routing: trivial tasks should use Haiku, not Opus
- Set budget limits in
config.yamlunderexecutor.budget
Next Steps
- Configuration reference — Full config.yaml options
- Autopilot modes — Dev, stage, and prod environments
- Telegram bot — Chat, research, plan, and execute from Telegram
- Why Pilot — The vision behind autonomous development