Skip to main content
Hired is free, AGPL, and designed so one person can deploy it in five minutes and never open a terminal again. DATABASE_URL is the only thing it asks of its host. You do not invent a password, run a migration, or configure anything before first boot — the app provisions its owner account and applies its own migrations when it starts.

Docker

One command on any machine with Docker. PDF export works out of the box, because the image carries the browser and fonts the renderer needs.

Railway

Five clicks, no terminal at all. One variable to type, and it is a reference the platform autocompletes.

Locally

Node 20+ and a Postgres. Four commands.

What happens on first boot

1

Migrations apply themselves

npm start runs prisma migrate deploy before the server. There is no migration step for you to run, now or after any future update.
2

The owner account is created

One account, role SUPER_ADMIN. It cannot be demoted or deleted, and there is exactly one per instance.
3

A password is generated and printed once

Read it from the logs, sign in, change your email and password from Settings.
4

You connect an assistant

Open Settings. It opens on Connections, with one already waiting. Per-client steps →

Every environment variable

Only the first is required, and everything else has a working default.
This list is short on purpose. Everything else an instance can be configured with lives in the database and is changed from Admin → Configuration without a redeploy — including the instance name, the public URL, email and billing. What is in there →Note that the Public URL setting and the PUBLIC_URL variable are not two ways to do one thing. The setting is what invitation links and the Stripe webhook URL are built from; the variable only fills in the sign-in line of the startup banner.

Upgrading and backups

Both are one command with Docker, and automatic on a platform that redeploys from git. Upgrading, backups and restores →

Locked out

Set RESET_OWNER_PASSWORD=1 on the app and restart. A fresh owner password is printed to the logs. Remove the variable afterwards, or it resets on every boot.