• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / cli / 32408107964
62%
develop: 62%

Build:
Build:
LAST BUILD BRANCH: gh-readonly-queue/develop/pr-6330-4b5d8bec0b62855d59f4452efc85b02b2b7b5bfc
DEFAULT BRANCH: develop
Ran 20 Aug 2026 07:21PM UTC
Jobs 1
Files 95
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

20 Aug 2026 07:19PM UTC coverage: 62.406%. Remained the same
32408107964

push

github

web-flow
fix(cli): clamp edge-runtime nofile ulimit to the host hard limit (#6284)

## Summary

The Edge Runtime container was always created with `--ulimit
nofile=65536:65536` — a raise inherited from the Go CLI so many
concurrent Deno isolates can run (supabase/cli#5151). Sandboxed hosts
cap the hard nofile limit lower (e.g. 20,000 in the Claude Code
sandbox), their docker daemon shares that cap, and requesting more than
the daemon can grant fails the container start outright.

This adds `edgeRuntimeNofileUlimit(platformOs)` in `@supabase/stack` and
uses it at both docker call sites (stack service defs for the next
shell, and `shared/functions/serve.ts` for legacy `functions
serve`/`start`):

- On Linux, the requested value is clamped to the process's own hard
limit, read via `process.report.getReport().userLimits.open_files` (the
standard runtime API, implemented by both Bun and Node — verified under
Bun in a Linux container with a constrained `--ulimit`).
- The clamp only ever lowers the request, so the worst case on an exotic
setup (client more constrained than a remote/rootful daemon) is a
smaller fd budget, never a failed start.
- When the clamp lowers the request, the CLI emits a warning naming the
reduced limit ("Edge Runtime file descriptor limit lowered to N: …") so
the smaller fd budget is visible instead of silent. It surfaces through
`Output.warn` in `startEdgeRuntimeContainer`, covering both `functions
serve` and legacy `start`; the stack `ServiceDef` builder is pure with
no output channel and stays silent.
- Off Linux the full 65536 raise is kept, since the daemon runs in a VM
with its own limits.

The Go-parity divergence is documented in
`apps/cli/docs/go-cli-divergences.md`.

Reviewer notes: the helper stays a plain sync leaf (no failure
modes/retries/resources) per the repo's Effect-native carve-out — both
call sites are sync `ServiceDef` builders — and takes `platformOs` as
input to match how the stack threads `platform.os` instead of read... (continued)

5571 of 8927 relevant lines covered (62.41%)

6.65 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32408107964.1 20 Aug 2026 07:21PM UTC 95
62.41
GitHub Action Run
Source Files on build 32408107964
  • Tree
  • List 95
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32408107964
  • 3e2df928 on github
  • Prev Build on gh-readonly-queue/develop/pr-6281-3b4d6ec6500ee55a2e1b70f37ee4867eed22da6b (#32375036787)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc