Project Services

Project services let you provision managed database and infrastructure services for your projects. Services run as containers alongside your preview containers.

Available Services#

PostgreSQL (Available)#

Managed PostgreSQL databases with:

  • Versions: 17 (default), 16, 15
  • Size tiers:
TierMemoryCPUStorage
Dev256 MB0.51 GB
Standard512 MB1.05 GB
Performance1 GB2.020 GB

Redis (Available)#

Managed Redis instances for caching and sessions:

  • Versions: 8 (default), 6
  • Size tiers:
TierMemoryCPUStorage
Dev128 MB0.5512 MB
Standard256 MB1.02 GB
Performance512 MB2.010 GB

Coming Soon#

  • MySQL
  • MongoDB
  • Qdrant (vector database)
  • MinIO (S3-compatible storage)
  • Mailpit (email testing)

Provisioning a Service#

From the Command Center, click the Services button (Blocks icon) in the top toolbar to open the Services panel in the left sidebar:

  1. Choose a service type (e.g., PostgreSQL)
  2. Select a size tier and version
  3. Click Provision — the service starts provisioning asynchronously

The service goes through these states:

Pending → Provisioning → Running → Stopped
                       → Error
                       → Destroying → Destroyed
                                    → DestroyFailed  (reaper retries automatically)

Provisioning during project creation#

The Services step in the project creation wizard lets you provision services before your project is fully set up. It appears between the Source step and the Review step (wizard order: Identity → Stack → Source → Services → Review).

During this step you can:

  • Select one or more service types (PostgreSQL, Redis) and choose a size tier for each (the default version is used automatically)
  • Skip the step entirely if you don't need any services at creation time — you can always add services later from the Command Center

Services selected in the wizard are provisioned immediately after the project is created. Their credentials are injected into the project's environment automatically, so agents have database access from the first run.

Credentials#

Each service generates credentials automatically. Credentials are encrypted at rest and can be viewed in masked or revealed mode.

Service-provisioned keys (such as DATABASE_URL, PGHOST, REDIS_URL) are read-only — attempting to overwrite or delete them via the API or config-vars UI returns an error. The lock icon in the environment variables UI reflects this server-side enforcement. See Environment Variables for details.

PostgreSQL Credentials#

KeyExample
DATABASE_URLpostgres://user:pass@host:5432/db
PGHOSTContainer hostname
PGPORT5432
PGUSERAuto-generated username
PGPASSWORDSecurely generated password
PGDATABASEAuto-generated database name

Redis Credentials#

KeyExample
REDIS_URLredis://:pass@host:6379/0
REDIS_HOSTContainer hostname
REDIS_PORT6379
REDIS_PASSWORDSecurely generated password

Managing Services#

ActionDescription
StartStart a stopped service
StopStop a running service (data preserved)
RestartStop and start a service
DestroyPermanently remove the service, container, and volume

Permission required: project:settings for start/stop/restart, project:delete for destroy.

Automatic restart: Stopped services are automatically restarted when a new agent execution or preview container starts, so credentials remain accessible without manual intervention.

Health Checks#

Services include automatic health checks run during provisioning before the service is marked Running:

  • PostgreSQLpg_isready checks that the database is accepting connections.
  • Redisredis-cli ping checks that the server responds with PONG.

Billing and Plan Limits#

Your plan controls how many services you can provision at once. If you reach the limit, the Provision action returns an error and you must destroy an existing service before adding another.

Only one active service of each type is allowed per project at a time (enforced by a unique constraint on project + service type).

Troubleshooting#

SymptomLikely causeFix
Service stays in Provisioning for > 2 minutesHealth check timed out or container failed to startThe platform automatically transitions the service to Error state on the next page load (no manual refresh required). Check the error message on the service card; destroy and re-provision with a smaller tier
Service stuck in DestroyFailedKubernetes resource removal could not be verifiedThe background reaper retries automatically; if it persists after several minutes contact support
Credentials not visible in env varsProvisioning may still be in progressWait for the service to reach Running status; credentials are injected when provisioning completes
Cannot start/stop/restartRequires project:settings permissionAsk a project owner to grant you the appropriate role

Service Catalog#

The service catalog shows all available and coming-soon services. Each catalog entry includes the service type, description, available versions, size tiers, and the environment variable keys that will be generated.