{"repo":"modal-projects/runner-modal","free":true,"listed":false,"github":"https://github.com/modal-projects/runner-modal","clone":"git clone https://github.com/modal-projects/runner-modal.git","description":"GitHub Actions self-hosted runners on Modal Sandboxes.","language":"Python","stars":15,"topics":[],"license":"Apache-2.0","category":"self-hosted-apps","readme_excerpt":"runner-modal Self-hosted GitHub Actions runners on Modal Sandboxes. You deploy your own Modal App and Secrets. This is not a managed multi-tenant service. Install Python = 3.12, a Modal account ( modal setup ), and repo admin on GitHub. Deploy from a checkout (or editable install) so Image builds can add local python source(\"runner modal\") . PyPI is not set up yet. Quick start 1. Secrets Use a fine-scoped GitHub App or PAT that can call POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig on allowlisted repos. 2. Deploy Copy examples/basic/app.py , set repositories=[\"YOUR ORG/YOUR REPO\"] , then: One Runner.create per App = one resource profile. Redeploy overwrites Runner meta (last deploy wins). 3. Webhook Field Value ------- -------- Payload URL {url}/github Content type application/json Secret same as WEBHOOK SECRET Events Workflow jobs only 4. Workflow Copy examples/basic/workflow.yml into .github/workflows/ . Labels must match Runner.create(labels=…) . Keep the unique job-${{ github.run id }}-${{ github.job }} pin. Examples Kit When ----- ------ examples/basic/ Standard CI examples/gpu/ CUDA / ML ( gpu=\"T4\" Job defaults) GPU pool = separate App. Docker-in-CI: experimental options={\"vm runtime\": True} on Runner.create (no GPU). cpu / memory / gpu are Job Sandbox defaults; the webhook Function stays small ( buffer containers=1 by default). Troubleshooting Symptom Check --------- -------- HTTP 401 Webhook secret ≠ Modal WEBHOOK SECRET HTTP 204 + X-Runner-Modal-Reaso","default_branch":null,"files":null,"tree":[],"storefront":"/r/modal-projects","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/modal-projects/runner-modal/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}