Deploy anywhere

Start on Supabase. Move each piece when you’re ready.

UserTasks splits its infrastructure into eleven areas — database, auth, storage, realtime, scheduler, email, secrets, KMS, cache, log export and directory sync — and each one has its own provider. Deploy on Supabase with nothing else to configure, then move areas to AWS, Azure, Google Cloud or your own servers one checked, reversible switch at a time.

The path every install takes

Zero configuration on day one. Your infrastructure on day ninety.

You never have to pick your final topology up front. Each area moves on its own, with the app running in between, so you can check every step before you take the next.

  1. 1

    Deploy on Supabase

    One project gives you the database, auth, storage, realtime and scheduling. No provider settings — every area starts on its default.

  2. 2

    Decouple area by area

    Move files to your bucket, email to your domain, secrets to your vault, sign-in to your IdP. One switch per area; the app keeps running.

  3. 3

    Land where you need to be

    Stop at hybrid, or carry on to a single cloud, several clouds, or a network with no internet at all. The database moves last.

shell
# every area: provider and health
usertasks-admin status

# plan, then run: files to S3, email to SES
usertasks-admin switch storage --to s3 --dry-run
usertasks-admin switch storage --to s3 --yes
usertasks-admin switch email --to ses --yes

# every switch, with rollback ids
usertasks-admin history

The same command for every area. How a switch runs

01

Supabase only

The default, and a complete topology in its own right: one Supabase project, Resend for email, and the app wherever you like to run Node.js.

  • Live in minutes — nothing beyond the app to operate
  • Backups and failover of the database are Supabase’s job
  • Every other area can still move later

Supabase only

People and clients

Browser · REST API · MCP · CLI

UserTasks

Web, API and worker · Any Node.js host or the Docker image

Built in

  • SecretsEnvironment
  • KMSENCRYPTION_KEY
  • CacheMemory

Supabase projectSupabase

  • DatabaseSupabase Postgres
  • AuthSupabase Auth
  • File storageSupabase Storage
  • RealtimeSupabase Realtime
  • Schedulerpg_cron + pg_net

Email APISaaS

  • EmailResend
The UserTasks app talks to one Supabase project for the database, auth, storage, realtime and pg_cron scheduling, and to Resend for email. Secrets, the encryption key and the cache are built in.

Supabase only

02

Hybrid: Supabase plus your cloud

Keep the Supabase database, and put the areas your security team cares about under your own account: files in your bucket, email from your domain, credentials in your vault, sign-in through your IdP.

  • Worked examples for AWS (S3, SES, Secrets Manager), Google Cloud (Cloud Storage, Cloud Scheduler, Secret Manager) and Azure (Blob, Entra ID, Communication Services, Key Vault)
  • Native identities — task roles, managed identity, service accounts — instead of keys
  • The most common place to stop

Hybrid: Supabase + AWS

People and clients

Browser · REST API · MCP · CLI

UserTasks

Web, API and worker · Unchanged: wherever the app runs today

Built in

  • CacheMemory or Postgres

Supabase projectSupabase

  • DatabaseSupabase Postgres
  • AuthSupabase Auth
  • RealtimeSupabase Realtime
  • Schedulerpg_cron

AWS accountAWS

  • File storageAmazon S3
  • EmailAmazon SES
  • SecretsSecrets Manager
  • KMSAWS KMS (optional)
Supabase keeps the database, auth, realtime and pg_cron. Files move to Amazon S3, email to Amazon SES and provider credentials to AWS Secrets Manager, optionally with AWS KMS envelope encryption.

Hybrid examples for AWS, Google Cloud and Azure

03

Single cloud: AWS, Azure or Google Cloud

One cloud for everything — one IAM model, one audit trail, one region. The database moves last, after auth, realtime and the scheduler.

  • Azure and Google Cloud reference profiles with smoke tests, plus Bicep and Terraform
  • AWS from existing providers: RDS or Aurora, S3, SES, Secrets Manager, AWS KMS, ElastiCache
  • Realtime and scheduling built into the app — no broker to run

AWS

ECS on Fargate (web + worker), or App Runner with an EventBridge tick

Realtime
SSE
Scheduler
Worker
Database
RDS / Aurora PostgreSQL
Auth
Built-in + Cognito (OIDC)
File storage
Amazon S3
Email
Amazon SES
Secrets
Secrets Manager
KMS
AWS KMS
Cache
ElastiCache (Valkey)
Log export
OTel Collector → CloudWatch
The AWS guide

