Skip to content
Latchkey LogoLatchkey home

Namespace vs GitHub hosted runners, and the unit minute

Namespace vs GitHub hosted runners is awkward to compare because Namespace does not sell runner minutes: it sells unit minutes, where one unit is 1 vCPU with 2 GB of RAM for a minute, times a platform multiplier. Convert it and a 2 vCPU Linux runner is $0.002 a minute prepaid against GitHub's $0.006, on 4 GB of RAM rather than 8, which is the caveat that decides most of this page.

Monthly bars: GitHub-hosted $184, Namespace $190 matched on memory or $160 at 4 GB, Latchkey $149
10,000 Linux minutes at 2 vCPU plus 2,000 macOS minutes a month, at rates read 20 September 2026. On the shape that matches GitHub on memory the month is 160,000 unit minutes and $190; on the 4 GB shape it is 140,000 and $160.

GitHub-hosted runners need no explanation and no account: an included allowance of 2,000 to 50,000 minutes a month by plan, a standard private-repo Linux runner of 2 vCPU, 8 GB and 14 GB of disk, every platform GitHub sells, and free unlimited use on public repositories at 4 vCPU and 16 GB.

Namespace sells compute across devboxes, Docker builds and GitHub Actions runners from one meter. You pick a shape through a label such as nscloud-ubuntu-24.04-amd64-8x16, and the bill is vCPU count times minutes times a platform multiplier of 1 for Linux, 2 for Windows, 10 for macOS and 7 for Linux on Apple silicon. Rates come in two columns, prepaid inside a plan and about 50% higher as overage outside it.

Every cell below was read from the vendor's own public pricing or documentation page on 20 September 2026. Where a vendor does not publish a number, the cell says "not published" instead of carrying a guess.

GitHub-hosted, Namespace and Latchkey side by side (read 20 September 2026)

GitHub-hostedNamespaceLatchkey
Price per minute, 2 vCPU Linux x64$0.006 (2 vCPU, 8 GB RAM, 14 GB SSD on a private repo; free on public repos)$0.002 prepaid, $0.003 overage (2 vCPU, 4 GB RAM). The 2 vCPU with 8 GB shape is $0.004 prepaid$0.0025 (2 vCPU, 8 GB RAM, 100 GB disk)
Price per minute, 4 vCPU Linux x64$0.012 as a larger runner with 16 GB$0.004 prepaid at 4 vCPU and 8 GB; $0.008 prepaid at 4 vCPU and 16 GB$0.005 (4 vCPU, 16 GB RAM, 100 GB disk)
Free tier2,000 minutes a month on Free, 3,000 on Team, 50,000 on Enterprise Cloud, private repos onlyA 30-day trial of the pay-as-you-go Developer plan; no standing monthly allowance30-day trial, then 2,000 included minutes a month on Developer, 4,000 on Launch, 6,000 on Scale
Billing granularityEvery job is rounded up to the nearest whole minuteA one-minute minimum, then the following 15-second steps rounded down: its docs say 70 seconds bills as one minutePer minute
Runner sizes and OSLinux x64 and arm64, Windows x64 and arm64, macOS on Apple silicon and Intel; larger runners to 96 vCPUShapes from 1 vCPU up to 64 vCPU and 512 GB on amd64 and arm64; Windows; macOS on Apple silicon; Linux on Apple silicon in early access2, 4, 8 and 16 vCPU, Ubuntu 24.04 on x86_64 only. arm64, Windows and macOS are not offered
Cache: type, limit, persistenceactions/cache, 10 GB per repository, entries removed after 7 days without access, restorable only from the same or the default branchCache volumes attached by label, snapshots at $0.002/GB-hour with 5,000 GB-hours free on Team and 15,000 on Business, storage at $0.0048/GB-daySize not published. latchkey-dev/cache-action@v1 swaps one line for actions/cache, keeping path, key and restore-keys; entries are isolated per organization, versioned by OS, kept 14 days; a failed restore warns rather than failing the job
Docker build accelerationNone built in. cache-to: type=gha writes into the same 10 GB storeDocker builds are a separate meter: 1,000 included on Team and 2,500 on Business, $0.05 per build on Developer, $10 per 1,000 after that, with cross-invocation cachinglatchkey-dev/docker-cache-action@v1, layers held in a Latchkey-managed private registry per organization
Concurrency limits20 concurrent jobs on Free, 40 on Pro, 60 on Team, 500 on Enterprise Cloud. macOS is capped separately at 5, or 50 on EnterpriseDenominated in vCPU, not jobs: 32 vCPU on Developer, 64 on Team, 160 on Business. macOS is 12, 24 and 48 vCPUNot published; warm-pool capacity varies by plan
Where jobs runGitHub's own hosted fleetNamespace Compute: AMD EPYC for amd64, AmpereOne or Apple silicon for arm64, M5 Max and M4 Pro for macOSLatchkey's own AWS estate on m6a-class hosts, one job per runner, private network, destroyed after the job
Self-healing or retriesNone. A failed job waits for a person, or for retry logic you wrote yourselfNot offeredBuilt in: transient failures are diagnosed and retried inside the run
Setup change requiredNone; this is the defaultChange runs-on to one nscloud label, plus companion labels for a cache volumeA runs-on label change. GitHub organization accounts only

