Skip to content
RELKIT
Esc
↑↓navigate↵open⌘Jpreview
On this page

Deployment

Run locally with Docker, ship a built Bun application, and choose supported hosting, resource, and job providers.

Deployment makes a checked application run in its target environment. Begin with local Docker for development dependencies and container verification, then choose how to host the built server and supply its production resources.

Pre-setup

Complete each module’s local configuration before building: database, auth, storage, cache, jobs, and realtime. Keep required application values in defineEnv and connect that descriptor through defineApp({ env }).

From the backend root, verify the application before choosing a deployment target:

bun run check
bun run typecheck
bun run test
bun run build

These commands create no cloud resources. A production server receives secrets from its process environment; the build does not embed .env values. Preserve application state, database migrations, and immutable worker versions across releases.

Supported providers

Role Supported path What RELKIT manages
Local development services Docker recipes for Redis, MinIO, Inngest, Trigger.dev, and Effect MQ Graph-required containers, readiness, connection values, and persistent volumes; coverage
Self-hosted application Built Bun server or generated Docker image Portable build output; you provide the host, process/container supervisor, TLS, and resource connections
Cloud application host AWS, through @relkit/aws ECS/Fargate, networking, load balancer, workload access, and CloudWatch stdout; AWS setup
Infrastructure engine Pulumi, through @relkit/pulumi Stack configuration, preview, apply, outputs, refresh, and destroy
Infrastructure-owned resources AWS wrappers for supported S3 and Redis/Valkey resources Resource lifecycle and access, separately from the application host
Connected file/cache resources S3-compatible storage, Redis, Cloudflare R2 and KV Runtime connections to existing resources; provider configuration
Native durable tasks Inngest, Trigger.dev, Effect MQ Provider-specific worker publication, schedules, and supported run semantics; job deployment
Application data and authentication Drizzle with PostgreSQL, MySQL, or SQLite; Better Auth on that service Application connection and auth activation; you own database hosting, migrations, and backups
Models and telemetry Selected LangChain model SDKs, Sentry, OTLP Selected runtime integration; no implicit provisioning or model account

AWS is the current built-in cloud host. The Cloudflare package provides R2/KV runtime adapters, not Workers application deployment. There are no built-in Vercel, Railway, Azure, or Google Cloud host integrations. A platform that runs the built Bun server or image can be used through the self-hosted path; that is separate from relkit deploy support.

Pulumi’s cloud, local, and object-storage state backends store stack state; they do not add application hosts. The native job packages also publish deployment hooks for their workers, not alternative infrastructure engines selected by defineApp.deployment.engine.

Move from local to production deliberately

docker(adapter) is a development selection. It does not create cloud infrastructure or make a loopback connection reachable from production. Use configured connected adapters or supported infrastructure wrappers for release builds, and keep descriptor IDs and profile names consistent. Verify the real provider’s behavior, credentials, network access, persistence, and migrations before accepting production traffic.

Cloud/deployment creation flags remain unavailable for new starters. Add the selected tooling to an existing app following AWS setup.

Reference and source