Skip to content

Needs

Needs are pre-configured infrastructure services that Holden manages alongside your app. Instead of manually setting up databases and caches, declare what your app needs and Holden handles the rest.

Each app gets its own isolated needs—there’s no sharing a database between apps. For shared databases, run a regular service on a shared network instead.

  • PostgreSQL - Relational database
  • Valkey - Redis-compatible in-memory cache
  • Garage - S3-compatible object storage

When you declare a need in your holden.yml, Holden:

  1. Spins up the service container on your app’s network
  2. Generates secure, deterministic credentials
  3. Injects connection variables into your app’s environment

Add a needs block to your app’s holden.yml:

services:
web:
image: myapp:latest
domain: myapp.example.com
env:
DATABASE_URL: ${needs.postgres.url}
REDIS_URL: ${needs.valkey.url}
needs:
postgres:
valkey:

Holden generates passwords deterministically from a seed, so they’re stable across redeploys and don’t need to be stored. See Security for details.