Gateway Settings
The gateway is the collaboration hub. It manages sessions, adapters (like Discord), and the Control Core UI.
Minimal config
Auth modes
Set gateway.auth.mode to one of:
none(default)tokenpassword
You can also provide a token via env var:
Token placement (explicit)
Recommended (do not store token in JSON):
- Set config auth mode:
- Provide token at runtime:
Fallback (less secure):
CLI control
Node enablement and revocation
Node execution is explicitly device-gated. A connected client is not a node until it is approved.
- Enable/disable a device with
PUT /api/nodes/:clientId - Revoke with
DELETE /api/nodes/:clientId - Inspect all node approvals + live node connections with
GET /api/nodes
Example:
Desktop app flow:
- User connects to gateway
- User toggles
Enable this device as a node - App registers as a node and can service
req:nodeinvocations (system.notify,system.run) - Agents can invoke these capabilities via
node_notifyandnode_runtools
Note:
- Changing
Node Namewhile node mode is already enabled updates the active node name on the next registration event (toggle node mode or reconnect).
Cloudflare deployment
Use the dedicated Cloudflare app at apps/cloudflare to run Wingman Gateway on Cloudflare Workers + Containers.
This deployment proxies all HTTP/WebSocket traffic to a containerized gateway process started with:
Before exposing publicly, switch gateway auth from none to token and set WINGMAN_GATEWAY_TOKEN.
Additional utilities:
File system roots
fsRoots defines which directories are allowed when selecting a session working folder (workdir) in the Control UI/API.
- The selected
workdirmust be inside one of these roots. - When set, the session
workdirbecomes the agent's active execution root (tool CWD + file backend root) for subsequent turns in that session. - Keep this list tight to reduce risk.
Control UI media and uploads
The Control UI chat supports file uploads in addition to existing media capture, and it renders streamed assistant media attachments when models return structured image/audio/file blocks:
- Media in: image uploads, pasted screenshots, and audio/voice attachments
- Media out: streamed assistant image/audio/file attachments from model output blocks
- Text/code files:
.txt,.md,.csv,.json,.yaml,.yml,.xml,.log,.ts,.js,.py,.go,.rs,.java,.c,.cpp,.sql,.html,.css - PDF:
.pdfuploads use provider-native PDF handling when supported, with text-extraction fallback
If local PDF text extraction fails, Wingman still sends a fallback note so the request continues without breaking.
State directory
Set gateway.stateDir to control where persistent data is stored (sessions, routines). If omitted, Wingman uses .wingman/.
Dynamic UI
Use gateway.dynamicUiEnabled to enable or disable SGUI rendering in the Control UI. See the Dynamic UI (SGUI) guide for registry, tools, and examples.
MCP proxy wrapper
Use gateway.mcpProxy to wrap stdio MCP servers with a proxy runtime (for tracing/guardrails pipelines).
Behavior notes:
- When disabled (
enabled: false), MCP servers run exactly as configured. - When enabled, Wingman rewrites stdio MCP process launches to execute through the proxy command.
- Wingman checks for
uvonly when this feature is enabled and the proxy command isuv/uvx. - If
uvis missing in this mode, gateway startup fails with an error (no interactive prompt).
