Self-Hosted vs Cloud
The two ways to run Dyrected and when to pick each.
| Self-Hosted | Cloud | |
|---|---|---|
| Engine | Runs inside your app | Runs on Dyrected's servers |
| Database | Your own (SQLite, Postgres, MySQL) | Fully managed |
| Storage | Local disk or your S3/R2/Cloudinary | Fully managed |
| Auth | You manage JWT secret and sessions | Managed, with workspace RBAC |
| Multi-site | One site per deployment | Multiple sites per workspace |
| Price | Free | Paid plans — see Billing |
| Best for | Full control, data residency, offline | Speed, teams, multiple client sites |
Self-Hosted
The Dyrected engine is an npm package that runs inside your Next.js or Nuxt app. There is no separate CMS process. Your config, your database, your server.
// app/dyrected/[...route]/route.ts
import { createDyrectedApp } from '@dyrected/core/server'
import config from '@/dyrected.config'
const app = createDyrectedApp(config)
export const GET = app.fetch
export const POST = app.fetch
export const PATCH = app.fetch
export const DELETE = app.fetch// nuxt.config.ts
import config from './dyrected.config'
export default defineNuxtConfig({
modules: ['@dyrected/nuxt'],
dyrected: {
...config,
apiBase: '/dyrected',
},
})Self-hosting is free under the Business Source License. You can use it commercially for client projects with no restrictions.
Cloud
Your app sends requests to https://api.dyrected.cloud using a Site API Key and Site ID. The database, storage, and admin users are managed by Dyrected. You still write the same dyrected.config.ts — the difference is where it runs.
// dyrected.config.ts
import { defineConfig } from '@dyrected/core'
export default defineConfig({
// No db adapter needed — Cloud manages the database
serverURL: process.env.DYRECTED_CLOUD_URL,
apiKey: process.env.DYRECTED_API_KEY,
siteId: process.env.DYRECTED_SITE_ID,
collections: [...],
})// app/dyrected/[...route]/route.ts — same as self-hosted
import { createDyrectedApp } from '@dyrected/core/server'
import config from '@/dyrected.config'
const app = createDyrectedApp(config)
export const GET = app.fetch
export const POST = app.fetch
export const PATCH = app.fetch
export const DELETE = app.fetch// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@dyrected/nuxt'],
dyrected: {
apiKey: process.env.DYRECTED_API_KEY,
siteId: process.env.DYRECTED_SITE_ID,
baseUrl: 'https://api.dyrected.cloud',
},
})When Cloud makes sense
- You're an agency building sites for multiple clients — each client gets their own site in one workspace, billed together, managed from one dashboard
- You want to ship fast — no Postgres to provision, no S3 bucket to configure, no server to maintain
- You're on Vercel or Railway and don't want to manage a separate database service
- You need multi-site — Cloud workspaces let you spin up a new site without touching any code
- You're a solo developer who wants a low-maintenance stack — $19/month is cheaper than provisioning and operating your own managed Postgres + storage
→ Deploy with Dyrected Cloud — full setup guide with pricing
Can I switch later?
Yes. Both modes use the same dyrected.config.ts. To migrate from self-hosted to Cloud: export your data, create a site in the Cloud dashboard, run dyrected push to sync your schema, and update your environment variables. No code changes needed.
Can I use both at once?
Yes — common pattern for agencies: self-hosted locally during development, Cloud in production. Or self-hosted for internal tools, Cloud for client-facing sites.