Docs · Boot detection
How Omea decides to boot your app.
Before anything runs, Omea inspects your repo and picks a boot recipe. Detection checks a fixed, ordered list of signals — the first match wins.
Detection order
docker-compose.ymlordocker-compose.yaml— boots withdocker compose up --buildthendocker compose up. This is a presence check only: Omea does not parse the compose file's own services or ports, it hands the file to Docker Compose and lets Compose interpret it..devcontainer/devcontainer.json— boots withdevcontainer up. Same presence-only check; your devcontainer's own build andpostCreatecommands run as written.package.json— runs Node inference (below).omea.yaml— a manual, explicit recipe, read only if none of the above matched. It does not merge with inference; it fully replaces it.- None of the above — detection fails rather than guessing.
Node inference
When package.json exists, Omea infers a recipe from it directly:
- Package manager —
pnpm-lock.yamlpresent → pnpm; elseyarn.lock→ yarn; else npm (the default, no lockfile required). - Framework — read from
dependencies/devDependencies:next→ Next.js,@remix-run/react→ Remix,vite→ Vite, otherwise a generic Node app. Detection is by dependency name only. - Boot script — uses
scripts.devif present, elsescripts.start. If neither exists, detection fails with an explicit error rather than falling back silently. - Port — 5173 when Vite is a dependency, otherwise 3000.
Databases: the Prisma/Postgres heuristic
If prisma/schema.prisma exists and its text contains provider = "postgresql", Omea adds a Postgres service, injects a DATABASE_URL, and runs your db:setup script if you have one (otherwise npx prisma db push). This is a narrow, literal string match on that one provider line — not general database detection, and not a guarantee for other ORMs or databases.
What's not detected yet
- Only npm, pnpm, and yarn are recognized — no bun or deno.
- Only the Postgres-via-Prisma path above triggers a database service; other drivers and ORMs need a manual
omea.yamltoday. - Non-Node ecosystems (Python, Ruby, Go, Rust, PHP, JVM) have no inference — a compose file, devcontainer, or manual recipe is the way to boot those today.
Read next
- Getting started — run
npx @omea/cli runagainst a real repo. - The test format — what runs once your app has booted.