Azure

Azure Container Apps (web, migrate job, tick job)

Realtime
SSE
Database
Flexible Server (Entra auth)
Auth
Built-in + Entra ID
File storage
Blob Storage
Scheduler
Container Apps Job tick
Email
Communication Services
Secrets
Key Vault
KMS
Key Vault key / Managed HSM
Cache
Azure Cache for Redis
Log export
Azure Monitor / Event Hubs
The Azure guide

Google Cloud

Cloud Run (service + migrate job)

Realtime
SSE
Database
Cloud SQL (IAM auth)
Auth
Built-in + Google
File storage
Cloud Storage
Scheduler
Cloud Scheduler (OIDC)
Email
Workspace SMTP relay
Secrets
Secret Manager
KMS
Cloud KMS
Cache
Memorystore
Log export
Cloud Logging / Pub/Sub
The Google Cloud guide

04

Multi-cloud

When the services you must use already live in different places. Every area is configured on its own, so any combination works — with a few rules that keep it fast.

  • Keep the app next to its database
  • Keep secrets in the app’s cloud; other clouds’ keys become references
  • Serve public files from the bucket or a CDN to avoid paying egress twice

Multi-cloud

People and clients

Browser · REST API · MCP · CLI

UserTasks

Web, API and worker · Azure Container Apps, next to the database

Built in

  • RealtimeSSE
  • SchedulerWorker

Azure (primary region)Azure

  • DatabaseFlexible Server
  • SecretsKey Vault
  • KMSKey Vault key
  • CacheAzure Cache for Redis

Google CloudGoogle Cloud

  • File storageCloud Storage

SaaSSaaS

  • AuthOkta (OIDC)
  • EmailResend
  • Log exportDatadog
The app runs on Azure next to its PostgreSQL database, Key Vault and Redis cache. Files live in Google Cloud Storage, people sign in with Okta, email goes through Resend and logs ship to Datadog.

Multi-cloud rules and example

05

On-premises and air-gapped

Everything inside your network, with no SaaS and no outbound internet. The reference profile runs on a network with no route out, and its smoke test proves the app can’t reach the internet.

  • PostgreSQL, built-in auth with Keycloak or AD FS, MinIO, SMTP, Valkey
  • Vault Transit for keys, syslog or Splunk for logs, LDAP for the directory
  • Docker Compose or Kubernetes with the same image

On-premises / air-gapped

People and clients

Browser · REST API · MCP · CLI

UserTasks

Web, API and worker · Docker Compose or Kubernetes on your servers

Built in

  • RealtimeSSE
  • SchedulerWorker container
  • SecretsMounted files

Your network (no internet)Your network

  • DatabasePostgreSQL + PgBouncer
  • AuthBuilt-in + Keycloak / AD FS
  • File storageMinIO (S3) or NFS
  • EmailSMTP relay
  • KMSVault / OpenBao Transit
  • CacheValkey
  • Log exportSyslog / Splunk / OTel
  • Directory syncLDAP / Active Directory
Everything runs inside your own network with no outbound internet: PostgreSQL behind PgBouncer, built-in auth with Keycloak or AD FS, MinIO or NFS for files, an SMTP relay, Vault Transit, Valkey, syslog or Splunk for logs and LDAP directory sync. Realtime, scheduling and secrets are built in.

On-premises and air-gapped On-premises workflow automation

Eleven areas, one choice each

Pick the service for each area.

Each area is independent within a few rules — the database moves last, SSE realtime works with any database, files off Supabase become storage:// references. Provider names are shown as text; every option below exists today.

Database

DB_PROVIDER

Supabase, or any PostgreSQL 15+ with the same row-level security.

  • Supabase Postgres
  • PostgreSQL 15+
  • RDS / Aurora
  • Azure Flexible Server
  • Cloud SQL / AlloyDB
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Auth

AUTH_PROVIDER

Supabase Auth, built-in passwords, or OIDC / SAML single sign-on.

  • Supabase Auth
  • Built-in
  • OIDC: Entra ID, Okta, Google, Keycloak, Cognito…
  • SAML: AD FS, Entra ID, Okta…
  • On-prem
  • AWS
  • Azure
  • Google Cloud

File storage

STORAGE_PROVIDER

Supabase Storage, local disk / NFS, S3 and MinIO, Azure Blob or Cloud Storage.

  • Supabase Storage
  • Local disk / NFS
  • S3 / MinIO / Ceph
  • Azure Blob Storage
  • Google Cloud Storage
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Realtime

