LIVEReading: Run Your Own Scheduling App Free with Cal.diyTotal time: 12 minSteps: 6Worked first time: 45% LIVEReading: Run Your Own Scheduling App Free with Cal.diyTotal time: 12 minSteps: 6Worked first time: 45%
CBW
Spicygithub.com/calcom/cal.diy2026-05-18

Run Your Own Scheduling App Free with Cal.diy

Cal.diy is the fully open-source, MIT-licensed scheduling platform you run on your own machine. No Cal.com account, no license key, no monthly fee.

// Build stats

  • Total time12 min
  • Number of steps6
  • DifficultySpicy
  • Worked first time45%
// Before you start

What you need

  • Node.js 18 or higher installed (check with: node --version)
  • Yarn installed (check with: yarn --version)
  • Docker and Docker Compose installed and running
  • Git installed
  • 8 GB RAM minimum — the build is memory-hungry
  • Mac or Linux recommended; Windows works via Git Bash or WSL
01
Step 1 of 6

Clone the repository

2 min

This downloads the entire Cal.diy codebase to a folder on your computer. On Windows you must use the extra flag shown so that internal file links copy correctly.

Terminal · mac
$ git clone https://github.com/calcom/cal.diy.git
$ cd cal.diy
What you should see
A folder called cal.diy appears. Your terminal prompt now shows you are inside it.
This might happen

Windows users get symlink errors during clone

Run Git Bash as Administrator and use: git clone -c core.symlinks=true https://github.com/calcom/cal.diy.git

02
Step 2 of 6

Install all dependencies

5-10 min

Yarn reads the project's dependency list and downloads every required package. This is a large monorepo so it takes a few minutes. Do not use npm — the project requires Yarn.

Terminal · mac
$ yarn
What you should see
Lots of download progress lines, ending with 'Done in Xs.' and no red error text.
This might happen

Install fails or hangs with out-of-memory errors

Run this first to give Node more RAM, then retry yarn: export NODE_OPTIONS='--max-old-space-size=8192'

03
Step 3 of 6

Create your environment file and generate secret keys

3 min

Cal.diy needs a .env file holding secret keys and your database address. You copy the example file, then generate two random secrets with openssl and paste them in. The file opens in nano — a simple text editor. Use Ctrl+X then Y then Enter to save and exit.

Terminal · mac
$ cp .env.example .env
$ echo "NEXTAUTH_SECRET=$(openssl rand -base64 32)"
$ echo "CALENDSO_ENCRYPTION_KEY=$(openssl rand -base64 24)"
What you should see
Two long random strings are printed. Copy each one, then open .env with: nano .env — find NEXTAUTH_SECRET and CALENDSO_ENCRYPTION_KEY and paste the matching value after the = sign.
This might happen

openssl is not found on Windows

Generate the secrets at https://generate-secret.vercel.app/32 and https://generate-secret.vercel.app/24 instead, then paste them manually into .env

04
Step 4 of 6

Windows only — fix the Prisma .env symlink

1 min

On Windows, a symbolic link inside the project confuses Prisma. This command replaces it with a real file copy. Skip this step entirely if you are on Mac or Linux.

Terminal · mac
$ rm packages/prisma/.env && cp .env packages/prisma/.env
What you should see
No output means it worked. You can confirm with: ls packages/prisma/.env
05
Step 5 of 6

Start the app with Docker (quick-start mode)

5-15 min first run

This single command spins up a local PostgreSQL database inside Docker, seeds it with test accounts, and starts the Cal.diy web app. The first run downloads Docker images and compiles the app — it takes a while. Subsequent starts are much faster. Leave this terminal window open while you use the app.

Terminal · mac
$ yarn dx
What you should see
After several minutes you will see a line like 'ready - started server on 0.0.0.0:3000'. The test account credentials are printed in the console.
This might happen

Port 3000 or 5432 is already in use and the command fails

Stop whatever is using those ports (another app, another Postgres instance) then run yarn dx again

06
Step 6 of 6

Open Cal.diy and sign in

1 min

With the server running, open your browser and go to the local address below. Use one of the pre-made test accounts to explore the app. The admin account lets you see all settings.

Terminal · mac
$ open http://localhost:3000
What you should see
The Cal.diy login page loads. Sign in with pro@example.com / pro for a standard user, or admin@example.com / ADMINadmin2022! for the admin view.
This might happen

Page shows a database connection error

Docker may still be starting. Wait 30 seconds and refresh. If it persists, check that Docker Desktop is running and run yarn dx again.

// Status

cooked. baked. worked.

A fully functional, locally running scheduling app at http://localhost:3000 where you can create event types, share booking links, and manage availability — all on your own machine with no external accounts required.

// the honest bit

The honest part

Cal.diy is explicitly labelled 'use at your own risk' and is intended for personal, non-production use only. The README strongly warns that self-hosting requires advanced knowledge of server administration and database management. Enterprise features like Teams, Organizations, SSO, and Workflows have been removed. The initial build is very slow and memory-intensive — machines with less than 8 GB RAM will struggle. For anything business-critical, the project itself recommends Cal.com instead.