Use this when you do not want three terminals. Docker only.
Compose still needs real Supabase keys in a root .env. The example file ships empty on purpose so a service-role JWT never lands in git.
1

Clone and copy env

2

Fill the two required keys

For a local stack, start a one-shot Supabase (or reuse keys from a previous supabase status) and paste:Defaults for URLs are already in docker-compose.yml (http://localhost:54321, ws://localhost:8000/ws).
3

Start the stack

porto is at http://localhost:3000.

Ports

Migrations under frontend/supabase/migrations/ apply on first boot.

When to use source instead

  • You want hot reload (uvicorn --reload, next dev)
  • You are attaching CLI harnesses that must spawn as your user (claude, grok, codex look in this $HOME)
  • You are pointing Local / network at a host on the same machine (Ollama on 127.0.0.1)
CLI seats and local Ollama are simpler on the from-source path. A containerized API does not inherit your desktop CLI login.