Pricing and limits

Shardflux plans, the signup trial, what an agent session costs, what happens at a limit, opt-in overage, workspace sizes, region, rate, file and command limits.

Plans

Prices are in US dollars per month. Allowances reset with each billing period on a paid plan. The signup trial counts its allowances over its 7 days.

Developer Pro Startup Scale
Price $9 $29 $79 $299
CPU hours 100 500 1,500 6,000
RAM GiB-hours 800 4,000 12,000 48,000
Retained state 100 GiB 250 GiB 1,000 GiB 3,000 GiB
Workspaces stored (2 GiB each) about 50 about 125 about 500 about 1,500
Outbound transfer 100 GB 250 GB 1 TB 5 TB
Workspaces working at once 10 10 50 200
Largest workspace (vCPU / RAM / disk) 4 / 8 GiB / 50 GiB 8 / 16 GiB / 50 GiB 8 / 16 GiB / 50 GiB 32 / 64 GiB / 100 GiB
Shared volumes (count / account total) 5 / 10 GiB 10 / 50 GiB 20 / 100 GiB 100 / 1,000 GiB
GPU-hours — — 25 100
Overage spend cap per period (opt-in) $1 to $9 $1 to $29 $1 to $79 $1 to $299

Retained state is sized for one workspace per customer, with suspended workspaces kept for as long as you want them. The workspace counts assume 2 GiB each, which is generous for most work: on the default template with 2 GiB of memory, a new workspace keeps under 0.1 GiB, one with a cloned Node.js repository and its dependencies about 0.2 GiB, and one with a Python environment, 40 MB of data and a report about 0.4 GiB. A checkpoint also holds the memory the workspace has used, so one that has filled its memory can keep close to its memory size on top of its disk.

Opt-in idle retention removes workspaces you no longer use so you stay inside your Retained state allowance.

Retained state sets how many workspaces you keep: the workspace counts above are what it holds at 2 GiB each. Only working workspaces count toward workspaces working at once, so on Developer you keep about 50 workspaces and up to 10 of them work at the same moment.

GPU: on Startup and Scale, workspaces render on a GPU through Shardflux's own Vulkan driver, with the CUDA Driver API (libcuda.so.1), NVENC (API 13.1) and NVDEC (libnvcuvid.so.1) on the same GPU, and Vulkan, CUDA, NVENC, NVDEC and VA-API apps use them unchanged. CUDA applications call the Driver API, as NVENC and FFmpeg do; programs built on the CUDA Runtime API (libcudart) use the Driver API instead. Blender's Cycles renders on CUDA devices; it is offered no OptiX device. Render on the GPU has each engine's launch settings. GPU-hours measure what your apps use.

GPU video: a workspace holds up to 32 Vulkan Video sessions, 64 NVDEC decoders and 64 NVDEC parsers at once. A session or decoder past those, or while the GPU's own are all in use, waits a short time for one to free up and is then refused (GPU video sessions).

Enterprise: contact shardflux@shardflux.dev. Write there too when you outgrow Scale. With its largest overage Scale covers 67,933 RAM GiB-hours a month (48,000 included plus $299 of overage at $0.015); past that, no plan fits yet.

There is no automatic overage. Reaching an allowance adds charges only after you turn on overage with a spend cap. Upgrade, change or cancel a plan under Usage & billing in the console, or from a terminal with the CLI (0.5.0+): shard billing upgrade <plan> prints the Stripe Checkout URL where a person pays, and shard billing portal prints the link for plan changes and cancellation (Billing).

Card on file

Compute runs on organizations with a card on file and an active trial or paid plan. The organization's creator saves a non-prepaid credit or debit card directly on the console's Usage & billing page, a Stripe page in setup mode, and approves it with their bank (3-D Secure; wallet tokens and prepaid cards are not accepted): nothing is charged. A paid plan's card counts, and so does a plan arranged with Shardflux (a custom or design-partner plan). Accounts, organizations, projects and API keys need no card. Until a card is saved, opening, resuming or forking a workspace and building a template answer 402 card_required with the page that saves it. Running workspaces keep running.

Signup trial

