Skip to content

DOCS

Runtime

The binary is sveda-server. It is Axum. It is not in your application request cycle unless you choose to proxy it.

Binary

Crate and binary: sveda-server. HTTP is Axum. Default bind 0.0.0.0:8787 via SVEDA_BIND. The process sits beside the host — it is not a plugin in the host request cycle. Product page: Rust runtime.

export SVEDA_BIND=0.0.0.0:8787
sveda-server

Health

Unauthenticated. Use /sveda/health as a liveness probe and /sveda/ready as readiness (Postgres and Redis ping when those URLs are set). Cluster install: deploy.

GET /sveda/health
GET /sveda/ready

{"ok":true,"runtime":"rust"}

Routes

Stream and message require a valid embed token ( embed docs ). Admin is a sidecar UI for settings, models, MCP, and the code index.

GET    /sveda/health
GET    /sveda/ready
POST   /sveda/embed/token
GET    /sveda/embed/config
POST   /sveda/stream
POST   /sveda/message
GET    /sveda/chat-histories
GET    /sveda/chat-histories/{chat_id}
PATCH  /sveda/chat-histories/{chat_id}
DELETE /sveda/chat-histories/{chat_id}
POST   /sveda/documents/extract
GET    /sveda/admin
GET    /sveda/admin/{page}
GET    /sveda/admin/settings
PUT    /sveda/admin/settings
POST   /sveda/admin/settings
POST   /sveda/admin/login
POST   /sveda/admin/setup
POST   /sveda/admin/logout

Agent loop

POST /sveda/stream and POST /sveda/message run the same turn. The runtime owns the multi-step agent loop: model catalog, builtin tools, frontend tool specs from the client, and host MCP tools listed for that visitor_id. Failover walks the ordered catalog list without a new client request. See models, MCP and tools, and stream protocol.

One POST. One SSE pipe.

Accept application/vnd.sveda.stream+json. The runtime answers with text/event-stream.

Stream protocol