Core concepts and architecture of the RaidFrame platform.
A project is the top-level container for your application. It holds one or more services, databases, environment variables, and domains.
rf projects create my-saas
rf projects switch my-saas
Every project has a unique slug and a default URL: https://<project>-<hash>.raidframe.app.
A service is a single deployable unit — a container running your code. Projects can have multiple services:
| Type | Description | Example |
|---|---|---|
| web | Receives HTTP traffic, has a public URL | Next.js app, API server |
| worker | Background process, no inbound traffic | Queue processor, email sender |
| cron | Runs on a schedule | Daily report, cleanup job |
| static | Static files served via CDN | React SPA, docs site |
rf services create api --type web
rf services create processor --type worker
rf services create cleanup --type cron
Every project has three built-in environments:
You can create custom environments:
rf env create load-test --from production
Each environment has its own:
Managed databases are provisioned inside your project and auto-connected to your services:
rf add postgres
rf add redis
Connection strings are injected as environment variables automatically: DATABASE_URL, REDIS_URL, VECTOR_URL.
RaidFrame runs in 14+ regions worldwide. Your project deploys to one region by default, but you can add more:
rf regions add eu-west-1
rf regions add ap-southeast-1
Traffic is automatically routed to the nearest healthy region.
Every rf deploy creates a deployment — an immutable snapshot of your code, configuration, and build artifacts. Deployments are versioned and can be rolled back instantly:
rf deployments list
rf deployments rollback
The raidframe.yaml file in your project root defines your services, databases, and configuration. It's optional — RaidFrame auto-detects your stack if you don't have one. See Configuration for the full spec.