ARI.Software Docs

Storage

Configure where uploaded files like photos and documents are stored.

Overview

ARI includes a central file storage system used by modules to store uploads such as photos, documents, and other files. You choose where those files are physically stored by setting environment variables in your .env.local file (or your hosting platform's environment manager, e.g. Vercel).

The Settings > Storage tab shows which provider is currently active and lists the exact variable names to copy for each provider. It is informational only -- there is no form to fill in or save button; all configuration happens through environment variables.

New modules use the configured provider by default unless they specify otherwise.


Choosing a Provider

The ARI_STORAGE_PROVIDER variable selects the storage backend:

ValueProvider
filesystemLocal Filesystem (default when unset)
s3AWS S3
r2Cloudflare R2
supabase-s3Supabase Storage (S3)

Set it in .env.local together with the credential variables for your chosen provider, then restart ARI to apply the changes.

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 when ARI_STORAGE_PROVIDER is unset.
  • 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.

ARI_STORAGE_PROVIDER=s3
ARI_S3_ACCESS_KEY_ID=
ARI_S3_SECRET_ACCESS_KEY=
ARI_S3_BUCKET=
ARI_S3_REGION=
ARI_S3_ENDPOINT=
VariableRequiredNotes
ARI_S3_ACCESS_KEY_IDYesIAM access key with S3 read/write permissions
ARI_S3_SECRET_ACCESS_KEYYesCorresponding IAM secret key
ARI_S3_BUCKETYesLowercase, alphanumeric, hyphens, and dots only
ARI_S3_REGIONNoe.g., us-east-1 (the default if not set)
ARI_S3_ENDPOINTNoOverride for S3-compatible services

Cloudflare R2

Store files in a Cloudflare R2 bucket. R2 is S3-compatible with no egress fees.

ARI_STORAGE_PROVIDER=r2
ARI_R2_ACCOUNT_ID=
ARI_R2_ACCESS_KEY_ID=
ARI_R2_SECRET_ACCESS_KEY=
ARI_R2_BUCKET=
VariableRequiredNotes
ARI_R2_ACCOUNT_IDYesYour Cloudflare account ID
ARI_R2_ACCESS_KEY_IDYesR2 API token access key
ARI_R2_SECRET_ACCESS_KEYYesR2 API token secret key
ARI_R2_BUCKETYesLowercase, alphanumeric, hyphens, and dots only

Supabase Storage (S3)

Store files in Supabase Storage using its S3-compatible API.

ARI_STORAGE_PROVIDER=supabase-s3
ARI_SUPABASE_S3_ENDPOINT=
ARI_SUPABASE_S3_ACCESS_KEY_ID=
ARI_SUPABASE_S3_SECRET_ACCESS_KEY=
ARI_SUPABASE_S3_BUCKET=
ARI_SUPABASE_S3_REGION=
VariableRequiredNotes
ARI_SUPABASE_S3_ENDPOINTYese.g., https://xxx.supabase.co/storage/v1/s3
ARI_SUPABASE_S3_ACCESS_KEY_IDYesSupabase S3 access key
ARI_SUPABASE_S3_SECRET_ACCESS_KEYYesSupabase S3 secret key
ARI_SUPABASE_S3_BUCKETYesName of an existing Supabase storage bucket
ARI_SUPABASE_S3_REGIONNoDefaults to us-east-1 if not set

Security

  • Credentials live only in environment variables. They are never stored in the database and never exposed through the UI.
  • 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).

Switching Providers

You can change your storage provider at any time by updating ARI_STORAGE_PROVIDER (and the matching credential variables) and restarting ARI. 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.

Your Personal Workspace. Your Rules.

Open Source. Self-Hosted. Full Data Control. Fully Extendable. AI Native. Dozens of Built-In Modules And Build Your Own In Minutes. No Coding Required.

Download