oxo-flow serve#
Start the web interface server. Provides a REST API for building, validating, and monitoring workflows remotely.
Usage#
Options#
| Option | Short | Default | Description |
|---|---|---|---|
--host |
— | 127.0.0.1 |
Host address to bind to |
--port |
-p |
8080 |
Port to listen on |
--base-path |
— | / |
Base path for mounting under a sub-path (e.g., /oxo-flow) |
--verbose |
-v |
— | Enable debug-level logging |
--quiet |
— | — | Suppress non-essential output (errors only) |
--no-color |
— | — | Disable colored output |
Examples#
Start with defaults#
Bind to all interfaces on a custom port#
Mount under a sub-path (for reverse proxy)#
When using --base-path, all API endpoints will be prefixed:
Output#
API Endpoints#
Once the server is running, the following REST endpoints are available:
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/health |
Health check (status + version) |
GET |
/api/workflows |
List loaded workflows |
POST |
/api/workflows/validate |
Validate TOML workflow content |
POST |
/api/workflows/graph |
Get DAG in DOT format |
GET |
/api/environments |
List available environment backends |
Example: Health check#
Example: Validate a workflow#
curl -X POST http://127.0.0.1:8080/api/workflows/validate \
-H "Content-Type: application/json" \
-d '{"toml_content": "[workflow]\nname = \"test\"\n[[rules]]\nname = \"s1\"\ninput = []\noutput = [\"out.txt\"]\nshell = \"echo hi > out.txt\""}'
Notes#
- The web server is built with axum and runs on the tokio async runtime
- CORS is restricted to localhost by default; use
OXO_FLOW_ALLOWED_ORIGINSto override - The server is intended for development and internal use — for production deployments, place it behind a reverse proxy (nginx, Caddy)
- See the Web API reference for complete endpoint and authentication documentation
⚠️ Security: Configuring Authentication#
By default, all user accounts are disabled. You must set at least one of the following environment variables before starting the server, otherwise no logins will be accepted:
export OXO_FLOW_ADMIN_PASSWORD="<strong-password>"
export OXO_FLOW_USER_PASSWORD="<strong-password>"
export OXO_FLOW_VIEWER_PASSWORD="<strong-password>"
oxo-flow serve
Development mode (local testing only): set OXO_FLOW_DEV_MODE=1 to re-enable
the default weak passwords (admin/admin, user/user, viewer/viewer). Never
use OXO_FLOW_DEV_MODE=1 in a production or multi-user environment.