RunsOn RunsOn
`,document.body.appendChild(a);const s=a.querySelector(".search-input"),n=a.querySelector(".search-results");let i=null,c=null,u;async function y(e=!1){const t=v(),l=await import(e?`${t}${t.includes("?")?"&":"?"}fresh=${Date.now()}`:t);return await l.init(),l}async function d(e=!1){return i&&!e?i:(c&&!e||(c=y(e).then(t=>(i=t,t)).catch(t=>(console.error("Failed to load Pagefind",t),i=null,n.innerHTML='

Search is temporarily unavailable. Refresh the page to load the latest search assets.

',null)).finally(()=>{i||(c=null)})),c)}async function f(e,t){const r=await e.search(t);if(!r?.results?.length){n.innerHTML='

No results found.

';return}const l=await Promise.all(r.results.slice(0,10).map(o=>o.data()));n.innerHTML=l.map(o=>` ${o.meta?.title||o.url} ${o.excerpt} `).join("")}function p(){a.showModal(),s.focus(),d()}function h(){a.close(),s.value="",n.innerHTML=""}async function g(e){if(!e.trim()){n.innerHTML="";return}let t=await d();if(t)try{await f(t,e)}catch(r){if(console.error("Pagefind search failed, retrying with a fresh loader",r),i=null,c=null,t=await d(!0),!t)return;try{await f(t,e)}catch(l){console.error("Pagefind retry failed",l),n.innerHTML='

Search failed to load. Refresh the page and try again.

'}}}document.addEventListener("click",e=>{e.target.closest("[data-search-open]")&&p()}),a.addEventListener("click",e=>{e.target===a&&h()}),s.addEventListener("input",()=>{clearTimeout(u),u=setTimeout(()=>g(s.value),200)}),s.addEventListener("keydown",e=>{e.key==="ArrowDown"&&(e.preventDefault(),n.querySelector("[data-search-result]")?.focus())}),n.addEventListener("keydown",e=>{const t=e.target;if(t.matches("[data-search-result]")){if(e.key==="ArrowDown")e.preventDefault(),t.nextElementSibling?.focus();else if(e.key==="ArrowUp"){e.preventDefault();const r=t.previousElementSibling;r?r.focus():s.focus()}}}),document.addEventListener("keydown",e=>{(e.metaKey||e.ctrlKey)&&e.key==="k"&&(e.preventDefault(),a.open?h():p())})}m();document.addEventListener("astro:page-load",m);

RunsOn Documentation

Everything RunsOn provides for teams running GitHub Actions on AWS — compute, caching, observability, and security.

Everything you need to run GitHub Actions on your own AWS infrastructure. Start with installation, then explore runners, caching, and monitoring. Need help? Troubleshoot or upgrade your existing stack.

Install & Configure

Deploy RunsOn in your AWS account in about 10 minutes. One CloudFormation click — no Kubernetes, no VM patching.

Run & Customize

Choose any EC2 instance type from 1 to 896 vCPUs — x64, ARM64, GPU, NVMe. Customize job labels, images, and more.

Optimize

S3-backed caching, EBS snapshots, per-job cost tracking, CloudWatch metrics, and OpenTelemetry traces — out of the box.

Operate

Day-to-day operations: upgrades, CLI access, SSH into runners, troubleshooting, and third-party integrations.

Learn

Tips, best practices, and deep dives into GitHub Actions.

Language Guides

Legal & Privacy

License agreements and legal documents.