DeployKit

Provider options

Configuration defaults and the capabilities each adapter actually implements.

Shared client options

Promise clients accept provider options plus memoryBudgetBytes, stagingBudgetBytes, maxFileBytes and onEvent. Effect adapter layer(options) accepts provider options plus the three limits; provide Telemetry.Observer separately for events.

OptionDefaultMeaning
memoryBudgetBytes256 MiBShared transfer reservations per client/service
stagingBudgetBytes256 MiBShared temporary-file reservations
maxFileBytes100,000,000Staging maximum; provider-specific smaller limits still apply
timeoutMs30000HTTP operation deadline including retry waits
retry.attempts4Ordinary transient retry budget, including first; short 429 waits may add attempts
retry.baseDelay250 msJittered exponential backoff when no server delay applies
fetchGlobal fetchOffline test/custom transport boundary; honors abort signal
baseUrlProvider API originOverride for controlled transports

These limits do not cap total process RSS. Callers still own source allocations and cross-process concurrency. Creation and activation remain single-attempt regardless of retry. Safe operations can repeat short 429 waits within the HTTP deadline without consuming the ordinary attempt budget. attempts: 1 disables these retries too.

Vercel

createClient comes from @deploykit/node/vercel. Effect exports are in @deploykit/vercel.

OptionType / behavior
tokenRequired string
teamIdOptional string; selects the destination team
uploadThrottle"conservative", "balanced", "fast", or { concurrency, intervalMs }; omitted is unpaced

layerConfig reads VERCEL_TOKEN (or VERCEL_API_KEY) and optional VERCEL_TEAM_ID.

Per-deploy optionDefaultValidation
uploadConcurrency8Integer 1–32
uploadOrder"manifest""manifest" or "largest-first"
uploadRounds3Integer 0–10; missing-content negotiation rounds

The Promise Vercel client exposes these options directly. The shared Effect service is typed against provider-neutral DeployOptions; use the Vercel adapter's lower-level provider/client contract when you need provider-specific per-deploy options. Throttling configuration belongs to the Vercel layer/client and is shared across its publishes.

See uploads, activation and access. Exact low-level HTTP interfaces are in the Vercel API reference.

Cloudflare Pages

createClient comes from @deploykit/node/cloudflare. Effect exports are in @deploykit/cloudflare.

OptionType / behavior
apiTokenRequired string
accountIdRequired string
previewBranchRequired when deploying to target: "preview"; must differ from the project’s actual production branch

layerConfig reads CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID. Use layer(options) when setting branches or other explicit options.

Pages does not support deferred activation, operation-ID reconciliation or SDK access settings. Check getCapabilities() (Promise) or capabilities (Effect) instead of assuming all methods are supported. Unsupported shared-service methods fail with UnsupportedError. See the Pages API reference for the raw adapter contract.

Shared request coordination

Both adapters accept an optional gate for caller-owned coordination between processes. The Promise API accepts PromiseRequestGate: acquire(operation, signal) waits for permission to send a request, and backoff(delayMs) receives a rate-limit delay. The Effect adapter accepts Provider.RequestGate with Effect-returning callbacks. The default gate does not wait.

Deploykit does not supply the shared store or scheduling policy. Promise gate failures are ignored so requests can still proceed; this is not a strict distributed rate-limit guarantee. Honor cancellation in acquire and bound your store calls. See the exact provider contracts for the callback signatures.

Vercel's client also accepts default uploadConcurrency, uploadOrder and uploadRounds; per-deploy values override these defaults. Effect callers can set the same defaults on Vercel.layer(options) without changing the provider-neutral service type.

Last updated on

On this page