# IdeA Server/Client Remote Deployment `idea --serve` serves the web UI and the API from the same origin. The frontend build must be available as a web root containing `index.html`. ## Local Development ```bash pnpm --dir frontend build idea --serve --web-root frontend/dist ``` The default local listener is `127.0.0.1:17373`. Loopback development may use plain HTTP; the session cookie is still `HttpOnly` and `SameSite=Strict`. ## Packaged Artifact The release artifact is still a single IdeA binary/AppImage. Packaging must copy the frontend build output (`frontend/dist`) into the packaged `web/` resource next to the binary. `idea --serve` resolves assets in this order: 1. `--web-root PATH` 2. `IDEA_WEB_ROOT` 3. packaged `web/`, then packaged `frontend/dist/` 4. development fallback `frontend/dist` relative to the current directory If no `index.html` is found, the server refuses to start. ## Remote HTTPS Public exposure requires a reverse proxy that terminates HTTPS: ```bash idea --serve \ --listen 127.0.0.1:17373 \ --allow-remote \ --public-origin https://idea.example.com \ --trust-reverse-proxy ``` The proxy must forward the same origin for the SPA, `/api/*`, and `/api/ws`. Do not expose the backend on a public non-loopback address without TLS proxying. Secrets must never be placed in URLs; pairing uses `POST /api/pair` and then an `HttpOnly`, `Secure`, `SameSite=Strict` session cookie.