How to compute a Namespace bill

The formula Namespace publishes is vCPU count times minutes times the platform multiplier, and its own worked example is 4 vCPU for 5 minutes on Linux, which is 20 unit minutes. Shapes that are not the standard 1 vCPU to 2 GB ratio are charged on whichever is larger, cores or half the memory, so a 2 vCPU shape with 8 GB counts as 4 units rather than 2. That rule is the whole trick: memory is priced, it is just priced as cores.

ShapeUnit minutes per minutePrepaidOverageGitHub-hosted equivalent
Linux 2 vCPU, 4 GB2$0.002$0.003$0.006 at 2 vCPU and 8 GB
Linux 2 vCPU, 8 GB4$0.004$0.006$0.006 at 2 vCPU and 8 GB
Linux 4 vCPU, 16 GB8$0.008$0.012$0.012 at 4 vCPU and 16 GB
Linux 8 vCPU, 32 GB16$0.016$0.024$0.022 at 8 vCPU and 32 GB
Windows 4 vCPU, 16 GB16 (2x multiplier)$0.016$0.024$0.022 at 4 cores
macOS 6 vCPU, 14 GB60 (10x multiplier)$0.06$0.09$0.062 on a 3 or 4 core runner

Line the shapes up by memory and the picture is less dramatic than the headline rate but still one-sided: at 2 vCPU and 8 GB, the machine GitHub actually gives you, Namespace prepaid is $0.004 against $0.006, a third cheaper rather than two thirds. At 4 vCPU and 16 GB it is $0.008 against $0.012, the same third. The two-thirds saving only exists if your jobs are genuinely happy on 4 GB of RAM, and a Java, Gradle or large Node build usually is not.

The other end of the table is where the multipliers bite. macOS costs 10 unit minutes per vCPU-minute, so a 6 vCPU macOS runner is $0.06 prepaid and $0.09 as overage against GitHub's $0.062, which means Namespace is cheaper on macOS only while you stay inside a plan. Windows doubles the same way. The cheap Linux rate tells you nothing about either.

The rounding difference nobody prices

GitHub rounds every job up to the nearest whole minute. Namespace applies a one-minute minimum and then rounds the following 15-second steps down, and its documentation gives the example that 70 seconds of usage is one billable minute. On a single job that is noise; on a matrix it is not.

Take 40 jobs that each finish in 70 seconds, which is 46.7 minutes of real work. GitHub bills 80 minutes, because every job rounds from 1 minute 10 seconds to 2, and at $0.006 that is $0.48. Namespace bills 40 minutes, one per job, and a 2 vCPU 4 GB shape is 2 unit minutes each, so 80 unit minutes at $0.001 prepaid is $0.08. Most of that $0.40 gap is the rate: billing the same 80 minutes at $0.002 would be $0.16. The remaining $0.08, a fifth of the gap, is rounding, and rounding is the part you cannot optimize away by buying a smaller runner.

Speed

Not benchmarked yet; the runner benchmark report will replace this section. We have not run the same workload on these runners ourselves, and until we have, there is no number here worth quoting.

The cheap way to get a real answer is to point one slow job at each candidate for a week, because runner selection is per job and the Actions run log gives you the timings for free.

Cost: the same month, priced three ways

The usual workload, 10,000 Linux minutes at 2 vCPU plus 2,000 macOS minutes a month on a private repository. For Namespace the arithmetic runs in unit minutes, and the shape decides it: matched to the machine GitHub gives you, a 2 vCPU runner with 8 GB is 4 units a minute and the Linux half is 40,000 unit minutes; the 4 GB shape is 2 units a minute and 20,000. The macOS half is 2,000 times 60 units either way, and the $100 Team plan covers the first 100,000 unit minutes.

10,000 Linux minutes at 2 vCPU2,000 macOS minutesMonthly total
GitHub-hosted$60 at $0.006/min$124 at $0.062/min$184
Namespace on Team, 2 vCPU and 8 GB40,000 unit minutes120,000 unit minutes$190: the $100 plan plus 60,000 overage unit minutes at $0.0015
Namespace on Team, 2 vCPU and 4 GB20,000 unit minutes120,000 unit minutes$160: the $100 plan plus 40,000 overage unit minutes at $0.0015
Latchkey$25 at $0.0025/minNot offered: $124 on GitHub-hosted$149 plus $5 to $49 a month for the plan

