Services
Sprintsail provides a marketplace of managed services that you can provision and bind to your apps. Services are brokered via the Open Service Broker API (OSBAPI) and managed through Crossplane.
Service marketplace
View available services:
ss services marketplace
SERVICE PLANS DESCRIPTION
postgresql starter, growth, dedicated PostgreSQL managed database
redis starter, growth, dedicated Redis in-memory cache/store
s3 starter, growth S3-compatible object storage
Create a service
Provision a new service instance:
ss services create my-postgres --type postgresql --plan growth
Check provisioning status:
ss services info my-postgres
Name: my-postgres
Type: postgresql
Plan: growth
Status: ready
Region: us-east-1
Created: 2026-04-01T10:30:00Z
Bound to: my-app
Provisioning typically takes 1--3 minutes for databases and under 30 seconds for Redis and S3.
Bind a service to an app
Binding injects connection credentials into your app as environment variables:
ss services bind my-postgres my-app
This restarts your app with the new credentials. The injected variables depend on the service type (see below).
Unbind a service
Remove the binding. The service continues running but credentials are removed from the app:
ss services unbind my-postgres my-app
Destroy a service
Permanently delete a service and all its data:
ss services destroy my-postgres
You must unbind all apps first. You will be prompted to type the service name to confirm.
PostgreSQL
Managed PostgreSQL with automated backups, point-in-time recovery, and connection pooling.
Plans
| Feature | Starter | Growth | Dedicated |
|---|---|---|---|
| Storage | 1 GB | 50 GB | 500 GB |
| Connections | 20 | 200 | 2000 |
| Replicas | 0 | 1 read replica | Up to 5 |
| Backups | Daily, 7-day retention | Daily, 30-day retention | Continuous, 90-day |
| Version | 16 | 16 | 15 or 16 |
| HA | No | Yes (multi-AZ) | Yes |
Injected environment variables
When bound, the following variables are set on your app:
DATABASE_URL=postgres://user:pass@host:5432/dbname
PGHOST=host
PGPORT=5432
PGUSER=user
PGPASSWORD=pass
PGDATABASE=dbname
Direct access
For debugging or migrations, connect directly via the CLI:
ss services connect my-postgres
This opens a psql session tunneled through the platform. You can also use:
ss services credentials my-postgres
Redis
Managed Redis for caching, session storage, and pub/sub.
Plans
| Feature | Starter | Growth | Dedicated |
|---|---|---|---|
| Memory | 25 MB | 1 GB | 16 GB |
| Max connections | 20 | 500 | 10000 |
| Persistence | No | AOF | AOF + RDB |
| HA | No | Yes (replica) | Yes (cluster) |
Injected environment variables
REDIS_URL=redis://user:pass@host:6379
REDIS_HOST=host
REDIS_PORT=6379
REDIS_PASSWORD=pass
Direct access
ss services connect my-redis
S3 (Object Storage)
S3-compatible object storage powered by the underlying cloud provider.
Plans
| Feature | Starter | Growth |
|---|---|---|
| Storage | 5 GB | 500 GB |
| Bandwidth | 10 GB/mo | 1 TB/mo |
| Versioning | No | Yes |
Injected environment variables
S3_BUCKET=bucket-name
S3_ENDPOINT=https://s3.us-east-1.amazonaws.com
S3_ACCESS_KEY=AKIA...
S3_SECRET_KEY=secret
S3_REGION=us-east-1
These credentials work with any S3-compatible SDK (AWS SDK, boto3, MinIO client).
Listing services
List all services in the current organization:
ss services list
NAME TYPE PLAN STATUS BOUND TO
my-postgres postgresql growth ready my-app
my-redis redis starter ready my-app, my-worker
staging-db postgresql starter ready staging-app
Service lifecycle
Services are independent from apps. Destroying an app does not destroy its bound services. This means you can:
- Bind one service to multiple apps (e.g., a shared database for an API and a worker)
- Rebind a service to a replacement app during migrations
- Keep data intact across app redeployments
Next steps
- Environment variables --- how service credentials and env vars work together
- Bind a database --- step-by-step tutorial
- Plans --- service quotas by plan