{"id":48148988,"url":"https://github.com/qf-studio/pilot","last_synced_at":"2026-04-18T11:21:48.636Z","repository":{"id":334703946,"uuid":"1142397834","full_name":"qf-studio/pilot","owner":"qf-studio","description":"AI that ships your tickets - autonomous dev pipeline with Claude Code","archived":false,"fork":false,"pushed_at":"2026-04-07T11:30:52.000Z","size":9727,"stargazers_count":309,"open_issues_count":5,"forks_count":25,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-07T12:02:31.386Z","etag":null,"topics":["agentic","agentic-workflow","ai-agent","ai-bots","ai-tools","autonomous-coding","claude","claude-code","dev-bot","devtools","open-code"],"latest_commit_sha":null,"homepage":"https://pilot.quantflow.studio/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qf-studio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"alekspetrov"}},"created_at":"2026-01-26T11:04:09.000Z","updated_at":"2026-04-07T11:06:27.000Z","dependencies_parsed_at":"2026-02-01T02:00:36.564Z","dependency_job_id":"eec99e04-80c3-4db1-aeaf-bb92e5b1a727","html_url":"https://github.com/qf-studio/pilot","commit_stats":null,"previous_names":["alekspetrov/pilot","qf-studio/pilot"],"tags_count":483,"template":false,"template_full_name":null,"purl":"pkg:github/qf-studio/pilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qf-studio%2Fpilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qf-studio%2Fpilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qf-studio%2Fpilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qf-studio%2Fpilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qf-studio","download_url":"https://codeload.github.com/qf-studio/pilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qf-studio%2Fpilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31641492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic","agentic-workflow","ai-agent","ai-bots","ai-tools","autonomous-coding","claude","claude-code","dev-bot","devtools","open-code"],"created_at":"2026-04-04T17:04:51.457Z","updated_at":"2026-04-12T21:03:40.941Z","avatar_url":"https://github.com/qf-studio.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cpre\u003e\n   ██████╗ ██╗██╗      ██████╗ ████████╗\n   ██╔══██╗██║██║     ██╔═══██╗╚══██╔══╝\n   ██████╔╝██║██║     ██║   ██║   ██║\n   ██╔═══╝ ██║██║     ██║   ██║   ██║\n   ██║     ██║███████╗╚██████╔╝   ██║\n   ╚═╝     ╚═╝╚══════╝ ╚═════╝    ╚═╝\n  \u003c/pre\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eAI that ships your tickets while you sleep\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/qf-studio/pilot/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/qf-studio/pilot?style=flat-square\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-BSL_1.1-blue.svg?style=flat-square\" alt=\"License: BSL 1.1\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/qf-studio/pilot/actions\"\u003e\u003cimg src=\"https://github.com/qf-studio/pilot/workflows/CI/badge.svg?style=flat-square\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/qf-studio/pilot\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/qf-studio/pilot?style=flat-square\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/K6mM8TzJ\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join%20Chat-5865F2?style=flat-square\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pilot.quantflow.studio\"\u003eDocs\u003c/a\u003e •\n  \u003ca href=\"#install\"\u003eInstall\u003c/a\u003e •\n  \u003ca href=\"#desktop-app\"\u003eDesktop\u003c/a\u003e •\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#how-it-works\"\u003eHow It Works\u003c/a\u003e •\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#cli-reference\"\u003eCLI\u003c/a\u003e •\n  \u003ca href=\"https://discord.gg/K6mM8TzJ\"\u003eDiscord\u003c/a\u003e •\n  \u003ca href=\"docs/DEPLOYMENT.md\"\u003eDeploy\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- TODO: Add demo.gif or YouTube embed after recording --\u003e\n\n---\n\n## The Problem\n\nYou have 47 tickets in your backlog. You agonize over which to prioritize. Half are \"quick fixes\" that somehow take 2 hours each. Your PM asks for status updates. Sound familiar?\n\n## The Solution\n\nPilot picks up tickets from GitHub, Linear, Jira, or Asana—plans the implementation, writes the code, runs tests, and opens a PR. You review and merge. That's it.\n\n```\n┌─────────────┐      ┌─────────────┐      ┌─────────────┐      ┌─────────────┐\n│   Ticket    │ ───▶ │   Pilot     │ ───▶ │   Review    │ ───▶ │   Ship      │\n│  (GitHub)   │      │  (AI dev)   │      │   (You)     │      │  (Merge)    │\n└─────────────┘      └─────────────┘      └─────────────┘      └─────────────┘\n```\n\n\u003cimg width=\"1758\" height=\"1124\" alt=\"pilot-preview-screenshot\" src=\"https://github.com/user-attachments/assets/faaff57a-a23e-4cee-a08a-b9fa08ae135d\" /\u003e\n\n\n\n## Install\n\n### Homebrew (recommended)\n\n```bash\nbrew tap qf-studio/pilot\nbrew install pilot\n```\n\n### Go Install\n\n```bash\ngo install github.com/qf-studio/pilot/cmd/pilot@latest\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/qf-studio/pilot\ncd pilot\nmake build\nsudo make install-global\n```\n\n### Desktop App\n\nDownload the desktop app from the [latest release](https://github.com/qf-studio/pilot/releases/latest):\n\n| Platform | Download |\n|----------|----------|\n| macOS (Universal) | `Pilot-Desktop-macOS-universal.dmg` |\n| Windows (x64) | `Pilot-Desktop-Windows-amd64-setup.exe` |\n| Linux (x64) | `Pilot-Desktop-Linux-amd64.tar.gz` |\n\n### Requirements\n\n- Go 1.22+ (build only)\n- [Claude Code CLI](https://github.com/anthropics/claude-code) 2.1.17+\n- OpenAI API key (optional, for voice transcription)\n\n## Quick Start\n\n```bash\n# 1. Initialize config\npilot init\n\n# 2. Start Pilot\npilot start --github              # GitHub issue polling\npilot start --telegram            # Telegram bot\npilot start --telegram --github   # Both\n\n# 3. Create a GitHub issue with 'pilot' label, or message your Telegram bot\n```\n\nThat's it. Go grab coffee. ☕\n\n## How It Works\n\n```\nYou label issue \"pilot\"\n        │\n        ▼\n┌───────────────────┐\n│  Pilot claims it  │  ← Adds \"pilot/in-progress\" label\n└───────┬───────────┘\n        │\n        ▼\n┌───────────────────┐\n│  Creates branch   │  ← pilot/GH-{number}\n└───────┬───────────┘\n        │\n        ▼\n┌───────────────────┐\n│  Plans approach   │  ← Analyzes codebase, designs solution\n└───────┬───────────┘\n        │\n        ▼\n┌───────────────────┐\n│  Implements       │  ← Writes code with Claude Code\n└───────┬───────────┘\n        │\n        ▼\n┌───────────────────┐\n│  Quality gates    │  ← Test, lint, build validation\n└───────┬───────────┘\n        │\n        ▼\n┌───────────────────┐\n│  Opens PR         │  ← Links to issue, adds \"pilot/done\"\n└───────┬───────────┘\n        │\n        ▼\n    You review\n        │\n        ▼\n      Merge 🚀\n```\n\n## Features\n\n**133 features implemented** across execution, intelligence, integrations, and infrastructure.\n\n### Core Execution\n\n| Feature | Description |\n|---------|-------------|\n| **Autopilot** | CI monitoring, auto-merge, feedback loop (dev/stage/prod modes) |\n| **Epic Decomposition** | Complex tasks auto-split into sequential subtasks via Haiku API |\n| **Self-Review** | Auto code review before PR push catches issues early |\n| **Sequential Execution** | Wait for PR merge before next issue (prevents conflicts) |\n| **Quality Gates** | Test/lint/build validation with auto-retry |\n| **Execution Replay** | Record, playback, analyze, export (HTML/JSON/MD) |\n\n### Intelligence\n\n| Feature | Description |\n|---------|-------------|\n| **Model Routing** | Haiku (trivial) → Opus 4.6 (standard/complex), auto-detected |\n| **Effort Routing** | Maps task complexity to Claude thinking depth |\n| **Research Subagents** | Haiku-powered parallel codebase exploration |\n| **Navigator Integration** | Auto-detected `.agent/`, skipped for trivial tasks |\n| **Cross-Project Memory** | Shared patterns and context across repositories |\n\n### Integrations\n\n| Feature | Description |\n|---------|-------------|\n| **Telegram Bot** | Chat, research, planning, tasks + voice \u0026 images |\n| **GitHub Polling** | Auto-pick issues with `pilot` label |\n| **GitLab / Azure DevOps** | Full polling + webhook adapters |\n| **Linear/Jira/Asana** | Webhooks and task sync |\n| **Daily Briefs** | Scheduled reports via Slack/Email/Telegram |\n| **Alerting** | Task failures, cost thresholds, stuck detection |\n\n### Infrastructure\n\n| Feature | Description |\n|---------|-------------|\n| **Dashboard TUI** | Sparkline metrics cards, queue depth, autopilot status |\n| **Persistent Metrics** | Token/cost/task counts survive restarts via SQLite |\n| **Hot Upgrade** | Self-update with `pilot upgrade` or `u` key in dashboard |\n| **Cost Controls** | Budget limits with hard enforcement |\n| **Multiple Backends** | Claude Code + OpenCode support |\n| **BYOK** | Bring your own Anthropic key, Bedrock, or Vertex |\n\n## Autopilot Modes\n\nControl how much autonomy Pilot has:\n\n```bash\n# Fast iteration - skip CI, auto-merge\npilot start --autopilot=dev --github\n\n# Balanced - wait for CI, then auto-merge\npilot start --autopilot=stage --github\n\n# Safe - wait for CI + human approval\npilot start --autopilot=prod --github\n```\n\n## Telegram Integration\n\nTalk to Pilot naturally - it understands different interaction modes:\n\n| Mode | Example | What Happens |\n|------|---------|--------------|\n| 💬 **Chat** | \"What do you think about using Redis?\" | Conversational response, no code changes |\n| 🔍 **Question** | \"What files handle authentication?\" | Quick read-only answer |\n| 🔬 **Research** | \"Research how the caching layer works\" | Deep analysis sent to chat |\n| 📐 **Planning** | \"Plan how to add rate limiting\" | Shows plan with Execute/Cancel buttons |\n| 🚀 **Task** | \"Add rate limiting to /api/users\" | Confirms, then creates PR |\n\n```\nYou: \"Plan how to add user authentication\"\nPilot: 📐 Drafting plan...\nPilot: 📋 Implementation Plan\n       1. Create auth middleware...\n       2. Add JWT token validation...\n       [Execute] [Cancel]\n\nYou: [clicks Execute]\nPilot: 🚀 Executing...\nPilot: ✅ PR #142 ready: https://github.com/...\n```\n\nSend voice messages, images, or text. Pilot understands context.\n\n## Dashboard\n\nReal-time visibility into what Pilot is doing:\n\n```\n┌─ Pilot Dashboard ─────────────────────────────────────────┐\n│                                                           │\n│  Status: ● Running    Autopilot: stage    Queue: 3        │\n│                                                           │\n│  Current Task                                             │\n│  ├─ GH-156: Add user authentication                       │\n│  ├─ Phase: Implementing (65%)                             │\n│  └─ Duration: 2m 34s                                      │\n│                                                           │\n│  Token Usage          Cost                                │\n│  ├─ Input:  124k      Today:    $4.82                     │\n│  ├─ Output:  31k      This Week: $28.40                   │\n│  └─ Total:  155k      Budget:    $100.00                  │\n│                                                           │\n│  Recent Tasks                                             │\n│  ├─ ✅ GH-155  Fix login redirect      1m 12s   $0.45     │ \n│  ├─ ✅ GH-154  Add dark mode toggle    3m 45s   $1.20     │\n│  └─ ✅ GH-153  Update dependencies     0m 34s   $0.15     │\n│                                                           │\n└───────────────────────────────────────────────────────────┘\n```\n\n```bash\npilot start --dashboard --github\n```\n\n## Environment Variables\n\nPilot uses Claude Code for AI execution:\n\n| Variable | Description |\n|----------|-------------|\n| `ANTHROPIC_API_KEY` | Custom Anthropic API key (uses your own account) |\n| `ANTHROPIC_BASE_URL` | Custom API endpoint (proxies, enterprise) |\n| `CLAUDE_CODE_USE_BEDROCK` | Set to `1` for AWS Bedrock |\n| `CLAUDE_CODE_USE_VERTEX` | Set to `1` for Google Vertex AI |\n\n**Example: Using AWS Bedrock**\n```bash\nexport CLAUDE_CODE_USE_BEDROCK=1\nexport AWS_REGION=us-east-1\npilot start --github\n```\n\n## Configuration\n\nConfig location: `~/.pilot/config.yaml`\n\n```yaml\nversion: \"1.0\"\n\ngateway:\n  host: \"127.0.0.1\"\n  port: 9090\n\nadapters:\n  telegram:\n    enabled: true\n    bot_token: \"${TELEGRAM_BOT_TOKEN}\"\n    chat_id: \"${TELEGRAM_CHAT_ID}\"\n\n  github:\n    enabled: true\n    token: \"${GITHUB_TOKEN}\"\n    repo: \"owner/repo\"\n    pilot_label: \"pilot\"\n    polling:\n      enabled: true\n      interval: 30s\n\norchestrator:\n  execution:\n    mode: sequential           # \"sequential\" or \"parallel\"\n    wait_for_merge: true       # Wait for PR merge before next task\n    poll_interval: 30s\n    pr_timeout: 1h\n\nprojects:\n  - name: \"my-project\"\n    path: \"~/Projects/my-project\"\n    navigator: true\n    default_branch: main\n\ndaily_brief:\n  enabled: true\n  schedule: \"0 8 * * *\"\n  timezone: \"Europe/Berlin\"\n\nalerts:\n  enabled: true\n  channels:\n    - name: telegram-alerts\n      type: telegram\n      severities: [critical, error, warning]\n\nexecutor:\n  backend: claude-code          # \"claude-code\" or \"opencode\"\n```\n\n## CLI Reference\n\n### Core Commands\n\n```bash\npilot start          # Start with configured inputs\npilot stop           # Stop daemon\npilot status         # Show running tasks\npilot init           # Initialize configuration\npilot version        # Show version info\n```\n\n### `pilot start`\n\n```bash\npilot start                          # Config-driven\npilot start --telegram               # Enable Telegram polling\npilot start --github                 # Enable GitHub issue polling\npilot start --linear                 # Enable Linear webhooks\npilot start --telegram --github      # Enable both\npilot start --dashboard              # With TUI dashboard\npilot start --no-gateway             # Polling only (no HTTP server)\npilot start --sequential             # Sequential execution mode\npilot start --autopilot=stage        # Autopilot mode (dev/stage/prod)\npilot start -p ~/Projects/myapp      # Specify project\npilot start --replace                # Kill existing instance first\n```\n\n### `pilot task`\n\n```bash\npilot task \"Add user authentication\"                    # Run in cwd\npilot task \"Fix login bug\" -p ~/Projects/myapp          # Specify project\npilot task \"Refactor API\" --verbose                     # Stream output\npilot task \"Update docs\" --dry-run                      # Preview only\npilot task \"Implement feature\" --backend opencode       # Use OpenCode\n```\n\n### `pilot upgrade`\n\n```bash\npilot upgrade                    # Check and upgrade\npilot upgrade check              # Only check for updates\npilot upgrade rollback           # Restore previous version\npilot upgrade --force            # Skip task completion wait\npilot upgrade --no-restart       # Don't restart after upgrade\npilot upgrade --yes              # Skip confirmation\n```\n\n### Analytics Commands\n\n```bash\npilot brief                       # Show scheduler status\npilot brief --now                 # Generate and send immediately\npilot brief --weekly              # Generate weekly summary\n\npilot metrics summary             # Last 7 days overview\npilot metrics summary --days 30   # Last 30 days\npilot metrics daily               # Daily breakdown\npilot metrics projects            # Per-project stats\n\npilot usage summary               # Billable usage summary\npilot usage daily                 # Daily breakdown\npilot usage export --format json  # Export for billing\n\npilot patterns list               # List learned patterns\npilot patterns search \"auth\"      # Search by keyword\n```\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                          PILOT                              │\n├──────────────┬──────────────────────────────────────────────┤\n│ Gateway      │ HTTP/WebSocket server, routing               │\n│ Adapters     │ Telegram, Slack, GitHub, Jira, Linear, Asana │\n│ Executor     │ Claude Code process management               │\n│ Orchestrator │ Task planning, phase management              │\n│ Memory       │ SQLite + cross-project knowledge graph       │\n│ Briefs       │ Scheduled reports, multi-channel delivery    │\n│ Alerts       │ Failure detection, cost monitoring           │\n│ Metrics      │ Token usage, execution analytics             │\n└──────────────┴──────────────────────────────────────────────┘\n```\n\n## Development\n\n```bash\nmake deps        # Install dependencies\nmake build       # Build binary\nmake test        # Run tests\nmake lint        # Run linter\nmake dev         # Development mode with hot reload\n```\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eIs this safe?\u003c/strong\u003e\u003c/summary\u003e\n\nPilot runs in your environment with your permissions. It can only access repos you configure. All changes go through PR review (unless you enable auto-merge). You stay in control.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow much does it cost?\u003c/strong\u003e\u003c/summary\u003e\n\nPilot is free. You pay for Claude API usage (~$0.50-2.00 per typical task). Set budget limits to control costs.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhat tasks can it handle?\u003c/strong\u003e\u003c/summary\u003e\n\nBest for: bug fixes, small features, refactoring, tests, docs, dependency updates.\n\nNot ideal for: large architectural changes, security-critical code, tasks requiring human judgment.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDoes it learn my codebase?\u003c/strong\u003e\u003c/summary\u003e\n\nYes. Pilot uses Navigator to understand your patterns, conventions, and architecture. Cross-project memory shares learnings across repositories.\n\u003c/details\u003e\n\n## License\n\n**[Business Source License 1.1](LICENSE)** © Aleksei Petrov\n\n| Use Case | Allowed |\n|----------|---------|\n| Internal use | ✅ |\n| Self-hosting | ✅ |\n| Modification \u0026 forking | ✅ |\n| Non-competing products | ✅ |\n| Competing SaaS | ❌ (requires license) |\n\nConverts to **Apache 2.0** after 4 years.\n\n## Contributing\n\nContributions welcome. Please open an issue first for major changes.\n\n```bash\ngit checkout -b feature/my-feature\nmake test\n# Submit PR\n```\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eStop agonizing over tickets. Let Pilot ship them.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/qf-studio/pilot\"\u003e⭐ Star on GitHub\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eBuilt with Claude Code + Navigator\u003c/sub\u003e\n\u003c/p\u003e\n","funding_links":["https://github.com/sponsors/alekspetrov"],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqf-studio%2Fpilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqf-studio%2Fpilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqf-studio%2Fpilot/lists"}