Implement backend infrastructure and initial UI for managing GitHub Actions
runners on user-owned servers, similar to Blacksmith.sh but self-hosted.
**Backend Implementation:**
- Database schema: github_runner_sources (pools), github_runner_servers (pivot), github_runners (instances)
- Models: GitHubRunnerSource, GitHubRunner with relationships to Server
- GitHub API helpers: JIT config generation, token management, webhook validation
- Webhook handler: Processes workflow_job events, matches labels, provisions runners
- Job queue: ProvisionGithubRunnerJob (server selection, Docker provisioning), CleanupGithubRunnerJob
- Ephemeral runners using JIT configuration for enhanced security
**Testing:**
- Unit tests: Helper functions, webhook validation, model methods
- Feature tests: Webhook flow, provisioning, server selection, relationships
**UI Foundation:**
- Runner Sources index page with source listing
- Routes configured for index, create, and detail views
- Integration into server management section
**How it works:**
1. User creates a GitHub Runner Source (GitHub App + custom label)
2. User adds multiple servers to the runner pool
3. GitHub Actions jobs with matching runs-on label trigger webhook
4. Coolify provisions ephemeral Docker runner on available server
5. Job executes, container auto-removes on completion
**Next steps:**
- Complete UI components (create, detail, server management)
- Add runner history and monitoring
- User documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>