uigen serve
The serve command reads an API spec and starts a local server with a fully generated UI.
Usage
uigen serve <spec> [options]
npx @uigen-dev/cli serve <spec> [options]
<spec> can be a local file path or a remote URL.
Options
| Flag | Type | Default | Description |
|---|---|---|---|
--port |
number |
4400 |
Port to listen on |
--proxy-base |
string |
From spec servers[0].url |
Override the API proxy target URL |
--renderer |
string |
react |
Renderer to use (react; vue and svelte are planned) |
--target |
string |
web |
Serve target (web, electron) |
--verbose |
boolean |
false |
Log detailed proxy request/response information |
Examples
Local file
uigen serve ./openapi.yaml
Remote URL
uigen serve https://petstore3.swagger.io/api/v3/openapi.json
Custom port
uigen serve ./openapi.yaml --port 8080
Custom proxy base
Override the API target when it differs from the spec's servers field:
uigen serve ./openapi.yaml --proxy-base http://localhost:3001
Verbose proxy logging
uigen serve ./openapi.yaml --verbose
Electron desktop target
Open the generated UI in an Electron window instead of the browser:
uigen serve ./openapi.yaml --target electron
uigen serve ./openapi.yaml --target electron --proxy-base http://localhost:8000
See Electron Target for installation, monorepo setup, and Phase 1 limitations.
Verbose proxy logging
uigen serve ./openapi.yaml --verbose
With --verbose, the CLI logs each proxied request and response:
→ GET /api/users
← GET /api/users 200 (42ms)
[Auth] Bearer token
Serving modes
The CLI operates in two modes depending on how it was installed:
Dev mode
Used when running from the monorepo (no pre-built renderer in node_modules). Starts a Vite dev server with hot module replacement.
Static mode
Used when installed via npm or npx. Serves the pre-built dist/ directory with a plain Node.js HTTP server. Vite is not required at runtime.
Both modes expose the same URL and behaviour.
Serve targets
| Target | Description |
|---|---|
web (default) |
Open the UI in your browser at http://localhost:<port> |
electron |
Open the UI in a desktop window via @uigen-dev/target-electron |
See Electron Target for setup and requirements.
Renderer support
Currently only react is available. vue and svelte renderers are planned for a future release. Passing an unknown renderer value falls back to react with a warning.
Notes
- The spec file is read once at startup. Changes to the spec require restarting the server.
- The proxy forwards all requests to
/api/*to the target server. - Authentication headers are injected by the proxy transparently (your API never sees UIGen-specific headers).