Vaulthalla Logo

Request Budgets

Configure S3 and R2 request budgets for LIST, HEAD, GET, PUT, COPY, DELETE, and downloaded bytes.

Request Budgets

Request budgets limit how much S3/R2 request pressure a vault sync policy can spend. They are the first defense against accidental scans, runaway downloads, and surprise provider bills.

Presets

Use presets first, then override individual fields only when needed:

1vh vault sync set <vault> --s3-budget-preset conservative2vh vault sync set <vault> --s3-budget-preset balanced3vh vault sync set <vault> --s3-budget-preset bulk4vh vault sync set <vault> --s3-budget-preset unlimited
PresetUse for
conservativeUnknown buckets, exploratory imports, or first sync tests.
balancedNormal small-to-medium vaults.
bulkPlanned high-volume imports or maintenance windows.
unlimitedControlled one-off work where cost is bounded outside Vaulthalla.

Custom Limits

Set specific request budgets:

1vh vault sync set archive \2  --s3-budget-list 100 \3  --s3-budget-head 1000 \4  --s3-budget-get 1000 \5  --s3-budget-put 1000 \6  --s3-budget-copy 100 \7  --s3-budget-delete 1000 \8  --s3-budget-download-bytes 10G

Clear a specific field with values such as unlimited, none, or null:

1vh vault sync set archive --s3-budget-get unlimited

Budget Fields

FieldWhat it controls
--s3-budget-listBucket listing and reconcile scan pressure.
--s3-budget-headRemote object metadata checks.
--s3-budget-getObject GET requests and manifest reads.
--s3-budget-putUploads and manifest publishes.
--s3-budget-copyProvider-side object copy operations.
--s3-budget-deleteRemote delete operations.
--s3-budget-download-bytesBody download traffic.

Remote Index Freshness

Set the maximum age of the local remote index:

1vh vault sync set archive --max-remote-index-age 24h

Use unlimited only when another process guarantees the index is correct:

1vh vault sync set archive --max-remote-index-age unlimited

If the index is stale and cannot be refreshed, sync stalls instead of trusting potentially wrong remote state.

Large Bucket Pattern

For large existing buckets:

  1. Create the vault with conservative request budgets.
  2. Import S3 Inventory:
1vh vault sync inventory <vault> --file inventory.csv
  1. Ingest S3 events after the inventory point:
1vh vault sync events <vault> --file s3-events.json
  1. Dry-run:
1vh vault sync dry-run <vault>
  1. Reconcile only in a maintenance window:
1vh vault sync reconcile <vault> --allow-list-scan

Web Console

In the S3/R2 vault form, use the Cost Controls section to choose a request-budget preset or custom limits. The same form also controls sync interval, max remote-index age, sync strategy, conflict policy, and whether sync is enabled.

After saving, verify with:

1vh vault sync info <vault>

Troubleshooting Budget Stalls

If sync stalls:

1vh vault sync info <vault>2vh vault sync dry-run <vault>

Read the stall reason, then raise only the exhausted field. For example, if LIST is exhausted during reconcile, raise --s3-budget-list or switch to inventory/event ingestion instead of making every request type unlimited.