Ship on GitHub Free: Issues, Projects, and Actions minutes
Land a Free release skeleton with Issues, Projects, and short Actions, then decide Team from official minutes and the $4/user month price.
Indie developers often keep bugs in chat apps and release steps in their heads. That works alone until a contractor arrives or a week off breaks context. GitHub keeps code, Issues, Projects, and Actions in one place. This article ignores editor choice and focuses on how to land release and defect workflow on GitHub Free, and when Team is worth paying for. Prices and Actions minutes are anchored to GitHub Pricing and the Actions billing docs observed on 2026-09-25.
Build the smallest release skeleton first
Private repositories are available on Free. Pricing lists Free at $0 per month with unlimited public and private repositories, 2,000 CI/CD minutes per month for private GitHub Actions usage, free Actions minutes for public repositories on standard hosted runners, 500MB of Packages storage, plus Issues and Projects. Do three things first. Add a README and one release checklist Issue template. Create a Project with To do, In progress, and Ready to release. Keep Actions on test and build only before you wire complex multi-environment deploys.
Write Issue titles as verifiable outcomes, not moods. A note that the submit button overlaps on a narrow login is actionable; a vague complaint is not. Each Issue needs one close condition. Without that, the Project board becomes a mood wall.
How to spend Actions minutes without billing surprises
Actions billing docs state that usage is free for self-hosted runners and for public repositories on standard GitHub-hosted runners. Private repositories receive free minutes, artifact storage, and cache storage by plan; overage is billed. Minutes reset each billing cycle. Minute cost is charged to the repository owner, not the person who clicked run. If Copilot code review is enabled, it also consumes Actions minutes: still free on public repos, drawn from plan entitlement on private repos.
The indie default is simple. Prefer public repos when you can, trading for free minutes and visible external contribution. For private repos, keep workflows short, cache dependencies, and avoid full matrices on every tiny commit. Failures you can catch locally should not be paid for again in the cloud. If you steadily approach 2,000 private minutes, slim workflows before you buy a higher plan.
Upgrade triggers from Free to Team
Pricing lists Team at $4 USD per user per month, including everything in Free plus stronger collaboration features and Codespaces access entry points. Billing docs map Team private repos to higher minute and storage allowances. One founder shipping alone with occasional PR reviewers usually stays on Free. Move toward Team when you need clearer permission layers, steady multi-person collaboration, or when Free minutes and storage stay maxed after workflow diet. Do not buy Team in week one for optics.
Codespaces is usage-based, with pricing calling out starting compute and storage unit prices. It solves cloud dev environments; it does not invent release discipline. Without Issues and workflows, Codespaces is just another metered computer.
When not to force the process into GitHub
If defects mainly live in a customer support queue that must stay inside an existing CRM, do not dual-write everything. GitHub Issues fit engineering defects and release checklists, not a full support desk. If compliance forbids code leaving your network, hosted Actions runners may fail policy; use self-hosted or internal CI and evaluate separately. If the product is mostly copy and design with almost no code, GitHub is not the default project tool.
Never put secrets in workflow plaintext. Use repository or organization secrets. If a debug log ever printed a token, rotate immediately.
Scenario defaults
One person shipping an open-source CLI should default to a public Free repo, run tests and release checks in Actions, and collect defects in Issues. One person shipping a SaaS with customer data should default to a private Free repo, slim workflows first, and reconsider Team only when minutes stay tight. Two partners who need stable permission boundaries should price Team per seat against communication cost. If another CI already runs cleanly, do not migrate to Actions for branding; keep status checks mirrored.
On release day, only cards in Ready to release may receive a tag. Each card needs a green workflow and a short manual confirmation list. Treat green checks as a hard gate before release.
Current recommendation
For indie release and defect tracking, default to GitHub Free with Issues, Projects, and short Actions workflows. Prefer public repos for free minutes. Slim private workflows before you pay. Team triggers on steady multi-person collaboration or sustained Free quota pressure, not week-one ceremony. Recheck live pricing and billing docs the day you change plans.
Week one needs one Project view only. Extra views spend time on field configuration. Add fields like blocker reason or target version only after a real pain appears. Do not pre-build complexity.
When a contractor joins, write Triage versus Write access into CONTRIBUTING. Verbal rules expire in three days and then someone pushes to main. Branch protection and required reviews live in repository settings, not chat memory.
If you maintain many product repos under one owner, Actions minutes accumulate on that owner. Many private repos on a personal account hit quotas more quietly than people expect. Opening the usage page monthly is cheaper than a surprise bill.
Write breaking changes, migration steps, and a rollback entry in the Release draft attached to the tag. A chat message that says you shipped today is not a substitute. Future you will want the cold record.
Tools in this guide
