What is Kletso

An in-app AI assistant for Flutter apps that answers with your widgets, calls your APIs as the signed-in user and speaks up when your rules say so.

Kletso is an embeddable assistant for mobile and web apps. You add a small SDK to your Flutter app and configure the rest in a dashboard: the persona, the model and key, the tools the assistant may call, the UI components it may render, and the rules that let it start a conversation on its own.

What makes it different

  • Generative UI, with your widgets. The model does not answer with walls of text. It answers with typed blocks (a product card, a flight list, a form, a map) that your app renders with its own Flutter widgets. Built-in blocks cover the common cases; custom blocks are one registerComponent call.
  • Tools that act as the user. Your existing HTTP APIs become tools. Calls carry the signed-in user’s identity, so the assistant can only do what that user may do. Dangerous tools ask for confirmation in the chat first.
  • Proactive, but only by rule. Silent app events such as a geofence entry, a failed payment or an abandoned cart are evaluated against rules you write in the dashboard. A rule can show a banner, open the chat with a prepared turn, run a workflow or send a push. Nothing appears unless a rule says so.
  • Bring your own model key. OpenAI, Anthropic, Google, Groq or any OpenAI-compatible endpoint. Keys are stored encrypted per project. You pay the provider directly; Kletso adds no per-message markup.
  • Runs on Cloudflare’s edge. Each conversation is a Durable Object with its own SQLite log. Realtime uses WebSockets with replay, so a phone that loses signal picks up where it left off.

The pieces

PieceWhat it isWhere
Flutter SDKkletso_core (client, transports) and kletso_flutter (chat UI, launcher, block registry, notifications)Your app
RuntimeThe public API at api.kletso.ai: sessions, conversations, realtime, agent loop, tools, triggers, pushCloudflare Workers + Durable Objects + D1
Dashboardapp.kletso.ai: agents, versions, tools, workflows, components, triggers, conversations, keys, secretsBrowser
Protocolkletso.ui/v1 surfaces and kletso.events/v1 envelopes: the JSON your app and the runtime exchangeWire

A one-minute tour

  1. A user taps the launcher in your app. The SDK opens a session with your publishable key and connects a WebSocket.
  2. The user types “running shoes under 2000”. The runtime runs the agent loop: the model calls your search_products tool, then calls the built-in render_ui tool with a surface made of acme.productCard blocks.
  3. Your app receives ui.render and shows the cards with your own ProductCard widget. The user taps “Add to cart”, which is a local action: your handler adds the item to the app’s cart and tells the agent.
  4. Later the app fires a silent geofence_entered event. A rule matches and the runtime sends app.notify: a banner appears above your UI. Tapping it opens the chat on a prepared turn with a store code.

Every step above is covered in the Quickstart and the Scenarios.

Status

Kletso is in private beta. The Flutter SDK, the runtime and the dashboard described in these docs are deployed and tested end to end. Pages marked beta describe features that work but whose shape may still change. Pages marked planned describe features that are designed but not yet shipped. See Roadmap and status.

Last updated 2026-09-28 · Report an issue with this page