Web UI
Ryvos includes a built-in web interface powered by Axum (Rust HTTP framework) with a Svelte frontend. Access it from any browser.
Start the Gateway
ryvos serve # Web UI only
ryvos daemon --gateway # Web UI + Telegram/Discord/SlackThe gateway starts at http://localhost:18789 by default.
Configuration
[gateway]
bind = "127.0.0.1:18789" # Host and port
[[gateway.api_keys]]
name = "web-ui"
key = "rk_your_secret_key"
role = "operator" # viewer, operator, adminAuthentication
The gateway supports multiple authentication methods:
API Keys (Recommended)
[[gateway.api_keys]]
name = "personal"
key = "rk_abc123def456"
role = "admin"
[[gateway.api_keys]]
name = "ci-bot"
key = "rk_ci_readonly"
role = "viewer"Roles
| Role | Permissions |
|---|---|
viewer | Read sessions and messages |
operator | Send messages, approve/deny tool calls |
admin | All permissions + configuration |
Authentication Methods
- Bearer token:
Authorization: Bearer rk_abc123 - Query string:
?token=rk_abc123 - Anonymous: If no API keys are configured, access is open
WebSocket API
Connect to ws://localhost:18789/ws for real-time streaming:
- Receive text deltas as the agent generates responses
- Receive tool call notifications
- Send approval/denial responses
- Full event stream (same events as the internal EventBus)
REST API
| Method | Endpoint | Description |
|---|---|---|
POST | /api/message | Send a message |
GET | /api/sessions | List sessions |
GET | /api/sessions/:id | Get session history |
POST | /api/approve/:id | Approve a tool call |
POST | /api/deny/:id | Deny a tool call |
Deployment
For remote access, bind to 0.0.0.0 and use a reverse proxy:
[gateway]
bind = "0.0.0.0:18789"Always configure API keys when exposing the gateway to a network.