<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Promigence blog: Guides</title>
    <link>https://www.promigence.ai/blog/category/guides</link>
    <description>How to run a given agent, framework or workload in a sandbox, step by step.</description>
    <language>en</language>
    <atom:link href="https://www.promigence.ai/blog/category/guides/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sun, 25 Oct 2026 12:00:00 GMT</lastBuildDate>
    <item>
      <title>Best CI runner for GitHub Actions in 2026: hosted and self-hosted alternatives</title>
      <link>https://www.promigence.ai/blog/best-ci-runner-for-github-actions-2026</link>
      <guid isPermaLink="true">https://www.promigence.ai/blog/best-ci-runner-for-github-actions-2026</guid>
      <pubDate>Sun, 25 Oct 2026 12:00:00 GMT</pubDate>
      <dc:creator>Harshraj</dc:creator>
      <category>Guides</category>
      <category>guides</category>
      <category>ci runners</category>
      <category>github actions</category>
      <category>blacksmith</category>
      <category>depot</category>
      <description>Promigence runners, GitHub-hosted runners, Blacksmith&apos;s and Depot&apos;s hosted runners, and self-hosted runners, compared on the workflow change, sizes, billing, spend control and upkeep.</description>
      <content:encoded>&lt;p&gt;Most GitHub Actions workflows start on &lt;code&gt;ubuntu-latest&lt;/code&gt; and stay there until a job runs out of memory, the bill climbs or the queue grows. On a private repository that runner has 2 CPUs and 8 GB of memory, and GitHub rounds every job up to the whole minute. Five ways to run the same jobs are compared here: the change each one needs in the workflow, the sizes it offers, how it bills, how you control spend and what you have to maintain. Our own product, Promigence, comes first; every fact about the others comes from that vendor&amp;#39;s own pages, listed under Sources.&lt;/p&gt;
