The SDK is open source and runs without an API key. The Platform is an optional hosted layer at app.waniwani.ai that adds features the engine alone doesn’t ship: event tracking, funnel analytics, a knowledge base, a chat widget, and hosted flow state. The Platform works the same whether your MCP server is on your own infra or on Managed Hosting. A single environment variable,Documentation Index
Fetch the complete documentation index at: https://docs.waniwani.ai/llms.txt
Use this file to discover all available pages before exploring further.
WANIWANI_API_KEY, switches it on.
Two independent choices
Where your server runs and whether you connect the Platform are independent decisions:| No Platform | With Platform | |
|---|---|---|
| Self-hosted server | Pure open source. Engine on your infra, no outbound calls. | Your infra for the server, our backend for KB, chat, tracking, and (optionally) state. |
| Managed Hosting | Not applicable. | Fully managed. We host the server and the Platform. |
What the Platform adds
| Feature | Entry point | What it gives you |
|---|---|---|
| Event tracking | withWaniwani(server), waniwani().track() | tool.called events, custom events, dashboard ingest |
| Funnel analytics | Automatic from tracked node visits | Conversion, drop-off, completion rate per node |
| Knowledge base | @waniwani/sdk/kb | Markdown ingest, semantic search from any tool |
| Chat widget | @waniwani/sdk/chat | Drop-in chat against your project, in script or React |
| Hosted flow state | WaniwaniKvStore (auto-selected) | Encrypted-at-rest state with zero infra |
WANIWANI_API_KEY. None of them require Managed Hosting.
Enable it
.env
createFlow().compile() selects WaniwaniKvStore automatically when no store argument is passed, withWaniwani(server) starts emitting tracked events, and the KB / chat clients work end to end.
What works without it
The engine is fully usable with no key:createFlow,StateGraph,START,END,redactedfrom@waniwani/sdk/mcpKvStoreinterface andMemoryKvStore(plus any adapter you write for Redis, Upstash, Cloudflare KV, DynamoDB, SQLite)withWaniwani(server)as a no-op wrapper that still bridges transport session IDs and forwards widget metadatauseWaniwani()browser hook in degrade-to-no-op mode
createFlow().compile() requires a store when no API key is configured. With neither, it throws at compile time:
Going from open source to Platform
One line. Drop thestore argument and set the env var:
app.waniwani.ai. There is no automatic migration.
To keep self-hosted state and only add Platform tracking on top, keep the explicit store and call withWaniwani(server). Tracking fires to app.waniwani.ai; flow state stays in your backend. The two pipelines are independent.