.github/workflows/vercel.yml) has two jobs.
Artifact build
Runs on every pull request and every push tomain. It needs no Vercel account and no secrets, so fork pull requests run it safely.
The job:
- Starts an isolated PostgreSQL service.
- Writes a local
.vercel/project.jsonand runsvercel build --prodoffline, with placeholder Blob credentials. This also applies migrations to the isolated database. - Checks the generated Function:
- runtime is
nodejs24.xandmaxDurationis300; - PDFKit standard font files are included in the traced files;
- every emitted server chunk loads with
--no-experimental-require-module, which matches the Vercel runtime; - the Vercel entrypoint answers a request.
- runtime is
bundledInteropPackages in apps/server/tsdown.config.ts.
Live smoke test
Runs only when started manually (workflow_dispatch). It uses the vercel-smoke GitHub environment and runs tooling/deployment/smoke.mjs against VERCEL_SMOKE_URL.
The script checks health, public pages, signup, resume CRUD, public PDF rendering, a 10 MiB upload and download, and one-time use of staged requests.
To also check a 25 MiB agent attachment, configure a deterministic OpenAI-compatible test provider that serves the model smoke-model:
No paid AI model is needed.
Run the smoke test locally
Against a local Docker installation:SMOKE_AI_BASE_URL and SMOKE_AI_API_KEY to include the attachment check.