&lt;h2 id=&quot;key-takeaways&quot;&gt;Key takeaways&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Workflow change: every hosted option here moves a job by changing its &lt;code&gt;runs-on&lt;/code&gt; label. Promigence&amp;#39;s hosted runners also need the repository added under Runners in the console, and Blacksmith and Depot need their GitHub App installed on an organization.&lt;/li&gt;&lt;li&gt;Billing unit: Promigence bills each job for the seconds it runs. GitHub rounds each job up to the whole minute, Blacksmith prices by the minute, and Depot tracks runner time by the second with no one-minute minimum per run.&lt;/li&gt;&lt;li&gt;Spend control: with the Promigence runner command, &lt;code&gt;--cap&lt;/code&gt; sets the most one job may cost. GitHub&amp;#39;s budgets, Blacksmith&amp;#39;s spending alert and Depot&amp;#39;s usage caps cover an account&amp;#39;s spend or minutes over a period.&lt;/li&gt;&lt;li&gt;Sizes and systems: GitHub runs Linux, Windows or macOS jobs, with Linux and Windows sizes up to 96 vCPU and a GPU size. Blacksmith runs Ubuntu on x64 and Arm up to 32 vCPU, Windows in public beta and macOS on Apple M4. Depot goes up to 64 vCPU on Intel or Arm and also runs Windows and macOS, with GPUs on its Business plan.&lt;/li&gt;&lt;li&gt;Public repositories: GitHub&amp;#39;s standard runners are free and unlimited there.&lt;/li&gt;&lt;li&gt;Upkeep: self-hosted runners give the most control and leave every update with you, and on GitHub Enterprise Server they are the only runners GitHub supports.&lt;/li&gt;&lt;/ul&gt;
&lt;h2 id=&quot;the-best-ci-runners-for-github-actions-in-2026&quot;&gt;The best CI runners for GitHub Actions in 2026&lt;/h2&gt;
&lt;h3 id=&quot;1-promigence&quot;&gt;1. Promigence&lt;/h3&gt;
&lt;p&gt;Here, every GitHub Actions or GitLab CI job gets its own sandbox. One line of the workflow changes, &lt;code&gt;runs-on: promigence&lt;/code&gt;, and the steps and caches stay where they are, as do the repository secrets. The runners are hosted by Promigence AI once the repository is added in the console, or you start your own with one command on a machine of yours.&lt;/p&gt;
&lt;h4 id=&quot;key-features&quot;&gt;Key features&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Hosted runners: open Runners in the console, choose Add a repository and pick it from a GitHub account you connected. Its jobs then run on runners we host, each in a fresh sandbox, with nothing to keep running on your side. Up to 10 of the repository&amp;#39;s jobs run at once unless you change it there.&lt;/li&gt;&lt;li&gt;Sizes by label: &lt;code&gt;promigence-small&lt;/code&gt; (2 vCPU, 4 GiB), &lt;code&gt;promigence-medium&lt;/code&gt; (4 vCPU, 16 GiB) and &lt;code&gt;promigence-large&lt;/code&gt; (8 vCPU, 32 GiB). A job that says only &lt;code&gt;promigence&lt;/code&gt; gets medium on hosted runners, or the size you set for the repository in the console.&lt;/li&gt;&lt;li&gt;Your own runners: &lt;code&gt;promigence runners github --repo OWNER/REPO&lt;/code&gt; takes queued jobs with a matching label until you press Ctrl-C. &lt;code&gt;--org ORG&lt;/code&gt; covers every repository in an organization, &lt;code&gt;--runner-group NAME&lt;/code&gt; places the runners in a group, and &lt;code&gt;--github-api URL&lt;/code&gt; points the command at GitHub Enterprise Server.&lt;/li&gt;&lt;li&gt;Per second, with limits per job: every job is billed for the seconds it runs. With the command, &lt;code&gt;--cap&lt;/code&gt; sets the most one job may cost, &lt;code&gt;--timeout&lt;/code&gt; the longest it may run and &lt;code&gt;--max&lt;/code&gt; how many sandboxes run at once.&lt;/li&gt;&lt;li&gt;Queue time is your choice: runners start on demand when a job is queued, and &lt;code&gt;--warm N&lt;/code&gt; keeps N runners waiting so a job starts the moment it is queued. Waiting runners are billed while idle.&lt;/li&gt;&lt;li&gt;GitLab CI from the same tool: a project runner tagged &lt;code&gt;promigence&lt;/code&gt; on hosted runners, or &lt;code&gt;promigence runners gitlab&lt;/code&gt; with the &lt;code&gt;docker&lt;/code&gt; executor (the default) or &lt;code&gt;shell&lt;/code&gt;. A self-managed GitLab takes &lt;code&gt;--url&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;h4 id=&quot;where-it-fits&quot;&gt;Where it fits&lt;/h4&gt;
&lt;p&gt;It suits teams whose jobs have outgrown the default runner or whose bill comes from many short jobs. A job that needs more memory names a bigger size in its label, and per-second billing means a short job pays for its seconds instead of a rounded-up minute. Moving one workflow is a one-line change you can undo, since the steps and the cache actions stay as they were.&lt;/p&gt;
&lt;p&gt;Platform teams that want a ceiling on CI spend get one per job. With the runner command, every job has a cap, by default what its full timeout costs at its size, and &lt;code&gt;--max&lt;/code&gt; holds how many sandboxes run at once, so a large matrix runs inside limits you set. Capacity follows the plan: 20 sandboxes at once on Free, up to 100 on Pro and up to 500 or 1,000 on Max.&lt;/p&gt;
&lt;p&gt;It also fits teams that run more than one CI system or already use Promigence for agents. The same CLI takes GitHub Actions jobs, GitLab CI jobs and jobs from GitHub Enterprise Server, and teams running coding agents or evals on Promigence keep CI on the same account and the same bill. The runner image carries git and Python plus a compiler toolchain, so a job adds its language runtime with the usual setup step, such as &lt;code&gt;actions/setup-node&lt;/code&gt;. Job logs stay in GitHub or GitLab, where your team already reads them.&lt;/p&gt;
&lt;h4 id=&quot;ideal-for&quot;&gt;Ideal for&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Repositories whose jobs run out of memory on &lt;code&gt;ubuntu-latest&lt;/code&gt; and need a bigger size for some jobs only.&lt;/li&gt;&lt;li&gt;Projects with many short jobs, where rounding every job up to a minute adds up.&lt;/li&gt;&lt;li&gt;Platform teams that want a limit on what one CI job may cost.&lt;/li&gt;&lt;li&gt;Companies on both GitHub Actions and GitLab CI, or on GitHub Enterprise Server, that want one runner tool.&lt;/li&gt;&lt;li&gt;Coding-agent and eval teams already on Promigence that want CI on the same account.&lt;/li&gt;&lt;li&gt;Engineers who want to start and stop their own runners with one command and a token they control.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;2-github-hosted-runners&quot;&gt;2. GitHub-hosted runners&lt;/h3&gt;
&lt;p&gt;GitHub&amp;#39;s own runners are the default for GitHub Actions: virtual machines GitHub hosts, with the runner application and other tools preinstalled, and machine maintenance and upgrades taken care of for you. A job picks one by label, such as &lt;code&gt;ubuntu-latest&lt;/code&gt;, and apart from the single-CPU runners each job gets a new virtual machine.&lt;/p&gt;
&lt;h4 id=&quot;key-features-2&quot;&gt;Key features&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Standard runners on Linux, Windows or macOS, on x64 and arm64. On a private repository the Linux and Windows runners have 2 CPUs and 8 GB of memory, and on a public one 4 CPUs and 16 GB.&lt;/li&gt;&lt;li&gt;Free and unlimited standard runners on public repositories. Private repositories get included minutes each month: 2,000 on Free, 3,000 on Pro or Team, and 50,000 on Enterprise Cloud.&lt;/li&gt;&lt;li&gt;Per-minute rates, with each job rounded up to the whole minute: $0.006 for 2-core Linux x64, $0.005 for 2-core Linux arm64, $0.010 for 2-core Windows and $0.062 for macOS.&lt;/li&gt;&lt;li&gt;Larger runners on the Team and Enterprise Cloud plans: Linux and Windows up to 96 vCPU and 384 GB, arm64 up to 64 vCPU, a GPU size with one Tesla T4, and larger macOS sizes. Enterprise Cloud customers can give larger runners static IP addresses.&lt;/li&gt;&lt;li&gt;A single-CPU &lt;code&gt;ubuntu-slim&lt;/code&gt; runner for light tasks, with a 15-minute job limit.&lt;/li&gt;&lt;li&gt;Concurrent jobs by plan: 20 on Free, 40 on Pro, 60 on Team and 500 on Enterprise. A job can run for up to 6 hours.&lt;/li&gt;&lt;/ul&gt;
&lt;h4 id=&quot;where-it-fits-2&quot;&gt;Where it fits&lt;/h4&gt;
&lt;p&gt;GitHub-hosted runners are the place to start, and for many repositories the place to stay. There is nothing to install, no extra account and no token to manage, and GitHub keeps the machines and the images current. Open-source projects get standard runners free and without limit, which none of the other options here offers.&lt;/p&gt;
&lt;p&gt;They also cover the widest range of systems and sizes on this list: Linux, Windows or macOS, x64 or arm64, a GPU size, and larger runners up to 96 vCPU. Workflows that build for several platforms can keep every job on one provider and one bill.&lt;/p&gt;
&lt;p&gt;The cost grows with size and length. Each job is rounded up to the whole minute, larger runners are always billed (included minutes never cover them), and GitHub notes that a larger runner may not have a warm machine ready on the first request. Budgets can limit what the account spends. There are no GitHub-hosted runners on GitHub Enterprise Server, so teams there run their own.&lt;/p&gt;
&lt;h4 id=&quot;ideal-for-2&quot;&gt;Ideal for&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Public repositories and open-source projects, where standard runners are free and unlimited.&lt;/li&gt;&lt;li&gt;Small teams whose private repositories fit inside the included minutes.&lt;/li&gt;&lt;li&gt;Workflows that need macOS, Windows or a GPU size.&lt;/li&gt;&lt;li&gt;Very large jobs that need more than 64 vCPU, up to 96.&lt;/li&gt;&lt;li&gt;Organizations on Enterprise Cloud that need static IP addresses for larger runners.&lt;/li&gt;&lt;li&gt;Anyone who wants nothing outside GitHub to set up or pay for.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;3-blacksmith&quot;&gt;3. Blacksmith&lt;/h3&gt;
&lt;p&gt;Blacksmith is a hosted runner service for GitHub Actions. An organization installs the Blacksmith GitHub App, then points &lt;code&gt;runs-on&lt;/code&gt; at a Blacksmith tag such as &lt;code&gt;blacksmith-2vcpu-ubuntu-2404&lt;/code&gt;, by hand or with its Migration Wizard. The runners boot from the same images as GitHub&amp;#39;s runners, so the preinstalled software matches.&lt;/p&gt;
&lt;h4 id=&quot;key-features-3&quot;&gt;Key features&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Ubuntu on x64 and Arm from 2 to 32 vCPU (up to 128 GB of memory on x64), Windows Server 2025 in public beta, and macOS on Apple M4 with 6 or 12 vCPU.&lt;/li&gt;&lt;li&gt;Per-minute rates: $0.004 for 2 vCPU Ubuntu x64, doubling with each size up to $0.064 at 32 vCPU; $0.0025 for 2 vCPU Arm, $0.008 for 2 vCPU Windows and $0.08 for 6 vCPU macOS, with 3,000 free minutes a month.&lt;/li&gt;&lt;li&gt;Every size available on demand, with no concurrency limits; Linux and Windows jobs run on ephemeral machines.&lt;/li&gt;&lt;li&gt;A cache that the official GitHub and popular third-party cache actions use as they are, with 25 GB of free storage per repository each week. Docker layer caching and sticky disks are $0.50 per GB a month.&lt;/li&gt;&lt;li&gt;Run history, log search, test analytics and CI analytics, plus SSH into a running job, which an admin turns on and which costs nothing extra.&lt;/li&gt;&lt;li&gt;Static IP addresses at $100 per IP a month, a monthly spending alert by email, and GitHub Enterprise Server or Enterprise Cloud with data residency, set up through Blacksmith&amp;#39;s support team.&lt;/li&gt;&lt;/ul&gt;
&lt;h4 id=&quot;where-it-fits-3&quot;&gt;Where it fits&lt;/h4&gt;
&lt;p&gt;It suits teams that want hosted runners with the same software as GitHub&amp;#39;s on different hardware. Because its runners start from GitHub&amp;#39;s own images, a workflow that relies on a preinstalled tool keeps working after the label changes, and the Migration Wizard updates the labels in your workflow files. According to Blacksmith, its jobs run on gaming CPUs with higher single-thread performance.&lt;/p&gt;
&lt;p&gt;It also sells the tools around CI. The standard cache actions use its cache unchanged, Docker builds can reuse cached layers, and run history, log search and test analytics show where time goes. When a job misbehaves, an admin can turn on SSH into the running job to inspect it.&lt;/p&gt;
&lt;p&gt;Setup leaves no standing credentials: the GitHub App registers runners as they are needed, and the docs say no personal access tokens or deploy keys are involved. It serves GitHub organizations, not personal repositories, and Windows runners are still a public beta. The Enterprise plan adds a 99.9% SLA, 24/7 priority support and a dedicated Slack channel.&lt;/p&gt;
&lt;h4 id=&quot;ideal-for-3&quot;&gt;Ideal for&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Organizations on GitHub that want hosted runners with the same preinstalled software as GitHub&amp;#39;s.&lt;/li&gt;&lt;li&gt;Heavy Docker builds that gain from Docker layer caching.&lt;/li&gt;&lt;li&gt;Engineering teams that want CI observability: log search, test analytics and SSH into a running job.&lt;/li&gt;&lt;li&gt;Arm and Windows workflows that want a lower per-minute rate than GitHub&amp;#39;s standard runners.&lt;/li&gt;&lt;li&gt;macOS jobs that should run on Apple M4.&lt;/li&gt;&lt;li&gt;Enterprises that want an SLA and GitHub Enterprise Server support.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;4-depot&quot;&gt;4. Depot&lt;/h3&gt;
&lt;p&gt;Depot sells GitHub Actions runners alongside its container builds. An organization owner connects the Depot organization to GitHub and installs the Depot GitHub App, and from then on switching a job is one label, such as &lt;code&gt;runs-on: depot-ubuntu-24.04&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&quot;key-features-4&quot;&gt;Key features&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Ubuntu from 2 vCPU and 8 GB up to 64 vCPU and 256 GB, on Intel or Arm at the same prices; Windows from 2 to 64 vCPU; macOS on M2 and M4 with 8 vCPU and 24 GB; GPU runners on the Business plan.&lt;/li&gt;&lt;li&gt;Runner time tracked by the second, with no one-minute minimum per run, and the minutes added up at the end of the billing period.&lt;/li&gt;&lt;li&gt;Plans: Developer at $20 a month with 2,000 GitHub Actions minutes and one user, Startup at $200 a month with 20,000 minutes and unlimited users, and Business on custom pricing. Past the included minutes, a 2 vCPU Linux runner is $0.006 a minute, and each size up doubles the rate.&lt;/li&gt;&lt;li&gt;No concurrency limits, cache size limits or network limits.&lt;/li&gt;&lt;li&gt;A cache built into the runners with no configuration, and container builds that run next to the runner.&lt;/li&gt;&lt;li&gt;Ephemeral machines that are never reused, monthly usage caps on GitHub Actions minutes, and egress filtering to control which services a runner can reach.&lt;/li&gt;&lt;/ul&gt;
&lt;h4 id=&quot;where-it-fits-4&quot;&gt;Where it fits&lt;/h4&gt;
&lt;p&gt;It fits teams whose CI is mostly short jobs and container builds. Runner time is tracked by the second with no one-minute minimum per run, so a pile of small jobs is not rounded up job by job, and a container build sent to Depot runs on a builder next to the runner.&lt;/p&gt;
&lt;p&gt;Its plans bundle minutes. The $20 Developer plan includes 2,000 a month for one user, the $200 Startup plan 20,000 for unlimited users, and every plan has unlimited concurrency. Intel and Arm runners cost the same at every size, which suits teams that build for both.&lt;/p&gt;
&lt;p&gt;Control comes from the account: a monthly cap on minutes, egress filtering for the runners, and machines that are never reused. Two limits come from its own pages: the runners serve repositories owned by GitHub organizations only, which Depot puts down to a GitHub limitation, and macOS jobs can wait longer at times of high demand.&lt;/p&gt;
&lt;h4 id=&quot;ideal-for-4&quot;&gt;Ideal for&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Short-job pipelines that want runner time tracked by the second.&lt;/li&gt;&lt;li&gt;Teams that also build container images and want those builds next to the runner.&lt;/li&gt;&lt;li&gt;Companies that want unlimited concurrency on a fixed monthly plan.&lt;/li&gt;&lt;li&gt;Arm workloads that should cost the same as Intel.&lt;/li&gt;&lt;li&gt;Builds that need GPU runners or 64 vCPU sizes.&lt;/li&gt;&lt;li&gt;Security-minded teams that want egress filtering on their runners.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 id=&quot;5-self-hosted-runners&quot;&gt;5. Self-hosted runners&lt;/h3&gt;
&lt;p&gt;Self-hosted runners are GitHub&amp;#39;s runner application on machines of your own, for one repository, an organization or a whole enterprise. Actions usage is free on them, and you pay for the machines and keep them running.&lt;/p&gt;
&lt;h4 id=&quot;key-features-5&quot;&gt;Key features&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;More control of hardware, operating system and software tools than GitHub-hosted runners provide.&lt;/li&gt;&lt;li&gt;No minutes billed by GitHub; the cost is the machines and their upkeep.&lt;/li&gt;&lt;li&gt;A job can run for up to 5 days and can wait in the queue for up to 24 hours.&lt;/li&gt;&lt;li&gt;Ephemeral, just-in-time runners take at most one job before they are removed.&lt;/li&gt;&lt;li&gt;Machines register with a time-limited token that expires after one hour.&lt;/li&gt;&lt;li&gt;The only runners GitHub supports on GitHub Enterprise Server.&lt;/li&gt;&lt;/ul&gt;
&lt;h4 id=&quot;where-it-fits-5&quot;&gt;Where it fits&lt;/h4&gt;
&lt;p&gt;Self-hosting fits companies that already run machines and want CI on them: special hardware, a private network, or software that has to be installed a certain way. Jobs can run for days, well past the 6-hour limit on GitHub&amp;#39;s runners.&lt;/p&gt;
&lt;p&gt;The work is yours. According to GitHub, you are responsible for updating the operating system and all other software, and a self-hosted runner need not have a clean instance for every job. Adding runners as the queue grows is yours to automate.&lt;/p&gt;
&lt;p&gt;Self-hosted runners should almost never be used for public repositories, GitHub&amp;#39;s security guide says, so this option is for private code. It is also the only option GitHub offers on GitHub Enterprise Server.&lt;/p&gt;
&lt;h4 id=&quot;ideal-for-5&quot;&gt;Ideal for&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Anyone on GitHub Enterprise Server.&lt;/li&gt;&lt;li&gt;Jobs that need special hardware or access to a private network.&lt;/li&gt;&lt;li&gt;Long jobs, up to 5 days.&lt;/li&gt;&lt;li&gt;Operations teams that already maintain machines.&lt;/li&gt;&lt;li&gt;Private repositories whose CI must stay on company machines.&lt;/li&gt;&lt;/ul&gt;
&lt;h2 id=&quot;what-sets-promigence-apart&quot;&gt;What sets Promigence apart&lt;/h2&gt;
&lt;h3 id=&quot;a-cap-on-each-job&quot;&gt;A cap on each job&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;promigence runners&lt;/code&gt; command gives every job a limit on what it may cost. &lt;code&gt;--cap&lt;/code&gt; sets it, and by default it is what the job&amp;#39;s full timeout costs at its size, so no single job can run up the bill past that. &lt;code&gt;--max&lt;/code&gt; holds how many sandboxes run at once. Budgets on GitHub, Blacksmith&amp;#39;s spending alert and Depot&amp;#39;s usage caps limit an account&amp;#39;s spend or minutes over a period, never one job.&lt;/p&gt;
&lt;h3 id=&quot;billed-for-the-seconds-a-job-runs&quot;&gt;Billed for the seconds a job runs&lt;/h3&gt;
&lt;p&gt;Every job is billed for the seconds it runs, on hosted runners and with the command. By comparison, GitHub rounds every job up to the whole minute and Blacksmith prices by the minute, while Depot tracks time by the second and totals the minutes at the end of the billing period. For GitHub Actions jobs, waiting runners (&lt;code&gt;--warm&lt;/code&gt;) are the one setting billed while nothing runs, and they stay off unless you ask for them.&lt;/p&gt;
&lt;h3 id=&quot;one-runner-for-github-actions-and-gitlab-ci&quot;&gt;One runner for GitHub Actions and GitLab CI&lt;/h3&gt;
&lt;p&gt;The same CLI runs GitHub Actions and GitLab CI jobs, on runners Promigence AI hosts or on runners you start yourself, and the command serves GitHub Enterprise Server with &lt;code&gt;--github-api&lt;/code&gt;. Each job gets a fresh sandbox, and its log stays in GitHub or GitLab, where your team already reads it.&lt;/p&gt;
&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently asked questions&lt;/h2&gt;
&lt;h3 id=&quot;what-is-the-best-ci-runner-for-github-actions-in-2026&quot;&gt;What is the best CI runner for GitHub Actions in 2026?&lt;/h3&gt;
&lt;p&gt;It depends on the problem. Keep public repositories on GitHub&amp;#39;s standard runners, which are free and unlimited there. For private repositories where job size, short-job billing or spend control is the problem, Promigence runners take one label, bill per second and, with the runner command, put a cap on each job. Among the others, Blacksmith runs GitHub&amp;#39;s own runner images on its hardware, Depot bundles minutes with container builds, and self-hosted runners suit GitHub Enterprise Server.&lt;/p&gt;
&lt;h3 id=&quot;what-are-cheaper-github-actions-runners&quot;&gt;What are cheaper GitHub Actions runners?&lt;/h3&gt;
&lt;p&gt;Compare the rate at the size your jobs need and how each service counts time. At 2 vCPU on Linux, GitHub lists $0.006 a minute with each job rounded up, Blacksmith $0.004 a minute for Ubuntu x64, and Depot $0.006 a minute with time tracked by the second. Our runners bill each job per second at the rates on the &lt;a href=&quot;https://www.promigence.ai/pricing&quot;&gt;pricing page&lt;/a&gt;. Because GitHub bills no Actions minutes for jobs on self-hosted runners, which is how these services register theirs, only the runner service bills those jobs.&lt;/p&gt;
&lt;h3 id=&quot;blacksmith-vs-depot-vs-other-github-actions-runners-how-do-they-compare&quot;&gt;Blacksmith vs Depot vs other GitHub Actions runners: how do they compare?&lt;/h3&gt;
&lt;p&gt;All three move a job with a one-line &lt;code&gt;runs-on&lt;/code&gt; change. Blacksmith&amp;#39;s runners cover Ubuntu on x64 and Arm up to 32 vCPU, Windows in public beta and macOS on M4, from GitHub&amp;#39;s own images, with 3,000 free minutes a month, log search and SSH into a running job. Depot&amp;#39;s runners go up to 64 vCPU on Intel or Arm, with Windows and macOS and GPUs on Business, track time by the second and start at $20 a month for 2,000 minutes. Promigence&amp;#39;s runners give each job a fresh sandbox, bill per second with a cap per job on the runner command, and take GitLab CI jobs with the same tool.&lt;/p&gt;
&lt;h3 id=&quot;how-do-i-compare-runner-speed&quot;&gt;How do I compare runner speed?&lt;/h3&gt;
&lt;p&gt;Speed depends on the job: how much it downloads, how well it caches and how many cores it can use. Vendors publish their own claims, so measure on your own workflow. Run the same job on each runner for a week, then compare the job durations in the Actions tab and the bills.&lt;/p&gt;
&lt;h3 id=&quot;can-one-runner-service-handle-both-github-actions-and-gitlab-ci&quot;&gt;Can one runner service handle both GitHub Actions and GitLab CI?&lt;/h3&gt;
&lt;p&gt;Yes, on Promigence: &lt;code&gt;runs-on: promigence&lt;/code&gt; in GitHub Actions and a runner tagged &lt;code&gt;promigence&lt;/code&gt; in GitLab CI, on hosted runners or with &lt;code&gt;promigence runners gitlab&lt;/code&gt;. The runners GitHub hosts serve GitHub Actions only. Blacksmith&amp;#39;s documentation covers GitHub Actions, and Depot&amp;#39;s GitLab CI integration is for its container builds.&lt;/p&gt;
&lt;h2 id=&quot;try-promigence-free&quot;&gt;Try Promigence free&lt;/h2&gt;
&lt;p&gt;All plans start with $50 of free credit. &lt;a href=&quot;https://console.promigence.ai/signup&quot; rel=&quot;noopener&quot;&gt;Create an account&lt;/a&gt; and follow the &lt;a href=&quot;https://www.promigence.ai/docs/quickstart&quot;&gt;quickstart&lt;/a&gt;, then move one workflow with the &lt;a href=&quot;https://www.promigence.ai/docs/guides/github-actions-runner&quot;&gt;GitHub Actions runner guide&lt;/a&gt;: change &lt;code&gt;runs-on&lt;/code&gt; to &lt;code&gt;promigence&lt;/code&gt;, add the repository under Runners in the console, and compare the job log and the bill with the original over a week.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;These vendor pages were read on 25 Oct 2026. Prices and limits change, and each vendor&amp;#39;s own page is the authority.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Platform&lt;/th&gt;&lt;th&gt;Pages&lt;/th&gt;&lt;th&gt;Checked&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Promigence&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/guides/github-actions-runner&quot;&gt;GitHub Actions runner guide&lt;/a&gt;, &lt;a href=&quot;https://www.promigence.ai/for/ci-runners&quot;&gt;CI runners&lt;/a&gt;, &lt;a href=&quot;https://www.promigence.ai/pricing&quot;&gt;Pricing&lt;/a&gt;&lt;/td&gt;&lt;td&gt;25 Oct 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GitHub&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://docs.github.com/en/actions/concepts/runners/github-hosted-runners&quot; rel=&quot;noopener&quot;&gt;GitHub-hosted runners&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/reference/runners/github-hosted-runners&quot; rel=&quot;noopener&quot;&gt;GitHub-hosted runners reference&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/concepts/runners/larger-runners&quot; rel=&quot;noopener&quot;&gt;Larger runners&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/reference/runners/larger-runners&quot; rel=&quot;noopener&quot;&gt;Larger runners reference&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/billing/reference/actions-runner-pricing&quot; rel=&quot;noopener&quot;&gt;Actions runner pricing&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/billing/concepts/product-billing/github-actions&quot; rel=&quot;noopener&quot;&gt;GitHub Actions billing&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/reference/limits&quot; rel=&quot;noopener&quot;&gt;Actions limits&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/reference/security/secure-use&quot; rel=&quot;noopener&quot;&gt;Secure use reference&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/concepts/runners/self-hosted-runners&quot; rel=&quot;noopener&quot;&gt;Self-hosted runners&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/how-tos/manage-runners/self-hosted-runners/add-runners&quot; rel=&quot;noopener&quot;&gt;Adding self-hosted runners&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/actions/concepts/runners/runner-groups&quot; rel=&quot;noopener&quot;&gt;Runner groups&lt;/a&gt;, &lt;a href=&quot;https://docs.github.com/en/enterprise-server@latest/admin/managing-github-actions-for-your-enterprise/getting-started-with-github-actions-for-your-enterprise/getting-started-with-github-actions-for-github-enterprise-server&quot; rel=&quot;noopener&quot;&gt;GitHub Actions for GitHub Enterprise Server&lt;/a&gt;&lt;/td&gt;&lt;td&gt;25 Oct 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Blacksmith&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://docs.blacksmith.sh/introduction/quickstart&quot; rel=&quot;noopener&quot;&gt;Quickstart&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/blacksmith-runners/overview&quot; rel=&quot;noopener&quot;&gt;Instance types&lt;/a&gt;, &lt;a href=&quot;https://www.blacksmith.sh/pricing&quot; rel=&quot;noopener&quot;&gt;Pricing&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/blacksmith-administration/github-app&quot; rel=&quot;noopener&quot;&gt;GitHub App&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/introduction/github-enterprise&quot; rel=&quot;noopener&quot;&gt;GitHub Enterprise&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/introduction/settings&quot; rel=&quot;noopener&quot;&gt;Settings&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/blacksmith-caching/dependencies-sticky-disks&quot; rel=&quot;noopener&quot;&gt;Sticky disks&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/blacksmith-observability/ssh-access&quot; rel=&quot;noopener&quot;&gt;SSH access&lt;/a&gt;, &lt;a href=&quot;https://docs.blacksmith.sh/blacksmith-runners/static-ip&quot; rel=&quot;noopener&quot;&gt;Static IP&lt;/a&gt;&lt;/td&gt;&lt;td&gt;25 Oct 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Depot&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://depot.dev/docs/github-actions/overview&quot; rel=&quot;noopener&quot;&gt;GitHub Actions runners&lt;/a&gt;, &lt;a href=&quot;https://depot.dev/docs/github-actions/quickstart&quot; rel=&quot;noopener&quot;&gt;Quickstart&lt;/a&gt;, &lt;a href=&quot;https://depot.dev/docs/github-actions/runner-types&quot; rel=&quot;noopener&quot;&gt;Runner types&lt;/a&gt;, &lt;a href=&quot;https://depot.dev/pricing&quot; rel=&quot;noopener&quot;&gt;Pricing&lt;/a&gt;, &lt;a href=&quot;https://depot.dev/changelog/2024-07-15-github-actions-usage-caps&quot; rel=&quot;noopener&quot;&gt;Usage caps&lt;/a&gt;, &lt;a href=&quot;https://depot.dev/docs/github-actions/how-to-guides/egress-filtering&quot; rel=&quot;noopener&quot;&gt;Egress filtering&lt;/a&gt;&lt;/td&gt;&lt;td&gt;25 Oct 2026&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;If anything on this page is out of date or wrong, write to support@promigence.ai and we will correct it and note the date.&lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>Time to feedback: the delay that matters for coding agents</title>
      <link>https://www.promigence.ai/blog/time-to-feedback-coding-agents</link>
      <guid isPermaLink="true">https://www.promigence.ai/blog/time-to-feedback-coding-agents</guid>
      <pubDate>Mon, 19 Oct 2026 12:00:00 GMT</pubDate>
      <dc:creator>Harshraj</dc:creator>
      <category>Guides</category>
      <category>guides</category>
      <category>coding agents</category>
      <category>warm builds</category>
      <description>A coding agent edits and checks its work dozens of times in one task. The arithmetic of why that loop outweighs how fast a sandbox starts, what keeps the loop short, and how to time your own.</description>
      <content:encoded>&lt;h2 id=&quot;the-short-answer&quot;&gt;Does sandbox start time matter for AI coding agents?&lt;/h2&gt;
