Run from source
You need Go 1.25 or later, Node 22 or later, pnpm 10 and a Postgres 16 you can reach.
git clone https://github.com/outflareai/outflarecd outflarepnpm installThe Makefile wraps the common commands. It defaults DATABASE_URL to postgres://postgres@localhost:5432/outflare and sets a fixed development-only OUTFLARE_SECRET_KEY. Never use that key for real mailboxes.
make migrate # create the schema in DATABASE_URLmake run # engine: API + workers on :8080make web # web app on :5173, proxying the API to :8080make test # Go tests (needs TEST_DATABASE_URL, a disposable database)make build # engine binary at engine/bin/outflare, plus pnpm -r buildmake docker # build the outflare:dev imageOverride the database with make run DATABASE_URL=postgres://....
Repository layout
Section titled “Repository layout”| Path | What |
|---|---|
engine/cmd/outflare |
The binary: serve, migrate and version commands |
engine/internal/api |
HTTP handlers, authentication and workspace scoping |
engine/internal/jobs |
The Postgres job queue |
engine/internal/mailbox |
CSV import, provider detection, SMTP/IMAP checks, DNS health |
engine/internal/db/migrations |
Append-only numbered SQL migrations |
api/openapi.yaml |
The API contract |
web/ |
Vite + React web app |
sdk/ts/ |
TypeScript SDK, generated from the contract |
Changing the API
Section titled “Changing the API”Change api/openapi.yaml first, then regenerate the SDK types:
pnpm --filter @outflare/sdk generateCI fails if sdk/ts/src/schema.ts does not match the spec. Read AGENTS.md before your first change: it lists the rules every change follows, such as workspace scoping, audit events and running side effects in jobs.