Skip to main content
The gateway now ships in the praisonai-bot package. praisonai serve gateway still works exactly as documented here; for a standalone install see praisonai-bot Migration.
Edit gateway.yaml while the gateway is running and the change applies automatically — no restart, no dropped connections.
The operator edits gateway.yaml; the gateway diffs and hot-reloads without dropping in-flight turns.

How It Works

Quick Start

1

Install the gateway extra

This installs watchdog>=3.0.0 for event-driven file watching. The gateway falls back to mtime polling when watchdog is not installed.
2

Edit gateway.yaml — auto-detected

Save the file. The running gateway detects the change within the watchdog debounce window and reloads automatically.
3

Trigger a reload manually via SIGHUP

SIGHUP runs the same reload_config path as a file change — no shutdown. Best-effort on Windows (SIGHUP unavailable, see fallback below).
4

Tune the drain window

reload_drain_timeout controls how long a channel restart waits for in-flight turns to finish. If unset, it falls back to drain_timeout.
5

Watch the audit log

Each line tells you exactly what changed and which channels were restarted.

What Triggers a Reload

Two paths trigger the same reload_config routine: Both paths debounce rapid consecutive writes before applying — a burst of saves from an editor doesn’t cause multiple reloads.
With watchdog installed, filesystem events (inotify on Linux, FSEvents on macOS, ReadDirectoryChangesW on Windows) trigger a reload within the debounce window (default 1 s) automatically — no signal required.

What Gets Restarted

The WebSocket server itself keeps running throughout — connected clients are not disconnected unless their channel is restarting.

Drain-Coordinated Restart

Channel restarts drain in-flight turns before bouncing, using the same drain_timeout coroutine as shutdown.

Windows / No-Watchdog Fallback


YAML Reference


Rotating the shared secret during reload

The reload path also picks up changes to gateway.auth_token. When the reloaded config carries a new secret, the gateway adopts it inline and — by default — revokes every live session still on the old secret. Adopting a new secret has three side effects:
  1. self.config.auth_token is updated to the new value.
  2. GATEWAY_AUTH_TOKEN in the environment is updated so all auth paths (HTTP, magic-link, WS) read the same value.
  3. Stale live sessions are force-closed with WebSocket close code 4001 and reason credentials_rotated — unless revoke_on_secret_rotation: false.

Gateway Credential Rotation

Client-side recovery, the rotation mermaid, and the full behaviour matrix

Optional Dependency

pip install "praisonai[gateway]" adds watchdog>=3.0.0 for event-driven watching. Without it the gateway uses mtime polling (5 s interval). Both modes apply the same reload logic — the only difference is detection latency.
On Windows, use the file-watch path only. kill -HUP is not available; trigger reloads by saving the config file.

Reading the Log Line

A concise summary is logged after each reload:

Best Practices

Without watchdog, the gateway polls every 5 seconds. With watchdog installed (pip install "praisonai[gateway]"), changes are detected within milliseconds via filesystem events.
Apply config changes to one channel (e.g. a staging Telegram bot) before rolling to all channels. The per-channel restart scope makes this safe — the reload touches only what changed.
A short reload drain (5s–10s) keeps channel restarts fast. A longer shutdown drain (15s–30s) gives in-flight conversations more time to complete. Keep them separate.
A bad config (YAML syntax error, missing required field) is rejected at reload time — the gateway keeps the last-known-good config and logs an error. Test with praisonai gateway validate gateway.yaml before saving to the watched path.
Log lines like reload applied: agents; restart[telegram] are your audit trail. Ship them to your log aggregator and alert on unexpected full restarts.
After updating gateway.yaml in a deploy pipeline, send kill -HUP $(cat /var/run/praisonai.pid) to trigger reload without downtime. No restart, no new process.

Gateway

WebSocket control plane overview and full YAML reference

Gateway CLI

CLI commands for starting, stopping, and managing the gateway

Gateway Reliability

Graceful drain and admission control presets

Gateway Graceful Drain

Drain-only knob — full reference and sequence diagram

Credential Rotation

Revoke live sessions when the shared secret rotates