&lt;p&gt;For a coding agent, the delay that decides how long a task takes is the edit-then-check loop: change a file, run the type-checker or the tests, read the result, go again. One task repeats that loop dozens of times. The sandbox starts once. So a check that runs a few seconds slower than it should can cost more over a task than a slow start, and the loop is the thing to measure first.&lt;/p&gt;
&lt;h2 id=&quot;what-one-step-of-the-loop-is&quot;&gt;What one step of the loop is&lt;/h2&gt;
&lt;p&gt;A coding agent works in steps. The model reads the code and decides on a change, the agent applies it, and then it runs a check to learn whether the change worked. The check is whatever your project uses to tell right from wrong: a type-check, a build, a test file or a linter. Its output goes back to the model, which plans the next edit.&lt;/p&gt;
&lt;p&gt;Reading and deciding belong to the model. Applying the edit and running the check happen in the environment, and that half is what your infrastructure decides. Promigence&amp;#39;s own site states the belief behind this post plainly: time to feedback is the delay that matters in an agent loop, and cold start is a small part of it.&lt;/p&gt;
&lt;h2 id=&quot;the-arithmetic&quot;&gt;The arithmetic&lt;/h2&gt;
&lt;p&gt;Here is a worked example. The step count and the slow check time are example inputs, so put in your own; the other figures are measured numbers from the Promigence home page.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;One task, 40 edit-then-check steps (example count)

