Overview
ARI includes a central file storage system used by modules to store uploads such as photos, documents, and other files. You can choose where those files are physically stored by selecting a storage provider in Settings > Storage.
New modules use the selected provider by default unless they specify otherwise.
Choosing a Provider
ARI supports four storage providers. Select one from the Provider dropdown, fill in any required fields, and click Save.
Local Filesystem
The default provider. Files are stored on the same server that runs ARI, inside the data/storage/ directory.
- No configuration required -- works out of the box.
- Storage path:
data/storage/{user_id}/{bucket}/ - Best for local development or self-hosted deployments with persistent disk.
- Not available on serverless platforms like Vercel (no persistent disk).
AWS S3
Store files in an Amazon S3 bucket.
| Field | Required | Notes |
|---|---|---|
| Access Key ID | Yes | IAM access key with S3 read/write permissions |
| Secret Access Key | Yes | Corresponding IAM secret key |
| Bucket Name | Yes | Lowercase, alphanumeric, hyphens, and dots only |
| Region | Yes | e.g., us-east-1 |
| Custom Endpoint | No | Override for S3-compatible services |
Cloudflare R2
Store files in a Cloudflare R2 bucket. R2 is S3-compatible with no egress fees.
| Field | Required | Notes |
|---|---|---|
| Account ID | Yes | Your Cloudflare account ID |
| Access Key ID | Yes | R2 API token access key |
| Secret Access Key | Yes | R2 API token secret key |
| Bucket Name | Yes | Lowercase, alphanumeric, hyphens, and dots only |
Supabase Storage (S3)
Store files in Supabase Storage using its S3-compatible API.
| Field | Required | Notes |
|---|---|---|
| S3 Endpoint | Yes | e.g., https://xxx.supabase.co/storage/v1/s3 |
| Access Key ID | Yes | Supabase S3 access key |
| Secret Access Key | Yes | Supabase S3 secret key |
| Bucket Name | Yes | Name of an existing Supabase storage bucket |
| Region | No | Defaults to us-east-1 if not set |
Security
- Credentials are encrypted at rest. Secret access keys are encrypted before being saved to the database and are never exposed in plain text through the UI.
- Masked display. Saved secrets appear as
ABCD••••••••WXYZin the settings form. You only need to re-enter a secret if you want to change it. - All file access is authenticated. Files are served through ARI's API (
/api/storage/serve/...) and require a valid session. There are no public file URLs. - Maximum file size: 25 MB per upload (default).
Using Environment Variables
You can manage storage configuration outside the UI by adding variables to your .env.local file. Environment variables take precedence over values saved through the UI. Visit the Storage tab on the Settings page to find the correct key names for your chosen provider.
Switching Providers
You can change your storage provider at any time. Note that switching providers does not migrate existing files -- files already uploaded remain in the original provider's storage. New uploads will go to the newly selected provider.