Skip to main content
To run your own changes, build Emplio’s images from the code instead of downloading them. You need Bun 1.3 and Docker.
1

Clone and install

2

Build and start

The first time, it asks the same three questions as the installer and writes .env. A build takes about 8 minutes on a small server. Run it again after each change.
3

Check the types

Run this before you push.

Dev servers

This runs the web app (next dev) and the API (bun --watch) together, reloading as you edit. The API needs Postgres, Gitea and the runner to reach. It reads the same settings the app container gets: DATABASE_URL, GITEA_URL, GITEA_TOKEN, COMPUTER_RUNNER_URL, RUNNER_TOKEN, ENCRYPTION_KEY and OPENROUTER_API_KEY. Run bun run db:migrate once against a fresh database. The runner joins the emplio-app container to each person’s network, so computers and browsers work end to end only with the app in Docker. Use ./setup.sh --build to check those.

Tests

.github/workflows/ci.yml shows exactly how CI starts Postgres and Gitea for the backend tests. CI runs all three on every pull request, so you can leave the tests to it.
docker/smoke.sh builds everything, signs up, runs a real computer and browser, and removes all of it afterwards.

Project map

What each folder holds.

Contributing

Open a pull request.