Measured step, warm repository:   40 × 0.66 s  = 26.4 s
Example slow check:               40 × 30 s    = 1,200 s, or 20 minutes
Sandbox ready, paid once:         8 ms         = 0.008 s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The measured step is an edit followed by a type-check on a warm repository, with 4 vCPU: 0.66 s at the median, 0.80 s under load (n = 30). The ready time is from create to first command at 2 vCPU / 4 GiB: 8 ms at the median, unloaded (n = 100).&lt;/p&gt;
&lt;p&gt;Put those side by side. At the measured step time, 40 steps spend 26.4 seconds in the environment, and the start is about 0.03% of that. At 30 seconds a check, the same task waits 20 minutes on checks. No start time gets that back.&lt;/p&gt;
&lt;p&gt;The model&amp;#39;s own thinking time comes on top in both cases. It does not change with the environment, which is why the environment&amp;#39;s half of the step is the part worth working on.&lt;/p&gt;
&lt;p&gt;The home page also times a whole task: 20 steps on a 3 GB repository, 43.7 s at the median, 58.0 s under load (n = 30).&lt;/p&gt;
&lt;h2 id=&quot;why-the-loop-gets-slow&quot;&gt;Why the loop gets slow&lt;/h2&gt;
&lt;p&gt;From where you sit, a slow check usually has one of a few causes.&lt;/p&gt;
&lt;p&gt;Setup is inside the loop. If the environment does not already have the project installed and built, the first check pays for the install and the build. If every step gets a fresh environment, every check pays it.&lt;/p&gt;
&lt;p&gt;The check runs somewhere else. An agent that pushes a branch and waits for a CI run, or copies the repository to another machine to test it, pays the queue and the transfer on every step.&lt;/p&gt;
&lt;p&gt;The check does more than the step needs. Running the whole suite after a one-line change is slower than running the tests that cover it, and that part is yours to tune whatever environment you use.&lt;/p&gt;
&lt;h2 id=&quot;what-keeps-the-loop-short&quot;&gt;What keeps the loop short&lt;/h2&gt;
&lt;p&gt;Start the agent on a project that is already installed and checked. Build a snapshot once: your repository at a pinned commit, the install and the build as setup steps, and your own test command as the verify step. A snapshot whose verify command fails is never stored, so an agent never starts on a broken environment. Every sandbox started from a good snapshot opens with that work done, and the agent&amp;#39;s first check runs against a project that is ready.&lt;/p&gt;
&lt;p&gt;Run the check where the code is. The agent edits files in the sandbox and runs the check in the same sandbox, on the same files, with no push and no queue in between. From the command line that is &lt;code&gt;promigence exec --sandbox &amp;lt;id&amp;gt; -- &amp;lt;your check command&amp;gt;&lt;/code&gt;, and the SDKs have the same call.&lt;/p&gt;
&lt;p&gt;Keep one sandbox for the whole task. A fresh environment per step brings setup back into the loop. If the task waits on a person between sessions, pause the sandbox: paused time is not billed, and waking a paused sandbox took 104 ms at the median from resume to the first database query (n = 100), 127 ms under load.&lt;/p&gt;
&lt;p&gt;Size it for the check. The measured step above ran on 4 vCPU, and a new account can use sizes up to large, with 8 vCPU.&lt;/p&gt;
&lt;h2 id=&quot;how-to-measure-your-own&quot;&gt;How to measure your own&lt;/h2&gt;
&lt;p&gt;Time the edit-then-check step where the agent runs it, enough times to get a median:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# in the environment your agent uses: one small edit, then your check, 20 times
TIMEFORMAT=%R
for i in $(seq 1 20); do
  { time sh -c &amp;#39;&amp;lt;apply one small edit&amp;gt; &amp;amp;&amp;amp; &amp;lt;your check command&amp;gt;&amp;#39; &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 ; } 2&amp;gt;&amp;amp;1
done | sort -n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With 20 sorted times, the median sits between the 10th and the 11th line. Then do three more things with it.&lt;/p&gt;
&lt;p&gt;Measure the first check apart from the rest. A first check far slower than the others means setup is leaking into the loop.&lt;/p&gt;
&lt;p&gt;If your agent drives the environment over the network, time the step from the agent&amp;#39;s side too. Each call adds your network&amp;#39;s round trip, and the agent feels that as part of the step.&lt;/p&gt;
&lt;p&gt;Count the steps in a real task from your agent&amp;#39;s logs and multiply. That product is your time to feedback per task. Put the start time you were worried about next to it.&lt;/p&gt;
&lt;p&gt;To try the same loop on Promigence, build a snapshot of your project, start one sandbox from it, and run the loop above inside it with &lt;code&gt;promigence exec&lt;/code&gt;. The &lt;a href=&quot;https://www.promigence.ai/docs/quickstart&quot;&gt;quickstart&lt;/a&gt; covers the snapshot, and &lt;a href=&quot;https://www.promigence.ai/docs/guides/claude-code-and-codex&quot;&gt;running a coding agent in a sandbox&lt;/a&gt; covers the agent. To get started, leave your work email on www.promigence.ai or write to support@promigence.ai.&lt;/p&gt;
&lt;h2 id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;
&lt;h3 id=&quot;what-is-time-to-feedback-for-a-coding-agent&quot;&gt;What is time to feedback for a coding agent?&lt;/h3&gt;
&lt;p&gt;It is how long the agent waits between making a change and learning whether it worked: applying the edit, running the check and getting the result back. The agent pays it on every step of a task, so it adds up fast.&lt;/p&gt;
&lt;h3 id=&quot;does-sandbox-start-time-matter-for-coding-agents&quot;&gt;Does sandbox start time matter for coding agents?&lt;/h3&gt;
&lt;p&gt;Less than the loop does. A start is paid once per task and a check on every step. On Promigence&amp;#39;s measured numbers a sandbox is ready in 8 ms and one edit-then-check step on a warm repository takes 0.66 s, so over 40 steps the start is about 0.03% of the time spent checking.&lt;/p&gt;
&lt;h3 id=&quot;how-do-i-measure-my-agents-time-to-feedback&quot;&gt;How do I measure my agent&amp;#39;s time to feedback?&lt;/h3&gt;
&lt;p&gt;Run one small edit and your check command 20 times where the agent works, take the median, and multiply it by the number of steps in a real task from your agent&amp;#39;s logs. Time the first check on its own as well, because a slow first check means setup is inside the loop.&lt;/p&gt;
&lt;h3 id=&quot;how-do-i-make-the-edit-then-check-loop-faster&quot;&gt;How do I make the edit-then-check loop faster?&lt;/h3&gt;
&lt;p&gt;Start the agent in an environment that already has the project installed and checked, run the check in that same environment, and keep one environment for the whole task. Then give it enough vCPUs for the check.&lt;/p&gt;
&lt;h3 id=&quot;what-does-promigence-measure-for-an-agent-step&quot;&gt;What does Promigence measure for an agent step?&lt;/h3&gt;
&lt;p&gt;An edit followed by a type-check on a warm repository with 4 vCPU: 0.66 s at the median and 0.80 s under load, over 30 runs. The figures and their conditions are on the home page.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Every page below was read on 19 Oct 2026. The 40 steps and the 30-second check are example inputs chosen for the arithmetic, not measurements.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;What&lt;/th&gt;&lt;th&gt;Source&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Agent step on a warm repo: 0.66 s, under load 0.80 s (edit, then type-check, 4 vCPU, n=30, p50)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/#numbers&quot;&gt;Promigence numbers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sandbox ready to run a command: 8 ms (create to first command, 2 vCPU / 4 GiB, n=100, p50, unloaded)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/#numbers&quot;&gt;Promigence numbers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Whole coding-agent task: 43.7 s, under load 58.0 s (20 steps on a 3 GB repo, n=30, p50)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/#numbers&quot;&gt;Promigence numbers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Wake a paused sandbox: 104 ms, under load 127 ms (resume to first database query, n=100, p50)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/#numbers&quot;&gt;Promigence numbers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Time to feedback as the delay that matters, cold start a small part of it&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/ai-instructions&quot;&gt;Information for AI assistants&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Setup steps, the verify command, nothing stored when it fails; each call adds your network&amp;#39;s round trip&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/quickstart&quot;&gt;Promigence quickstart&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Running a command in one sandbox with &lt;code&gt;promigence exec --sandbox&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/cli&quot;&gt;Promigence CLI reference&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Paused sandboxes not billed; sizes up to large (8 vCPU) for a new account&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/limits&quot;&gt;Promigence limits and notices&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Updated 2026-10-19&lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>What is Promigence? Sandboxes for AI agents, explained</title>
      <link>https://www.promigence.ai/blog/what-is-promigence</link>
      <guid isPermaLink="true">https://www.promigence.ai/blog/what-is-promigence</guid>
      <pubDate>Mon, 19 Oct 2026 12:00:00 GMT</pubDate>
      <dc:creator>Harshraj</dc:creator>
      <category>Guides</category>
      <category>guides</category>
      <category>agent sandboxes</category>
      <category>snapshots</category>
      <category>pricing</category>
      <description>Promigence is a sandbox platform for AI agents: production-grade sandboxes, ready in milliseconds, fast at scale and billed by the second. What it is, what teams run on it, how using it looks, and how to get started.</description>
      <content:encoded>&lt;h2 id=&quot;the-short-answer&quot;&gt;What is Promigence?&lt;/h2&gt;
&lt;p&gt;Promigence is a sandbox platform for AI agents. The site puts it in one line: &amp;quot;Production-grade sandboxes for AI agents. Ready in milliseconds, fast at scale, billed by the second.&amp;quot;&lt;/p&gt;
&lt;p&gt;A sandbox here is an isolated computer in the cloud where an agent can write code, run it and use tools without touching anyone else&amp;#39;s systems. Yours opens on your own project, already installed and checked by your own test command, so the agent starts on the task instead of on setup. One can become a thousand identical copies, and a run&amp;#39;s cost is known before it begins.&lt;/p&gt;
&lt;h2 id=&quot;the-name&quot;&gt;The name&lt;/h2&gt;
&lt;p&gt;It is spelled P-R-O-M-I-G-E-N-C-E. Search engines that have not met the word yet like to correct it to &amp;quot;prominence&amp;quot;, so if you searched for Promigence and got pages about prominence, you typed it right.&lt;/p&gt;
&lt;p&gt;The product is Promigence. The company behind it is Promigence AI, Inc., a Delaware corporation based in San Francisco, and its home is www.promigence.ai.&lt;/p&gt;
&lt;h2 id=&quot;why-an-agent-needs-a-sandbox&quot;&gt;Why an agent needs a sandbox&lt;/h2&gt;
&lt;p&gt;An agent runs code nobody reviewed. A model wrote it, and anyone who can type into your product can steer that model. Run the code on a laptop or on your own servers and a mistake, or a prompt someone planted, has the same reach as the account it runs under. A sandbox gives each task a computer of its own, with its own files, network rules and spend cap, so whatever goes wrong stays inside it and ends when the task ends.&lt;/p&gt;
&lt;h2 id=&quot;what-teams-run-on-it&quot;&gt;What teams run on it&lt;/h2&gt;
&lt;p&gt;Take coding agents. A coding agent gets a copy of your repository that is already set up, works on a task in it, and hands back the change. &lt;a href=&quot;https://www.promigence.ai/docs/guides/claude-code-and-codex&quot;&gt;Running a coding agent in a sandbox&lt;/a&gt; takes one command.&lt;/p&gt;
&lt;p&gt;CI jobs fit too. A workflow on a supported hosted CI service moves onto Promigence sandboxes with a one-line change and is billed per second; the guide is &lt;a href=&quot;https://www.promigence.ai/docs/guides/github-actions-runner&quot;&gt;a CI runner in two lines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then there is code your users&amp;#39; AI writes. If your product lets a model write and run code for the people using it, give each user or session a sandbox of its own, with the network off or limited to an allow-list, plus a spend cap and a timeout. Three guides cover that shape: &lt;a href=&quot;https://www.promigence.ai/docs/guides/run-ai-written-code-safely&quot;&gt;running AI-written code safely&lt;/a&gt;, &lt;a href=&quot;https://www.promigence.ai/docs/guides/sandbox-per-user&quot;&gt;a sandbox for every user of your product&lt;/a&gt; and &lt;a href=&quot;https://www.promigence.ai/docs/guides/mcp-execute-tool&quot;&gt;a code-execution tool your agent can call&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Evals and reinforcement learning need many identical environments at once. Build the environment once, then start a fresh copy for every eval task or RL episode, a thousand at once if the work calls for it. The validity report that comes back separates environment failures from task failures, so a broken environment never counts against your agent, and a snapshot named by a hash of its contents lets a result cite the exact environment it ran in. &lt;a href=&quot;https://www.promigence.ai/docs/guides/snapshot-and-fork&quot;&gt;Snapshot after an install, then start ten copies&lt;/a&gt; shows the pattern, and the &lt;a href=&quot;https://www.promigence.ai/docs/guides&quot;&gt;guides page&lt;/a&gt; lists the eval harnesses and agent frameworks that have a guide so far.&lt;/p&gt;
&lt;p&gt;Agents inside apps get the same treatment: a sandbox per user that can sleep when the user stops and wake on their next call. A paused sandbox is not billed by the second and is kept for 30 days. The same pattern serves security testing: give a testing agent &lt;a href=&quot;https://www.promigence.ai/docs/guides/ai-pentest-fresh-target&quot;&gt;a fresh copy of your own application for every attempt&lt;/a&gt; with outbound access limited to what the test allows.&lt;/p&gt;
&lt;h2 id=&quot;how-using-it-looks&quot;&gt;How using it looks&lt;/h2&gt;
&lt;p&gt;There are three steps, from the command line or the SDKs.&lt;/p&gt;
&lt;p&gt;First, build a snapshot of your project. You name a base image with your toolchain, the setup steps (a clone of your repository at a pinned commit, then the install) and a verify command, which is your own test command. If the verify command does not exit zero, nothing is stored.&lt;/p&gt;
&lt;p&gt;Second, price the run before it starts. &lt;code&gt;promigence run quote&lt;/code&gt; gives a ceiling, as if every sandbox ran for its whole timeout, and &lt;code&gt;--cap&lt;/code&gt; turns that into a hard limit: a run quoted over its cap is refused before anything starts, and a sandbox that reaches its cap is paused with its files kept. The quickstart&amp;#39;s example prices 20 small sandboxes for up to 15 minutes each at $0.83 at most.&lt;/p&gt;
&lt;p&gt;Third, start the copies. One command starts as many sandboxes as you ask for, runs your command in each and prints the validity report. A new account runs 20 at once.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;promigence snapshot create \
  --image &amp;lt;your base image&amp;gt; \
  --setup &amp;quot;&amp;lt;clone your repository at a pinned commit&amp;gt;&amp;quot; \
  --setup &amp;quot;&amp;lt;install your dependencies&amp;gt;&amp;quot; \
  --verify &amp;quot;&amp;lt;your test command&amp;gt;&amp;quot; \
  --tier small --alias myapp --wait --wait-timeout 10m

promigence run quote --snapshot myapp --count 20 --timeout 15m
promigence run --snapshot myapp --count 20 --cap 1 -- &amp;lt;your command&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Billing is per second, at $0.0504 per vCPU-hour plus $0.0162 per GiB-hour. A small sandbox (2 vCPU, 4 GiB) comes to $0.17 an hour, and one that runs for ten minutes is billed for ten minutes. Paused time costs nothing.&lt;/p&gt;
&lt;h2 id=&quot;numbers-you-can-check&quot;&gt;Numbers you can check&lt;/h2&gt;
&lt;p&gt;The home page publishes its measurements with the conditions attached. Two matter on a first look. A sandbox is ready to run its first command 8 ms after it is created, at the median (create to first command, 2 vCPU / 4 GiB, n = 100, unloaded). Start 100 at once and even the slowest 5% finish in under a second: 0.94 s at the 95th percentile, with every run completed (n = 400).&lt;/p&gt;
&lt;h2 id=&quot;security&quot;&gt;Security&lt;/h2&gt;
&lt;p&gt;No sandbox can see, reach or address another, yours or anyone else&amp;#39;s, and that boundary is tested by attacking it. A sandbox can have full outbound access, none, or an allow-list of the destinations it needs. Secrets are stored once, given only to the commands that name them, and never written into a snapshot you build. Your code is not used to train models.&lt;/p&gt;
&lt;h2 id=&quot;how-to-get-started&quot;&gt;How to get started&lt;/h2&gt;
&lt;p&gt;Leave your work email under Get started on www.promigence.ai, or write to support@promigence.ai. New accounts start with $50 of free credit for 30 days: $10 claimed in the browser with no card, and $40 more once a card is added.&lt;/p&gt;
&lt;p&gt;From there, the &lt;a href=&quot;https://www.promigence.ai/docs/quickstart&quot;&gt;quickstart&lt;/a&gt; goes from nothing to 20 verified runs in about ten minutes, most of it the first build. To see your own workload first, send a repository and its command for the free validity report: 1,000 runs, the timings, the failures and an exact price.&lt;/p&gt;
&lt;h2 id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;
&lt;h3 id=&quot;what-is-promigence&quot;&gt;What is Promigence?&lt;/h3&gt;
&lt;p&gt;A sandbox platform for AI agents: production-grade, isolated sandboxes that start in milliseconds, stay fast at a thousand at once and bill by the second. Each one opens on your own project, already installed and checked by your test command.&lt;/p&gt;
&lt;h3 id=&quot;is-it-promigence-or-prominence&quot;&gt;Is it Promigence or prominence?&lt;/h3&gt;
&lt;p&gt;It is spelled P-R-O-M-I-G-E-N-C-E, the name of a sandbox platform for AI agents made by Promigence AI, Inc. Prominence is an ordinary English word, and search engines sometimes swap one for the other.&lt;/p&gt;
&lt;h3 id=&quot;what-can-you-run-on-promigence&quot;&gt;What can you run on Promigence?&lt;/h3&gt;
&lt;p&gt;Any agent work: coding agents, background agents, code review, CI jobs, evals, reinforcement-learning rollouts and a sandbox per user inside an app. Existing CI jobs move over with a one-line change to the workflow.&lt;/p&gt;
&lt;h3 id=&quot;how-much-does-promigence-cost&quot;&gt;How much does Promigence cost?&lt;/h3&gt;
&lt;p&gt;Usage is billed per second at $0.0504 per vCPU-hour plus $0.0162 per GiB-hour, about $0.17 an hour for a small sandbox (2 vCPU, 4 GiB). A run is quoted before it starts and held to the spend cap you set, and paused time is not billed. Plans are in the &lt;a href=&quot;https://www.promigence.ai/#pricing&quot;&gt;pricing section&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;how-do-i-get-started&quot;&gt;How do I get started?&lt;/h3&gt;
&lt;p&gt;Leave your work email under Get started on www.promigence.ai, or write to support@promigence.ai. New accounts get $50 of free credit for 30 days.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Every page below was read on 19 Oct 2026.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;What&lt;/th&gt;&lt;th&gt;Source&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;The one-line description, the Get started form&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/&quot;&gt;Promigence home&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ready to run a command in 8 ms (create to first command, 2 vCPU / 4 GiB, n=100, p50, unloaded); 100 at once, slowest 5% in 0.94 s (p95, every run completed, n=400)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/#numbers&quot;&gt;Promigence numbers&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Per-second billing, the plans, $50 of free credit&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/#pricing&quot;&gt;Promigence pricing&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$0.0504 per vCPU-hour plus $0.0162 per GiB-hour, $0.17 an hour for a small sandbox, the $10 and $40 credit split, what teams run on it, the SDKs&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/faq&quot;&gt;Promigence FAQ&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;The verify command, nothing stored when it fails, the quote and cap, the $0.83 example, about ten minutes&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/quickstart&quot;&gt;Promigence quickstart&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Spend caps, paused sandboxes not billed and kept for 30 days, 20 sandboxes at once for a new account&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/limits&quot;&gt;Promigence limits and notices&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Isolation, testing by attack, network choices, secrets, no training on your code, the free validity report&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/security&quot;&gt;Promigence security&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;The company, Delaware, San Francisco, snapshots named by hash&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/ai-instructions&quot;&gt;Information for AI assistants&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;The guides linked above&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.promigence.ai/docs/guides&quot;&gt;Promigence guides&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Updated 2026-10-19&lt;/p&gt;</content:encoded>
    </item>
  </channel>
</rss>

