Requirements
The runtime, database, domain and optional provider accounts YourDesk needs, where it can be hosted, and a server sizing starting point.
4 min readUpdated Oct 17, 2026Applies to YourDesk 1.0.0
On this page
At a glance
| You need | Required for | Notes |
|---|---|---|
| Node.js 22 and npm | Building and running | package.json pins "node": "22.x". The Docker image is built on node:22-alpine. |
| A host for a Node app | Production | Docker on a VPS, a plain VM, Railway, Render, Fly.io, or Vercel. Not PHP or cPanel shared hosting. |
| Postgres | Production | Any Postgres you can reach with a connection string. Without one, an embedded database is used. |
| A domain with HTTPS | Production | Session cookies are Secure and __Host- prefixed, so sign-in only sticks over HTTPS (or on localhost). |
| xAI API key | Optional | The Agent and AI drafting. Everything else works without it. |
| Stripe and/or PayPal account | Optional | Selling plans on the public pricing page. |
| Google OAuth client | Optional | "Continue with Google" on the sign-in page. |
| An email mailbox (IMAP and SMTP) | Optional | Sending letters, reminders and syncing a client inbox. |
Where it can run
YourDesk is a server-rendered Node application. The build produces one of two outputs:
| Target | Build | Notes |
|---|---|---|
| Docker, VPS, Railway, Render, Fly.io | npm run build:node (or the Dockerfile) |
A plain Node server in .output/. Recommended for most installs. |
| Vercel | npm run build |
Uses the Vercel preset. vercel.json pins the region to iad1; change it to sit next to your database. |
Pages and actions are ordinary request and response, so serverless hosting such as Vercel works. Two things to know before you choose it:
- The embedded database does not survive there. On Vercel it lives in
/tmp, which is thrown away. Always setDATABASE_URLon Vercel. - Some limits live in memory. Sign-in attempts and Agent runs are rate limited per process, so on serverless or with several replicas each instance counts separately.
Database
- Postgres. The bundled documentation asks for Postgres 14 or newer, and
docker-compose.ymlruns Postgres 16. No extensions are needed. Neon, Supabase, RDS, a Docker container and self-hosted Postgres all work; the app connects with the standardpgdriver. - Migrations are a deploy step on Postgres. They run during
npm run buildandnpm run build:node, when the Docker container starts, or when you runnode scripts/migrate.mjs. See Run the migrations. - The embedded database (PGLite) is Postgres compiled to WebAssembly. With no
DATABASE_URL, the app stores it on disk in./data/pgliteand applies the migrations itself at startup. It is meant for a local trial or a single-person evaluation, not for production.
Warning
Switching from the embedded database to Postgres later starts with an empty database. Version 1.0.0 has no tool to move data between them, and the JSON export cannot be imported back. Choose Postgres before you put real work in.
Domain and HTTPS
YourDesk does not terminate TLS itself. Put it behind something that does: Caddy, nginx with Let's Encrypt, Traefik, a load balancer, or your platform's built-in HTTPS. Installation has examples.
Set BETTER_AUTH_URL to the exact public origin (for example https://desk.example.com). Sign-in checks the browser's origin against it, and Stripe and PayPal checkout use it to send customers back.
Provider accounts
Every integration is optional and needs its own account. Each provider bills you directly under its own terms; none of them are included in the purchase.
| Provider | What it powers | Pricing |
|---|---|---|
| xAI | The Agent, lead research and letter drafting | xAI models and pricing |
| Stripe | Card checkout for paid plans | Stripe pricing |
| PayPal | PayPal checkout for paid plans | PayPal fees |
| Google Cloud | "Continue with Google" | OAuth clients have no usage fee |
| Your email provider | Sending mail and syncing a client inbox | Your existing mailbox plan |
| Your host and database | Running the app | See your provider's pricing, for example Neon or Vercel |
Server size
These figures are guidance, not a measured benchmark. YourDesk is a light server: most of the work is database queries and rendering pages.
| Workload | Suggested starting size |
|---|---|
| One studio, a handful of users | 1 vCPU, 1 GB RAM (the bundled documentation calls 512 MB comfortable for the server alone) |
| Several studios on one deployment | 2 vCPU, 2 GB RAM, with Postgres on a managed service or its own machine |
| Building on the same machine | Allow extra memory while npm ci and the Vite build run, or build the Docker image elsewhere and pull it |
Run the app close to its database: every page load makes several queries.
Browsers
The listing names current Chrome, Firefox, Safari, Edge and Opera. The layout is responsive, with a bottom tab bar on phones. Voice dictation in Discover and the proposal editor uses the browser's own speech recognition (set to English, Australia). Where the browser has none, it records a voice note you can play back while you type.
Local development
For a laptop install you only need Node.js 22 and npm. The database, keys and a domain can all come later. Quick start walks through it.