Skip to main content

Self-hosting

Develop

Outbound mail providers: log (default, dev) · mailchannels (keyless) · resend (+ RESEND_API_KEY). Inbound arrives through Email Routing (email() handler) or POST /v0/internal/inbound in dev. Scheduled drafts drain on the */5 * * * * cron; Miniflare needs --test-scheduled.

Deploy

infra/alchemy.run.ts is the whole data plane as code — bindings, crons and queue consumers included. Custom domains for sending need real DNS + OUTBOUND_PROVIDER set; verification runs live DNS-over-HTTPS checks.

Repo map

apps/api (Hono + Effect) · apps/web (Next + Better Auth) · packages/shared (Zod contracts) · packages/db (Prisma) · packages/sdk · packages/cli · infra (Alchemy) · docs (this site).