Storage

Storage in the sidebar shows where your workspace's attachment files are kept, and is where you connect your own S3-compatible bucket. Your own bucket works on every plan. Why and how, with steps for each provider: Bring your own storage.

Usage

MeterShows
Hosted by poolseAttachments in poolse's hosted storage, against your plan's limit (Free 300 MB, Pro and Scale 500 MB).
In your own bucketAttachments stored in any bucket you have connected. Shown once you connect one. poolse sets no limit here.

Below the meters, the largest file you can upload: your plan's per-file limit on hosted storage (Free 1 MB, Pro and Scale 25 MB), or 100 MB while your own bucket is connected.

The hosted meter turns amber at 80% and red when full. When it is full, new uploads to hosted storage are refused with 402 attachment_total_cap_exceeded; connecting your own bucket lets uploads carry on.

Where attachments go

The card under the meters says which mode the workspace is in:

  • Attachments are stored by poolse, with a Hosted pill: the default. Nothing to set up.
  • New attachments go to your bucket name: a bucket is connected. The card lists the provider, bucket, endpoint, region, key prefix, URL style, the first and last characters of the access key, and when the bucket was last checked. The secret key shows as Stored, encrypted; it is never shown again.

The pill shows the result of the last check:

PillMeans
ConnectedThe last check passed.
Check failedThe last check failed. The reason is shown under the details.
Not checkedNo check has run since the details were saved.

Connect your own bucket

  1. Pick a Provider: Cloudflare R2 (recommended), Amazon S3, Backblaze B2, Wasabi, DigitalOcean Spaces, Google Cloud Storage, MinIO, or Other S3-compatible. This fills in the Endpoint, Region and Path-style URLs switch with the provider's usual values. For R2, replace <ACCOUNT_ID> in the endpoint with your Cloudflare account ID; for B2, Wasabi and Spaces the endpoint follows the region you type.
  2. Enter the Bucket name.
  3. Keep the Key prefix at poolse/ or change it. poolse writes only under this prefix.
  4. Enter the Access key ID and Secret access key of a key limited to this bucket. See Key permissions.
  5. Optionally enter your Web app origin for the CORS check, such as https://app.example.com.
  6. Click Check and connect.

poolse checks the bucket before saving:

StepWhat poolse does
Write a test objectUploads a small object under the key prefix.
Read its metadataReads the object's size.
Download itDownloads it.
Delete itDeletes it.
CORS preflight for an uploadOnly with an origin: asks the bucket whether a browser on that origin may PUT.

Each step shows ✓ or ✗ with your provider's answer, and a failed step comes with a hint about the usual cause. If any step fails, nothing is saved: uploads keep going where they went before. Fix the setting or the bucket and click again.

Once connected, new uploads go to your bucket. Attachments already stored stay where they are and keep working.

Edit the connection

Click Edit to change any setting. The key fields start empty:

  • Leave both empty to keep the stored key. This works only while the endpoint and bucket stay the same, for example to change the key prefix or re-run the check with a different origin.
  • To use a new key, enter both the access key ID and the secret.
  • A new endpoint or bucket always needs the key entered again.

Check and save runs the same check before anything changes.

Browser access (CORS)

The Browser access (CORS) card shows the CORS rules your bucket needs, in your provider's format, with your origin filled in, and a Copy rules button. Under it: where to paste them for that provider. While the form is closed, the card has its own Web app origin field, which Test connection also uses.

Native iOS and Android apps don't need CORS rules. Web apps do, for every origin they run on.

Key permissions

The Key permissions card explains what the key needs: write (for uploads), read (for downloads and the size check when a message is sent) and delete (for deleted attachments and a deleted workspace). It lists how to create such a key at the chosen provider, and for Amazon S3, Wasabi and MinIO shows an IAM policy limited to your bucket and prefix.

Test connection

Test connection runs the check on the connected bucket again, with the origin from the CORS card if you entered one, and updates the pill. It changes nothing else.

Disconnect

Disconnect asks you to confirm, then sends new uploads back to poolse's hosted storage, within your plan's limits.

Attachments already in your bucket stay there and stay readable for as long as the stored key still works. Keep the key and the bucket while you need those files.

Deleting the workspace from the Danger zone also deletes the files poolse wrote to your connected bucket, under the key prefix.

Storage · Dashboard · poolse docs