New accounts can register automatically via the console, CLI (shard signup) or HTTP API, and create organizations, projects and API keys right away. Before starting workspace compute, verify an established GitHub account (at least 30 days old) or non-disposable work domain (registered at least 30 days ago with active MX records), and complete the $0 Stripe card check on the console’s Usage & billing page or with shard billing trial --wait. Enter a credit or debit card number directly and approve it with your bank (3-D Secure); wallet tokens and prepaid cards are not accepted. Nothing is charged. This starts 7 days of Pro’s allowances and limits. Subscribing to a paid plan ($9/mo Developer and up) enables compute immediately without the trial checks.

Trial
Length 7 days from when the card-backed trial starts
RAM GiB-hours 4,000
CPU hours 500
Retained state 250 GiB
Outbound transfer 250 GB
Workspaces working at once 10
vCPU across all workspaces 8
Largest workspace (vCPU / RAM / disk) 8 / 16 GiB / 50 GiB
Shared volumes (count / account total) 10 / 50 GiB
Overage None: the allowances are hard caps
  • Who gets it. One signup trial per person, per card and per GitHub account, across all accounts, ever. Either a linked GitHub account at least 30 days old or a verified work email or organization domain registered at least 30 days ago with active MX records is required alongside a non-prepaid, non-wallet Stripe card check that the card's bank approves (3-D Secure). Consumer webmail addresses (such as Gmail, Outlook, Yahoo, iCloud or Proton) need a linked GitHub account or a verified organization domain to qualify for the trial, or can start directly on a paid plan. The trial applies to the organization where you start it; additional organizations need a paid plan. Trials are limited each month.
  • Capacity. Trial workspaces start on capacity that is already running, so at busy times a start may wait for it (until the start's deadline, then capacity_unavailable). Paid plans add capacity when they need it. A trial organization's running workspaces share 8 vCPU, and on a busy host trial workspaces run on the CPU that paid plans leave free.
  • The end. When the RAM GiB-hours or CPU hours are used up, or after 7 days, workspace compute pauses until you choose a paid plan ($9/mo Developer and up). Up to 10 GiB of retained workspace storage is kept and nothing is deleted. Every owner and billing member gets an email 3 days before the end and one when it ends.
  • Upgrading. Upgrade to a paid plan at any time. The plan replaces the trial at once; Pro ($29) has the same allowances and workspace limits, without the shared 8 vCPU, every month, with overage.

What each allowance measures

Allowance Measures
CPU hours CPU time the workspace's processes actually used.
RAM GiB-hours The memory a running workspace holds, by what its host keeps ready. While it works it uses the memory it holds: with elastic memory, what its processes use and at least its 1 GiB floor, as they use and free it (a workspace holding 2 GiB while it works for one hour uses 2 GiB-hours). It works during a tool call and the 2 seconds after it, while an exec output stream or terminal is attached, while a command started through exec runs, during a keepalive, and while its processes keep using CPU or the network. Once it is idle its host parks it and compresses its memory in place: it then uses at most 256 MiB plus the compressed size of the rest, until the next call wakes it. A suspended workspace uses none. A file-first workspace uses it only while an execution runs, at the execution VM's memory.
Retained state Storage you keep: each workspace's own disk changes and checkpoints (running or suspended), a file-first workspace's current file tree, plus your organization's template storage. Platform templates never count. Measured as what you keep now: the latest measurement of each workspace you have not deleted (taken every minute) plus your template storage, so deleting a workspace frees its room at once.
Outbound transfer Bytes your workspaces send to the internet, in decimal GB, including the responses your apps send through port URLs. Inbound traffic is free and does not count, and neither does Shardflux's own traffic (checkpoints, template downloads, moves between hosts).
GPU-hours The GPU your apps use, at the larger of their scene's GPU memory and the GPU's busy time (see GPU-hours). Startup and Scale.
Workspaces working at once Workspaces working at the same moment, across the whole organization. A workspace works while it starts (open, resume, fork), during a tool call and the 2 seconds after it, while an exec output stream or terminal is attached, while a command started through exec runs, during a keepalive, and while its processes keep using CPU or the network. A parked or suspended workspace does not count, and a file-first workspace never counts.

Shared volume storage is measured and shown separately; no allowance includes it and it never blocks anything.

shard usage, cloud.usage (TypeScript) and Usage in the console show what you have used, with the time the numbers were measured through.

GPU-hours

A GPU app counts every second at the larger of two shares of one GPU: the GPU memory its scene holds, over 16 GiB, and the fraction of that second the GPU spends on its own work. An hour at a full share is one GPU-hour, so a light scene uses a fraction of one:

Scene GPU memory GPU busy GPU-hours per hour
2 GiB 5 % 0.125
4 GiB 40 % 0.4
12 GiB 100 % 1
  • Only your own work counts: time spent waiting for the GPU and the driver's own memory never do.
  • A scene's GPU memory counts while it is on the GPU. A Vulkan scene waiting between frames leaves the GPU a fraction of a second after its last frame and comes back with the next request (Frames on request), so an app that renders on request counts its GPU memory only around its frames.
  • 16 GiB is 2^34 bytes. Usage is measured per app, summed for the organization, and counted per UTC hour like the other allowances.
  • Startup includes 25 GPU-hours a period and Scale 100. With overage on, more cost $1.00 per GPU-hour under the same spend cap as RAM and CPU.
  • Usage in the console and the usage summary (gpu: used, included and overage GPU-hours) show what you have used.

What an agent session costs

Because a parked workspace uses little or no RAM, what you pay follows how long your agent works, not how long the workspace stays open. The figures below are the average of 1,345 recorded agent sessions, each 55.7 minutes from the first tool call to the last with 11.2 minutes of tool calls, replayed on the production idle policy with a workspace holding 2 GiB while it works. A session uses 0.573 RAM GiB-hours: the full 2 GiB for 15.1 minutes and 256 MiB for 16.8 minutes. A workspace that a background process keeps busy never parks, so it uses its full 2 GiB for 63.1 minutes (2.102 GiB-hours), or 55.6 minutes (1.854 GiB-hours) when your harness suspends it as the turn ends.

Sessions per end customer a month RAM GiB-hours At $0.015 per GiB-hour Kept busy Kept busy, suspended at turn end
10 5.7 $0.09 $0.32 $0.28
60 34.4 $0.52 $1.89 $1.67
124 71.1 $1.07 $3.91 $3.45
  • The dollar columns are the cost per end customer a month at the overage rate. Inside a plan's allowance the sessions cost nothing extra: Developer's 800 RAM GiB-hours cover about 1,396 of them a month, Pro's 4,000 about 6,980, Startup's 12,000 about 20,941 and Scale's 48,000 about 83,763.
  • 124 sessions is one workspace's month in the replay, with modelled breaks between the sessions.
  • The replay assumes the workspace parks whenever the agent is idle. One whose processes keep using CPU or the network while idle stays resident: count it as kept busy.
  • Past Scale with its largest overage, 67,933 RAM GiB-hours a month or about 118,550 of these sessions, no plan fits yet: contact shardflux@shardflux.dev.
  • CPU hours are not included. They count only the CPU time your processes use.
  • The calculator in the pricing section works this out for your number of customers and sessions and your workspace size.

With elastic memory. The table counts 2 GiB held while the workspace works. With elastic memory a workspace is billed for what it holds, not for its maximum. Replayed on 1,885 recorded agent sessions, the median session of a workspace with a 1 GiB floor and the 8 GiB maximum of python-node-browser was billed for 0.55 GiB on average over its running time, less than a workspace holding 2 GiB (0.71 GiB), with up to 8 GiB there whenever its commands need it.

What happens at a limit

Limit What happens
Workspaces working at once A tool call or keepalive that would wake a parked workspace past the limit waits up to 5 seconds for another workspace to stop working. If none does, it is refused with 429 quota_exceeded and Retry-After (details.limit: concurrent_workspaces, limit_value, current, retry_after_seconds). Nothing ran, so any call is safe to retry, and the SDKs retry it (TypeScript 0.14.0+, Python 0.10.0+). Calls to a workspace that is already working never wait. Opens, resumes and forks beyond the limit wait up to 10 seconds the same way, then are refused with 429 quota_exceeded and Retry-After (details.limit: concurrent_workspaces, limit_value, current, retry_after_seconds, plan); nothing started, so they are safe to retry, and the SDKs retry them (TypeScript 0.22.0+, Python 0.18.0+). Reopening a workspace that is already running never waits. A workspace stops counting a few seconds after its last work ends, or after it is suspended or deleted. Suspend a workspace you are done with, or upgrade.
CPU hours or RAM GiB-hours, overage off New opens, resumes and forks are refused with 402 allowance_exhausted (details: reason: allowance_used, allowance, used, included, resets_at). Running workspaces are suspended, keeping their files, memory and processes. Nothing is deleted.
CPU hours or RAM GiB-hours (paid plans), overage on Workspaces keep opening and running. Usage past the allowance is charged at the overage rates until the charges reach your spend cap. At the cap, new opens, resumes and forks are refused with 402 allowance_exhausted (reason: spend_cap_reached) and running workspaces are suspended the same way. Nothing is deleted.
Outbound transfer At 100 %, outbound internet traffic of every workspace in the organization is blocked until you upgrade, add more, or the next period starts. Workspaces keep running; inbound connections, commands, terminals and file transfer keep working, and opens are not refused.
GPU-hours, overage off At 100 %, only the GPU stops until the next period, an upgrade, or overage: an app's frame requests answer 402 allowance_exhausted (reason: allowance_used; see GPU frame requests). Workspaces keep running, and opens and resumes are never refused for GPU-hours. Rendering comes back on its own once the cause clears.
GPU-hours, overage on Rendering continues at the overage rate until the charges reach your spend cap; then only the GPU stops (reason: spend_cap_reached) and workspaces keep running. While a plan payment is past due, overage is paused and the GPU stops at 100 % (reason: overage_paused).
GPU on Developer or Pro An app's frame requests answer 402 entitlement_required (reason: not_included, "GPU needs the Startup or Scale plan"). Upgrade to Startup or Scale.
Retained state, overage off At 100 %, opening a new key and forking are refused with 403 quota_exceeded (details.limit: retained_state, limit_value and current in GiB). Existing workspaces keep running, waking, suspending and resuming, nothing is deleted and nothing is charged. Owners and billing members get an email at 80 % and 100 %. Delete workspaces you no longer need, which frees their room at once, or upgrade.
Retained state, overage on Workspaces keep opening, forking and growing. Storage above the plan's retained state is charged at the overage rate until the charges reach your spend cap. Nothing is deleted.
Workspace size Caps above the plan's maximum are lowered to it, not refused, at an open and at a resize. With overage on, a workspace disk grows past the plan's disk maximum up to 2,048 GiB; its bytes count toward retained state.
Template builds 3 builds at once per organization; more are refused with 403 quota_exceeded (concurrent_template_builds). A version larger than the plan's disk maximum fails with resource_limit.
Shared volumes Creating one beyond the count or account-wide total quota is refused with 403 quota_exceeded (shared_volumes_max, shared_volume_gib_max). At most 8 volumes can be attached to one workspace.

Every owner and billing member gets an email at 80 % and 100 % of an allowance. With overage on, they also get one at 50 %, 80 % and 100 % of the spend cap. Compute limits are enforced with short budget leases, so usage can run slightly past an allowance or the spend cap before running workspaces are suspended; the organization's spend view reports that bound.

Billing states. If a payment fails, you have 7 days of grace. Nothing changes during it, except that overage is paused until the invoice is paid. After that, new opens, resumes and forks are refused with 402 entitlement_required (details.reason: payment_past_due or unpaid); running workspaces and your data are untouched. A cancellation takes effect at the end of the period, after which new workspace starts require a paid plan while up to 10 GiB of retained workspace storage is kept.

Data is never deleted by billing or inactivity. Workspaces are deleted only when you delete them, with one exception: a session workspace is deleted when its session ends.

Overage (opt-in)

Overage keeps your workspaces opening and running past the CPU-hours and RAM GiB-hours allowances, keeps them rendering past GPU-hours on Startup and Scale, and lets retained storage and workspace disks grow past the plan, up to a spend cap you set. It is off by default; trials have no overage.

Turning it on. An owner or billing member turns overage on under Usage & billing in the console and sets a spend cap in dollars per billing period. The cap is at least $1 and at most the plan price: $9 on Developer, $29 on Pro, $79 on Startup, $299 on Scale. A period's bill is therefore at most twice the plan price. The cap never exceeds the current plan's price, so moving to a cheaper plan lowers it.

Rates. RAM, CPU and storage rates are the same on every paid plan.

Past the allowance Rate
RAM GiB-hours $0.015 per GiB-hour. A 2 GiB workspace costs $0.03 for an hour of work; parked, it costs 256 MiB for about 15 seconds, then nothing.
CPU hours $0.04 per CPU-hour past the plan's CPU hours.
GPU-hours $1.00 per GPU-hour past the plan's GPU-hours, on Startup and Scale.
Retained state $0.15 per GiB-month for storage above the plan's retained state, counted per hour (a GiB-month is 730 GiB-hours). 100 GiB above Scale's 3,000 GiB for a whole month costs $15.

With overage on, a workspace disk can also grow past the plan's disk maximum, up to 2,048 GiB. Shared volumes are never charged. Outbound transfer has no overage: outbound traffic is blocked at 100 % of the transfer allowance.

Billing. Charges come from the same usage measurements as the allowances, counted per UTC hour. They go on your next monthly invoice and are charged to the card that pays the plan. There are no prepaid credits. Upgrading during a period does not refund overage already charged.

At the cap. New opens, resumes and forks are refused with 402 allowance_exhausted (details.reason: spend_cap_reached; see Errors). Running workspaces are suspended, keeping their files, memory and processes. Nothing is deleted. Work can start again when the next billing period begins, when you raise the cap (up to the plan price), or when you upgrade. Usage can run slightly past the cap before workspaces are suspended, but you are never charged more than the cap. Past the GPU-hours allowance, the cap stops only the GPU; workspaces keep running.

Past-due payments. While a plan payment is past due, overage is paused and the allowances apply as if it were off. Past an allowance, starts are refused with 402 allowance_exhausted (details.reason: overage_paused) and running workspaces are suspended. Overage resumes when the invoice is paid.

Emails. Every owner and billing member gets an email at 50 %, 80 % and 100 % of the cap, and when someone turns overage on or off or changes the cap.

Workspace sizes

A workspace's CPU, memory and disk are the smallest of three maximums: the plan's (above), the template's, and the caps you pass to open (caps: { cpu_millis, memory_mib, disk_gib }; 1,000 cpu_millis is one vCPU). Memory is elastic: the workspace sees that maximum from boot and holds what its processes use, at least memory_mib_held, 1,024 MiB by default and at least 512. A floor within 512 MiB of the maximum is lowered to leave that room, and a maximum below 1,024 MiB is held in full. A workspace boots with the vCPUs of its plan's or template's maximum; cpu_millis is the CPU time it may use.

  • A new workspace starts with its template's default disk, 20 GiB on the platform templates, and its disk grows on its own as it fills, up to the plan's and the template's maximum. An explicit caps.disk_gib at open sets the size it starts at, within those maximums; reopening it without a disk cap keeps its disk. Retained state counts the bytes kept, not the disk's size.
  • python-node-browser allows up to 4 vCPU and 8 GiB of memory. Its workspaces have up to 8 GiB of memory, or the caps.memory_mib you set.
  • Resize: memory changes live, both ways; CPU changes live up to the vCPUs the workspace booted with (its plan's or template's maximum) and above them at its next start; a disk grows online and never shrinks (a smaller disk_gib is 422 validation_failed, shrink_not_supported). A resize above the plan's or the template's maximum is lowered to it (limit_reason), and at_maximum says the resource is there.
  • Disk is the space for the workspace's own changes; the template's files do not count against it.

See Workspace size.

Region

Workspaces and the API run in AWS us-west-2 (Oregon, United States). The API is https://api.shardflux.dev and the console https://app.shardflux.dev.

Starts and waits

Limit
A start waiting for capacity (capacity_pending) 15 minutes, extended while new capacity starts for it or its files move to new storage (at most 1 hour), then capacity_unavailable (retryable; nothing started). After 2 minutes, with retry_after_seconds, when no more capacity can be added right now
Starts waiting for capacity at once Served in the order they were requested, up to 1,000 per region (an organization's share depends on its plan). A start past that gets capacity_unavailable at once, with retry_after_seconds and details.limit; starts already waiting keep their place
A tool call that wakes a parked workspace while its host makes room Held up to 25 seconds for a command, terminal or git start, 30 for attaching to a command's output or a terminal, and 50 for other calls, then 503 service_unavailable host_capacity with Retry-After; nothing ran
An open, resume or fork past the plan's workspaces working at once Held up to 10 seconds, then 429 quota_exceeded with Retry-After; nothing started
SDK retries of a call refused before it ran (503 host_capacity, 429 quota_exceeded) 2 minutes by default (admissionTimeoutMs, admission_timeout), each wait the full Retry-After (TypeScript 0.22.0+, Python 0.18.0+)
SDK wait for an operation 5 minutes by default (timeoutMs, timeout), and while the start is capacity_pending, until its deadline (TypeScript 0.22.0+, Python 0.18.0+); the operation continues after the SDK stops waiting
Wake of a suspended workspace by a tool call 120 seconds by default, and while the resume is capacity_pending, until its deadline (TypeScript 0.22.0+, Python 0.18.0+)
Idle timeout of a persistent workspace Learned per workspace, 10 seconds to 4 hours; 5 minutes while there is no history to learn from. Or fixed:<seconds> (60 to 604,800) or never. See Automatic suspend when idle
Suspend when idle after_seconds 0 to 3,600 (Suspend when idle)
Session idle timeout 10 minutes unless the template sets one (60 to 86,400 seconds)

Inbound ports

Port URLs of processful workspaces:

Limit
Exposed ports 10 per workspace
Port token lifetime 60 seconds to 1 day (1 hour by default)
Signed link lifetime 60 seconds to 7 days (1 day by default)
Wait for a workspace to wake and its port to accept 30 seconds, then 503 wake_timeout (host_capacity while its host is still making room) with Retry-After
Wait for a running workspace's server to accept again 3 seconds, then 502 port_not_listening
Requests 100 per second per workspace (bursts of 200) and 1,000 per second per organization (bursts of 2,000), then 429 rate_limited with Retry-After
Open connections 256 per workspace and 2,048 per organization, then 429 connection_limit
Request body 1 GiB, then 413 body_too_large
Idle connection Closed after 1 hour without traffic in either direction
Protocols HTTP/1.1 and WebSocket over HTTPS

Templates

Limit
Immutable paths 8 per template, each an absolute path of up to 256 bytes
Immutable image 16 GiB per template version

A version's immutable paths are stored as one image. Each version's image counts toward your organization's template storage, and so toward retained state.

Computer use

Limit
Screen 640x480 to 2560x1600 pixels; 1280x800 by default
Actions per batch 50
Waits and holds per batch 300 seconds in total (wait, hold_key)
Text per type action 20,000 characters
settle_ms 0 to 10,000 ms (default 250)
JPEG quality 1 to 100 (default 80)
Batch request 1 MiB
Viewer links 60 seconds to 7 days (default 24 hours)
Templates python-node-browser 15 and later, and templates built on them

The desktop's control port, 61001, is reserved and cannot be exposed (422, port_reserved). The viewer is served through the workspace's inbound ports 61002 (view only) and 61003 (interactive), which stream() exposes for you.

API rate limits

Limit Value
Tool tokens (including an open that returns one) 3,600 per hour per API key; past it, an open still succeeds, with tool_token: null
Template package searches 120 per minute per organization

Over a limit, the API answers 429 rate_limited with a Retry-After header. The SDKs retry 429 for safe and idempotent requests (maxRetries / max_retries, default 2), waiting the full Retry-After (TypeScript 0.22.0+, Python 0.18.0+), then raise the error with retryAfterSeconds (TypeScript) or retry_after (Python). A wait that would outlast the request's timeout raises the error at once.

File and command limits

Limit
One file write Any size: the body streams to the file, and a replace takes effect once the whole upload is on disk (up to 15 minutes per transfer)
One file read 256 MiB per request; the SDKs read larger files in several requests
File paths Absolute, at most 4,096 bytes
Directory listing Up to 10,000 entries per call (default 1,000)
Command arguments Up to 4,096 arguments of up to 128 KiB each
Command environment Up to 512 variables
Command stdin 1 MiB
Command timeout Up to 7 days; at the timeout every process the command started is stopped (SIGTERM, SIGKILL after kill_grace_ms)
Commands kept per workspace The newest 10,000; a finished command beyond them is removed with its output (404 not_found)
Command output kept by exec.run / ws.exec 1 MiB of stdout and 1 MiB of stderr by default (maxOutputBytes / max_output_bytes); stream everything with onOutput / on_output
Output returned to a model by the agent tools 64 KiB per call
Reads of a suspended workspace from its disk The same limits as other reads; not billed as compute
Secrets bound to one workspace 50
Browser screenshot / page content 32 MiB / 5 MiB
Workspace keys 1 to 200 characters; keys starting with sf: are reserved

Search, patches and revisions

Limit
Search pattern 1 to 1,000 characters, literal or RE2
Search results 200 matches by default, at most 5,000; a search also stops after 10 seconds or 4 MiB of results (truncated, stop_reason)
Files searched Up to 1 MiB each by default, at most 64 MiB (max_file_bytes); each line in its first 1 MiB; binary files and symbolic links are skipped
Search globs Up to 32 include and 32 exclude globs of up to 256 characters
Search context 0 to 5 lines before and after each match; the matched line is returned up to 1,000 bytes
One patch request 7 MiB (413 payload_too_large above); write larger files with a normal write
A patched file 64 MiB
Edits in one patch 1 to 100
File revision from stat Regular files up to 256 MiB
File revision on a read (X-File-Revision) Regular files up to 16 MiB
Wake hint Held for 60 seconds when no tool call follows

See Search and edit files.

File-first workspaces

Limit
Files Only under /home/user; names must be valid UTF-8
Executions at once One per workspace; others and file changes get 409 workspace_busy (execution_in_progress) until it ends
Execution output stdout and stderr each up to 1 MiB by default, at most 16 MiB (outputLimitBytes, output_limit_bytes, --output-limit)
Changed paths in a result Up to 10,000 (changed_truncated); the agent tools return up to 200
Execution ids 8 to 128 characters of A-Z a-z 0-9 . _ : -, starting with a letter or a digit
Execution results Kept for 7 days
Command stdin, timeout, arguments and environment As for other commands (above)
Lifetime Persistent only
Change time Grows with the tree: about 0.6 seconds per change at 100,000 files

See File-first workspaces.

Shared volumes

The plan's shared-volume size is an account-wide total: the sum of quota_gib across every customer-managed shared volume in the organization. Developer has 10 GiB, Pro 50 GiB, Startup 100 GiB and Scale 1,000 GiB. Count limits are unchanged; the trial has Pro's 50 GiB total. Shared-volume storage is reported and has no storage charge. An open by name defaults to 1 GiB only when creating; supply quota_gib within the remaining allowance (TypeScript SDK 0.18.0+, Python 0.14.0+, CLI 0.13.2+, MCP 0.12.0+).

Shared volumes store data outside workspace snapshots and forks; attached agents can read or write them according to the mount mode. A workspace takes up to eight shared-volume mounts; detach a volume before adding another. See Volumes.

Website sign-ins

Item Limit
Credential request lifetime 24 hours after creation
Agent wait for one credential request 10 minutes per call
Outstanding credential requests 32 per workspace; every pending request counts until it is expired, and fulfilled requests count until their expiry
Passwords and authenticator setups per login One password and one TOTP configuration
Passkeys per login 100
Related sign-in origins per login 50
Username or password 8,192 characters each
Site or related origin 2,048 characters
TOTP seed 1,024 characters, base32
TOTP code length 6 to 8 digits
TOTP period 15 to 120 seconds

See the HTTP reference for store metadata and the sign-in protocol.

Secrets

Project secrets are stored encrypted with AWS KMS; only the project's workspaces can load them, and every load is logged. Browser sessions are stored and loaded the same way.

Secret values are redacted before exec/PTY output and logs are persisted, including base64/URL forms across chunks. Tool-call capture sanitizes bound secret values. Both cover values of 8 or more characters, and values that are only letters or only digits from 16; shorter or plain values, such as true, 1, 8080 or production, appear as written, so output that contains them stays intact.

View this page as Markdown