On the machine that matches GitHub's, Namespace is $190 against $184, so on this particular mix it is six dollars dearer rather than cheaper, and the cheaper row underneath it buys half the memory. What moves the total is macOS: 120,000 of those unit minutes are 2,000 macOS minutes at a 10x multiplier, which swamps a Linux rate that is a third lower. Note also what the $100 buys. It is not a fee on top of the compute, it is the compute, so the comparison holds only if you would actually use 100,000 unit minutes; a team that burns 30,000 pays $100 for 30,000. Latchkey's own plan is $5 to $49 a month on top of that compute, and its 2,000 to 6,000 included minutes are not netted off, so the figure is gross on both counts.

What GitHub-hosted still wins on

  • Public repositories, where standard runners are free and unlimited on a 4 vCPU and 16 GB machine.
  • Included minutes with no plan decision: 2,000 on Free, 3,000 on Team, 50,000 on Enterprise Cloud, and no commitment to reach the best rate.
  • Memory per core. GitHub pairs 4 GB with each vCPU on its standard Linux runner; Namespace standard shapes pair 2 GB, and you buy cores to get memory.
  • A concurrency limit you can reason about. GitHub counts jobs, 20 to 500 by plan; Namespace counts vCPU, 32 on Developer and 64 on Team, so one 32 vCPU job can consume the whole Developer allowance.
  • Job duration. GitHub allows 6 hours per job; Namespace publishes a maximum instance duration of 3 hours on Developer and 5 on Team, rising to 24 on Business.
  • One vendor, one bill, one status page, and the reference images every action in the marketplace is tested against.

Switching: the exact diff

Namespace is a label change like everything else in this category, with one rule to remember: only one nscloud label is allowed in runs-on, and cache volumes arrive as companion labels rather than as inputs on a step. That makes the diff slightly longer than the usual one-liner and still nothing like a migration.

.github/workflows/ci.yml
 jobs:
   test:
-    runs-on: ubuntu-latest
+    runs-on: nscloud-ubuntu-24.04-amd64-4x8

   build:
-    runs-on: ubuntu-latest
+    runs-on:
+      - nscloud-ubuntu-24.04-amd64-8x16-with-cache
+      - nscloud-cache-tag-my-repository
+      - nscloud-cache-size-50gb

The verdict

Namespace is genuinely cheaper than GitHub-hosted on private-repo Linux, by a third at matched memory and by two thirds if your jobs fit in 4 GB, and its billing rounds in your favor where GitHub rounds against you. A cheap Linux rate is not the same as a cheap month, though: the worked example above, on the matched 8 GB shape, lands at $190 against GitHub's $184, because 2,000 macOS minutes at a 10x multiplier are most of the bill. The price of that is a model you have to do arithmetic in, a plan you have to commit to for the prepaid rate, and two ceilings that GitHub states differently: concurrency measured in vCPU rather than jobs, and a maximum instance duration of 3 hours on the entry plan against GitHub's 6. On public repositories the comparison does not start, because free and unlimited on a bigger machine beats every rate on this page. Neither vendor does anything about a job that fails for a mechanical reason, which is the line item both rate cards leave out.

Frequently asked questions

How much does Namespace cost per minute?
There is no single per-minute price, because Namespace bills unit minutes: one unit is 1 vCPU plus 2 GB of RAM for a minute, at $0.001 prepaid or $0.0015 as overage on Linux. A 2 vCPU shape with 4 GB is therefore $0.002 a minute prepaid, a 2 vCPU shape with 8 GB is $0.004, and a 4 vCPU shape with 16 GB is $0.008. Windows consumes units at 2x and macOS at 10x.
Is Namespace cheaper than GitHub-hosted runners?
On private repositories, yes, at every Linux shape: $0.004 against $0.006 at 2 vCPU and 8 GB, $0.008 against $0.012 at 4 vCPU and 16 GB, and $0.016 against $0.022 at 8 vCPU. On public repositories no, because standard GitHub-hosted runners are free and unlimited there. On macOS it depends on the plan: $0.06 prepaid beats GitHub's $0.062, and the $0.09 overage rate does not.
What is a unit minute?
One unit is 1 vCPU and 2 GB of RAM running for one minute, multiplied by a platform factor of 1 for Linux, 2 for Windows, 10 for macOS and 7 for Linux on Apple silicon. Shapes with more memory than the standard ratio are charged on half their memory instead of their cores, so 8 vCPU with 32 GB counts as 16 units a minute rather than 8. Namespace's own example is 4 vCPU for 5 minutes on Linux, which is 20 unit minutes.
What are the Namespace runner labels?
The machine label is nscloud-{os}-{arch}-{shape}, for example nscloud-ubuntu-24.04-amd64-8x16 for 8 vCPU and 16 GB, and only one nscloud label is allowed in runs-on. Cache volumes are added with a -with-cache suffix plus companion labels naming the cache tag and its size in gigabytes, which is also how you keep two repositories from sharing one volume by accident.

Related guides

References

Namespace is cheaper per prepaid minute. Latchkey is a flat $0.0025/min at 2 vCPU with no forecast to get right. Start free → 30-day trial · No credit card