REALTIME_PROVIDER

Supabase Realtime, or built-in Server-Sent Events on LISTEN/NOTIFY.

  • Supabase Realtime
  • Built-in SSE
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Scheduler

SCHEDULER_PROVIDER

pg_cron in the database, the built-in worker, or any external cron.

  • pg_cron
  • Built-in worker
  • OS cron / Kubernetes CronJob
  • EventBridge (cron secret)
  • Container Apps Job (Entra)
  • Cloud Scheduler (OIDC)
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Email

EMAIL_PROVIDER

Resend, any SMTP relay, Amazon SES, Azure Communication Services, Microsoft 365 or Gmail.

  • Resend
  • SMTP relay
  • Amazon SES
  • Azure Communication Services
  • Microsoft 365 (Graph)
  • Gmail API
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Secrets

SECRETS_PROVIDER

Environment and mounted files, encrypted in Postgres, Vault / OpenBao, or your cloud’s secret store.

  • Environment / files
  • HashiCorp Vault / OpenBao
  • AWS Secrets Manager
  • Azure Key Vault
  • Google Secret Manager
  • On-prem
  • AWS
  • Azure
  • Google Cloud

KMS

KMS_PROVIDER

Envelope encryption of stored credentials with a key that never leaves your KMS.

  • ENCRYPTION_KEY
  • Vault / OpenBao Transit
  • AWS KMS
  • Azure Key Vault keys / Managed HSM
  • Google Cloud KMS
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Cache

CACHE_PROVIDER

Rate limits and invalidations shared by every replica: memory, Postgres or Redis / Valkey.

  • In-process memory
  • PostgreSQL
  • Valkey / Redis
  • ElastiCache
  • Azure Cache for Redis
  • Memorystore
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Log export

per workspace

One event stream per workspace, shipped to the log platform you already run.

  • Splunk HEC
  • Datadog
  • OpenTelemetry
  • Syslog (RFC 5424)
  • Webhook
  • Azure Monitor / Event Hubs
  • Cloud Logging / Pub/Sub
  • On-prem
  • AWS
  • Azure
  • Google Cloud

Directory sync

per workspace

Users and groups from your directory, pulled on a schedule or pushed over SCIM.

  • LDAP / Active Directory
  • SCIM 2.0
  • Microsoft Entra ID
  • Google Workspace
  • Okta
  • On-prem
  • AWS
  • Azure
  • Google Cloud

usertasks-admin switch

Every switch is checked, backed up and reversible.

Pre-flight checks

The target is probed before anything changes: reachable, writable, configured. A failed check stops the switch.

Backup and step log

Settings and every row a switch touches are backed up; each step is recorded as it starts and finishes.

Idempotent steps

If a step fails, fix the cause and run the same command again. The provider setting is written last.

Rollback

usertasks-admin rollback restores settings and undoes data changes where it can — URLs, accounts, pg_cron jobs, data keys.

Release gates run the standalone, on-premises, Azure and Google Cloud profiles end to end, and a full move of a seeded Supabase install onto plain PostgreSQL — sign-in with migrated passwords, files, jobs, log export and the row-level security snapshot included.

The same fast execution engine, wherever it runs.

Topology changes the services around the engine, not the engine. Workflows, tasks, the API, the MCP server and the CLI behave identically on every one of them — keep the app next to its database and you keep the speed. How we measure it

Questions

Do I have to leave Supabase?

No. Supabase only is a complete topology, and hybrid — Supabase for the database with some areas in your own cloud account — is the most common end state. Move an area only when you have a reason to.

Can I switch back?

Yes. Every switch takes a backup and records its steps; usertasks-admin rollback restores the settings and undoes its data changes where possible. Moving the database never writes to the source, so pointing the app back is always possible.

Which clouds are supported?

AWS, Microsoft Azure and Google Cloud, through their own services and identities where it matters (managed identity, IAM roles, service accounts), plus any PostgreSQL, S3-compatible store, SMTP relay, OIDC or SAML identity provider and Redis-compatible cache.

Does it run without internet access?

Yes. The on-premises reference profile runs on a network with no route out, and its smoke test fails if the app can reach the internet: PostgreSQL, built-in auth or Keycloak, MinIO, SSE realtime, the worker and an SMTP relay.

Find your topology in five questions.

The decision guide maps your constraints — residency, one cloud, no internet, existing vendors — to a topology, with the switch sequence to get there from Supabase.