Integrations: data, storage, secrets and observability
Fly.io splits its data story into things it runs and supports (Managed Postgres, metrics, logs), partner services billed on your Fly.io invoice (Tigris, Upstash), and things it says it will not support (unmanaged Postgres, LiteFS). Knowing which bucket a customer’s question falls into tells you who can help them (https://fly.io/docs/about/support/).
This page is drawn from https://fly.io/docs/about/support/, https://fly.io/docs/database-storage-guides/, https://fly.io/docs/postgres/, https://fly.io/docs/postgres/extensions/, https://fly.io/docs/unmanaged-postgres/, https://fly.io/docs/tigris/, https://fly.io/docs/upstash/redis/, https://fly.io/docs/apps/secrets/, https://fly.io/docs/monitoring/, https://fly.io/docs/monitoring/metrics/, https://fly.io/docs/monitoring/exporting-logs/, https://fly.io/docs/litefs/ and the Fly.io blog posts on Litestream.
What is supported, in one place
The support page lists supported products as Networking, Machines, Managed Postgres (MPG), Apps, Launch/Deploy, Volumes, Security, Accounts and Billing, Extensions (Tigris, Upstash, Depot) and Monitoring (metrics and logs). It lists LiteFS and Unmanaged Postgres under “Not Supported” (https://fly.io/docs/about/support/).
flowchart LR A[Your app<br/>on Machines] --> M[Managed Postgres<br/>supported] A --> T[Tigris<br/>extension] A --> U[Upstash Redis<br/>extension] A --> S[SQLite<br/>Litestream or LiteFS] A --> O[Prometheus,<br/>Grafana, logs]
Managed Postgres (MPG) and the unmanaged status
- What it is. “Fly.io’s Managed Postgres is our fully-managed database service”. It covers backups, high availability with automatic failover, monitoring, scaling, 24/7 support and encryption at rest and in transit (https://fly.io/docs/postgres/).
- Plans. Basic (Shared-2x, 1GB) is $38.00 a month; Starter (2GB) $72.00; Launch (Performance-2x, 8GB) $282.00; Scale (Performance-4x, 32GB) $962.00; Performance (Performance-8x, 64GB) $1,922.00. Storage is billed at $0.28 per GB for a 30-day month (https://fly.io/docs/postgres/).
- Versions and limits. Postgres 16 or 17, chosen at creation, with no in-place major upgrade (use
pg_dumpandpg_restore). Storage maxes at 1 TB. There are no alerts on CPU or storage, only emailed maintenance notices (https://fly.io/docs/postgres/). - Extensions. Only pgvector and PostGIS are supported as third-party extensions.
plpgsql,pg_stat_monitorandpgauditare on by default and cannot be disabled (https://fly.io/docs/postgres/extensions/). - Commands.
fly mpg create,fly mpg attach,fly mpg connect,fly mpg proxy, plus backup, restore, fork and users subcommands (https://fly.io/docs/flyctl/cmd/fly_mpg/, https://fly.io/docs/postgres/create-and-connect/). - Cleanup trap. The pricing page says “Managed Postgres lives outside your apps”, so deleting an app leaves the database running and billing. Check the dashboard when cleaning up (https://fly.io/docs/about/pricing/).
- Unmanaged Postgres. The pages are archived: “Fly Postgres (unmanaged) is no longer maintained, and Fly.io Support is not able to provide support or guidance for it” (https://fly.io/docs/unmanaged-postgres/). The pricing page files it under “Unsupported Products” (https://fly.io/docs/about/pricing/).
Say: “Managed Postgres is the supported database; old fly postgres clusters are yours to run.” Ask: “Which one are you on?” The cluster generation matters for billing, since older v1 clusters are billed on provisioned storage (https://fly.io/docs/postgres/).
Tigris object storage
- What it is. “Tigris is available natively as the object storage provider for Fly.io.” It is S3-compatible and globally distributed (https://fly.io/docs/tigris/).
- Provisioning.
fly storage createmakes a bucket; inside an app context it setsBUCKET_NAME,AWS_ENDPOINT_URL_S3,AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYas secrets (https://fly.io/docs/tigris/). - Keys. The docs say flyctl “can’t retrieve them later”, so tell customers to save the credentials at creation (https://fly.io/docs/tigris/).
- Public buckets. Private by default;
fly storage create --publicmakes a public one (https://fly.io/docs/tigris/). - Deleting.
fly storage destroyremoves the bucket and all its objects, and cannot be undone (https://fly.io/docs/tigris/). - Billing. Extensions are charged at the provider’s list price on your Fly.io invoice, and data transfer to them is billed separately (https://fly.io/docs/about/pricing/).
Upstash Redis and other extensions
- Upstash Redis. Created only through flyctl (
fly redis create), reachable by private IPv6 restricted to your organization (https://fly.io/docs/upstash/redis/). - Placement and writes. The primary region cannot change; replicas can be added or removed, and “Replicas forward writes to the primary” (https://fly.io/docs/upstash/redis/).
- Plans. The usage-based plan starts at $0.20 per 100k requests with a 10,000 commands-per-second cap and a 10 GB storage limit; fixed plans start at 250 MB for $10/mo plus $5 per read region (https://fly.io/docs/upstash/redis/).
- The extension list in flyctl.
fly extensionslists arcjet, kubernetes, sentry, storage, vector and wafris (https://fly.io/docs/flyctl/cmd/fly_extensions/). Upstash Vector is in public beta in iad and fra, and the docs say “We don’t recommend using it in production yet” (https://fly.io/docs/upstash/vector/). - Sentry. Provisioning new projects through Fly.io (
fly ext sentry create) “is no longer available”; existing projects keep working. For new apps, sign up with Sentry and setSENTRY_DSNas a secret (https://fly.io/docs/monitoring/sentry/). - Arcjet.
fly ext arcjet createlinks an Arcjet account and setsARCJET_KEYas a secret; the SDK covers JS and Python (https://fly.io/docs/security/arcjet/). - Becoming a partner. The Extensions Program asks providers for provisioning, single sign-on and daily billing details (https://fly.io/docs/about/extensions/).
- Wafris and Kubernetes. Both appear under
fly extensions; the corpus has no status page for either[verify](https://fly.io/docs/flyctl/cmd/fly_extensions/).
Secrets
- Secrets are stored in an encrypted vault and injected as environment variables at boot; API servers “can only encrypt; they cannot decrypt secret values” (https://fly.io/docs/apps/secrets/).
fly secrets setrestarts Machines;--stagedefers;fly secrets deployredeploys with staged secrets and skips a rebuild (https://fly.io/docs/apps/secrets/).fly secrets listshows names and digests, never values (https://fly.io/docs/apps/secrets/).- Say this out loud: people with deploy access can deploy code that prints secrets to logs (https://fly.io/docs/apps/secrets/).
- A secret can be written to disk at startup through
[[files]]infly.toml, base64-encoded (https://fly.io/docs/apps/secrets/).
Metrics: Prometheus and Grafana
- Built in. Managed Prometheus (based on VictoriaMetrics) and managed Grafana at fly-metrics.net, preconfigured with your data source (https://fly.io/docs/monitoring/metrics/).
- Querying.
https://api.fly.io/prometheus/<org-slug>/, authenticated with a Fly access token (https://fly.io/docs/monitoring/metrics/). - Retention and cost. About 15 days; no additional charge today, and “Pricing could change in the future” (https://fly.io/docs/monitoring/metrics/).
- Alerting. “Fly.io doesn’t include built-in alerting on metrics”, so you set it up yourself. Use Grafana alerts, or your own Prometheus with Alertmanager (https://fly.io/docs/monitoring/metrics/).
- Custom metrics. Add
[metrics]withportandpathtofly.toml; Fly scrapes every 15 seconds and drops responses over 16 MB (https://fly.io/docs/monitoring/metrics/).
Logs
- Logs are stdout from your processes, sent through Vector to NATS (https://fly.io/docs/monitoring/logging-overview/).
- Live tail with
fly logsor the dashboard. Log search in Grafana is beta and retains 7 days (https://fly.io/docs/monitoring/search-logs/). - Shipping: the Fly Log Shipper runs Vector and sends to sinks such as Datadog or S3; deploy it with
fly deploy --no-public-ips(https://fly.io/docs/monitoring/exporting-logs/).
SQLite: LiteFS and Litestream
- LiteFS. “LiteFS is outside our scope of support.” The docs also warn: “Don’t use LiteFS with autostop/autostart on Fly Machines.” because a stale Machine can win the lease and cause permanent data loss (https://fly.io/docs/litefs/).
- Project status. Stable and in production, but pre-1.0 (https://fly.io/docs/litefs/).
- LiteFS Cloud. Retired on October 15, 2024 (https://fly.io/docs/litefs/cloud-backups/).
- Litestream. Streams SQLite WAL changes to object storage so you can restore on new hardware (https://fly.io/blog/litestream-revamped/). Litestream 0.5.0 added point-in-time recovery (https://fly.io/blog/litestream-v050-is-here/, 2025-10-02). Litestream is not named on the support page
[verify]whether it is in scope (https://fly.io/docs/about/support/).
Lead with: “Pick Managed Postgres for supported SQL, Tigris for blobs, and treat SQLite replication as your own responsibility.”