{"id":30173020,"url":"https://github.com/alecrust/branchpilot","last_synced_at":"2026-06-17T23:31:32.540Z","repository":{"id":309221956,"uuid":"1035433562","full_name":"AlecRust/branchpilot","owner":"AlecRust","description":"Schedule Pull Requests from local Git branches.","archived":false,"fork":false,"pushed_at":"2026-06-16T17:43:31.000Z","size":559,"stargazers_count":2,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T19:24:23.432Z","etag":null,"topics":["automation","cli","markdown","schedule"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/branchpilot","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlecRust.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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}},"created_at":"2025-08-10T11:46:50.000Z","updated_at":"2026-05-15T01:40:05.000Z","dependencies_parsed_at":"2026-01-21T07:03:37.518Z","dependency_job_id":null,"html_url":"https://github.com/AlecRust/branchpilot","commit_stats":null,"previous_names":["alecrust/branchpilot"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/AlecRust/branchpilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlecRust%2Fbranchpilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlecRust%2Fbranchpilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlecRust%2Fbranchpilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlecRust%2Fbranchpilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlecRust","download_url":"https://codeload.github.com/AlecRust/branchpilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlecRust%2Fbranchpilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34470322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automation","cli","markdown","schedule"],"created_at":"2025-08-11T23:22:05.058Z","updated_at":"2026-06-17T23:31:32.535Z","avatar_url":"https://github.com/AlecRust.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# branchpilot [![CI](https://github.com/AlecRust/branchpilot/actions/workflows/ci.yml/badge.svg)](https://github.com/AlecRust/branchpilot/actions/workflows/ci.yml) [![CodeQL](https://github.com/AlecRust/branchpilot/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/AlecRust/branchpilot/actions/workflows/github-code-scanning/codeql) [![npm Version](https://img.shields.io/npm/v/branchpilot)](https://www.npmjs.com/package/branchpilot)\n\n\u003e PRs on autopilot, powered by Markdown\n\n`branchpilot` is a CLI tool for scheduling Pull Requests from local Git branches.\n\n## Install\n\nEnsure [git](https://git-scm.com/) and [gh](https://cli.github.com/) are configured in your terminal e.g. `gh auth status`\nthen run:\n\n```bash\nnpm install -g branchpilot\n```\n\n## Usage\n\n1. **Create** a branch in a local repository containing changes you want to schedule\n2. **Prepare** a Markdown file that includes PR configuration and a `when` timestamp\n3. **Execute** `branchpilot watch` to open the branches as PRs when they are due\n\n### 1. Create\n\nSimply create a branch in any local Git repository with changes you want to schedule.\n\n### 2. Prepare\n\nCreate a Markdown file with any filename containing [front matter](https://gohugo.io/content-management/front-matter/) config at the top followed by your PR description.\n\nThe file can be placed anywhere. If you place it in a Git repository you can omit the `repository` field.\n\ne.g. `~/projects/my-project/tickets/fix-typo.md` or `~/tickets/fix-typo.md`\n\n```markdown\n---\ntitle: Fix typo in README\nwhen: 2025-01-15T09:00\nbranch: fix-typo\nrepository: ~/projects/my-project  # Optional, defaults to current repository\n---\n\nFixed a typo in the installation instructions.\n```\n\n### 3. Execute\n\nUse the `run` command to open any past-due PRs once:\n\n```bash\nbranchpilot run\n```\n\nUse the `watch` command for continuous monitoring:\n\n```bash\nbranchpilot watch\n```\n\nA PR will be opened during execution if the `when` timestamp is reached.\n\nConfigure the tickets directories to scan using config files or flags as documented.\n\n## Daemon\n\nTo run the process in the background, use a process manager like [PM2](https://pm2.keymetrics.io/):\n\n```bash\npm2 start branchpilot -- watch --verbose\n```\n\nA built-in daemon mode may be added in the future, but PM2 or similar should work well.\n\n## Ticket configuration\n\nThese are all the PR configuration options you have in ticket Markdown files.\n\n```yaml\nwhen: 2025-01-15 09:00       # (required) When to open the PR (various formats supported)\nbranch: fix-typo             # (required) Branch name to create PR from\ntitle: Example PR title      # Title of the PR\ntimezone: America/New_York   # Timezone used when 'when' has no offset (defaults to system)\nrepository: ~/projects/repo  # Path to target repo for PRs (defaults to current repo)\nbase: develop                # Base branch (auto-detected if omitted)\nrebase: true                 # Rebase against base branch before pushing\ndraft: true                  # Create PR as draft\nautoMerge: true              # Enable auto-merge on PR\nlabels: [\"bug\", \"urgent\"]    # Set labels\nreviewers: [\"alice\"]         # Set reviewers\nassignees: [\"bob\"]           # Set assignees\ndeleteLocalBranch: true      # Delete the local branch after PR creation\nonProcessed: archive         # What to do with the ticket file: keep | delete | archive\narchiveDir: processed        # Archive directory (relative to ticket file or absolute, defaults to \"processed\")\n```\n\n## `branchpilot` configuration\n\nGlobal config at `~/.config/branchpilot.toml`:\n\n```toml\ndirs = [\"~/tickets\"]         # Directories to scan\ndefaultBase = \"main\"         # Default base branch\ndeleteLocalBranch = true      # Delete local branches after PR creation\nonProcessed = \"archive\"       # keep | delete | archive\narchiveDir = \"processed\"      # Default archive dir for ticket files\n```\n\nRepository config e.g. `~/projects/my-project/.branchpilot.toml`:\n\n```toml\ndefaultBase = \"develop\"      # Override global settings\ndeleteLocalBranch = true\nonProcessed = \"archive\"\narchiveDir = \"processed\"\n```\n\n## Commands\n\n### `branchpilot run`\n\nProcess tickets in configured directories and create any due PRs.\n\n- `--dir \u003cpath\u003e` — Scan specific directories\n- `--verbose` — Show detailed output\n\n### `branchpilot watch`\n\nStart file watcher to process tickets immediately when due.\n\n- `--dir \u003cpath\u003e` — Scan specific directories\n- `--verbose` — Show detailed output\n\n### `branchpilot list`\n\nList all tickets with their status.\n\n- `--dir \u003cpath\u003e` — Scan specific directories\n- `--verbose` — Show detailed output\n\n### `branchpilot init`\n\nInitialize current Git project with example tickets and config.\n\n### `branchpilot doctor`\n\nRun checks verifying dependencies and configuration.\n\n## Development\n\nContributions are welcome on this project, to get started clone the repo then run:\n\n```bash\nnpm install\nnpm run check\nnpm test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falecrust%2Fbranchpilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falecrust%2Fbranchpilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falecrust%2Fbranchpilot/lists"}