Skip to content

Sites

Park a folder to serve every project inside it: ~/Sites/shop becomes https://shop.test. New folders are picked up as you create them.

Terminal window
devkit park ~/Sites

Link a project to serve one folder, optionally under another name:

Terminal window
cd ~/Code/api && devkit link # api.test
cd ~/Code/api && devkit link billing # billing.test

In the app, use Park a folder or Link a project on the Sites screen, or Settings › Folders.

DevKit looks at each folder and picks the first match:

It finds Served as
artisan Laravel (Statamic when please is there too), from public/
wp-config.php or wp-load.php WordPress (Bedrock when it’s under web/)
craft and web/index.php Craft CMS
bin/console and public/index.php Symfony
public/index.php or index.php PHP
manage.py Django, as WSGI or ASGI
A FastAPI(, Starlette( or Flask( app in main.py, app.py, app/main.py and similar FastAPI, Starlette or Flask
package.json with a dev or start script A dev server, started with pnpm, yarn, bun or npm to match the lockfile
index.html in dist/, build/, _site/, out/ or public/ A static site, with a single-page-app fallback
index.html A static site

To run something else, set the command yourself. DevKit gives it a free port in $PORT and proxies the site to it:

Terminal window
devkit run storefront "npm run dev -- --port $PORT"

Dev servers start on the first request and keep running, with WebSockets and hot reload passed through.

Every site is served over HTTPS with a certificate from DevKit’s own certificate authority. Certificates are issued on demand and renewed automatically. devkit unsecure <site> serves a site over plain HTTP instead.

Tools that don’t use the system keychain, like Node or Python scripts, may need the certificate authority. Print it with:

Terminal window
devkit ca > ~/devkit-ca.pem
export NODE_EXTRA_CA_CERTS=~/devkit-ca.pem

Each site can use its own PHP, Python or Node version. Choose it in the site’s row, or from the terminal:

Terminal window
devkit isolate 8.2 --site legacy
devkit unisolate --site legacy

Node versions are also read from .nvmrc and .node-version. See PHP, Python and Node.

A site can keep processes running alongside it: queue workers, schedulers, Vite. DevKit suggests the usual ones for the framework it found. Add them in the site’s row, or:

Terminal window
devkit process add "php artisan queue:work"
devkit process list

Processes restart when they exit and start again with DevKit. Their output is in Logs.