Skip to main content
Use this guide when your app needs a managed database or cache.

1. Enable Them In floo.app.toml

[app]
name = "crm"

[postgres]
tier = "basic"

[redis]

[services.api]
type = "api"
path = "."
port = 8080
ingress = "public"
If one service owns the app, a root floo.app.toml is the simplest way to combine that service with managed infrastructure.

2. Ship The First Deploy

floo preflight --json
floo apps github connect owner/repo --app my-app
floo deploys watch --app my-app
The dry run validates the deployable service graph. The first real deploy provisions the Postgres and Redis services and injects their env vars.

3. Read The Injected Values

floo env list --app my-app
floo env get DATABASE_URL --app my-app
floo env get REDIS_URL --app my-app
Use env list when you want masked visibility and env get when you need the plaintext value.

4. Consume Them In App Code

const databaseUrl = process.env.DATABASE_URL;
const redisUrl = process.env.REDIS_URL;

5. Debug A Connection Issue

If the app is live but cannot reach its backing service:
floo logs --app my-app --error --since 30m
floo env get DATABASE_URL --app my-app
floo env get REDIS_URL --app my-app
floo redeploy --restart --app my-app
Check:
  • the managed services are declared in floo.app.toml
  • DATABASE_URL and REDIS_URL exist in floo env list
  • the app is using env vars instead of hard-coded local connection strings
  • runtime logs match the connection failure you expect

Managed Services Setup

Start from the exact floo.app.toml shape for managed services.

Environment Variables

See how injected values appear in the CLI and when to override them.