PRODUCT
Infrastructure, not a chatbot.
Each capability has its own page. Start with the client and the runtime — everything else hangs off that pair.
CLIENT
JS client
Install @sveda-ai/core. SvedaClient holds endpoints, headers, and tools. session.send posts a turn. Streaming stays on the wire — not a Vue widget, not a Laravel package.
RUNTIME
Rust runtime
sveda-server binds 0.0.0.0:8787 by default. It owns the agent loop, catalog, tools, and MCP. Your routes, auth, and deploy stay yours.
STREAM
Stream protocol
Tokens, tools, MCP, and errors travel one SSE pipe. The client asks for application/vnd.sveda.stream+json. The runtime answers with text/event-stream.
TOOLS
MCP & tools
Backend tools run in sveda-server. Frontend tools run in the browser. Host MCP is an HTTP server you pass when minting the embed token.
CATALOG
Models
deepseek-v4-flash-responses is the default. Failover walks deepseek-v4-flash-anthropic next. Custom endpoints speak Responses or Anthropic. The stream does not restart.
EMBED
Embed token
Mint a scoped embed token per visitor. The browser never holds your host key. Optional host MCP credentials are stored per visitor_id when you pass them together.
HOST
Host SDKs
The browser never holds SVEDA_EMBED_HOST_API_KEY. Your backend calls POST /sveda/embed/token, then the page opens JS chat or an iframe.
Start with the pair that matters.
Install @sveda-ai/core. Run sveda-server on :8787. Mint an embed token and send the first turn with session.send.