← Back to archive

Repo of the Day

tambo-ai/tambo

Published: Feb 12, 2026

Open repository ↗

Generative UI SDK for React

Summary

Tambo is an open-source React toolkit for building agents that render UI, also called generative UI. Developers register React components with Zod schemas, and Tambo turns those schemas into tool definitions the LLM can call to render and update components. It ships with streaming infrastructure, hooks for conversation state, MCP integration, and a backend option.

What it is useful for

Tambo fits when a React app needs an assistant that manipulates the app's UI rather than only returning text. The README describes two patterns: "Generative Components" that render once in response to a message (charts, summaries), and "Interactable Components" that persist and update as users refine requests (notes, task boards). The agent loop is built in, with documented support for OpenAI, Anthropic, Google Gemini, Cerebras, Mistral, and any OpenAI-compatible provider. Other capabilities in the README include connecting Model Context Protocol servers (Linear, Slack, custom), running browser-side tools (for example, a getWeather fetcher), and passing additional context such as the current page or selected items.

How engineers can use it

The documented fast path is a scaffolder:

npm create tambo-app my-tambo-app
cd my-tambo-app
npm run dev

After setup, wrap the app in TamboProvider with an API key, a userKey or userToken, and the registered components. A generative component is declared with a name, description, the React component, and a Zod propsSchema; that schema is what the LLM sees as a tool definition. A stateful component is wrapped with withInteractable, exposing the same fields to the model so it can update them. Hooks such as useTambo() and useTamboThreadInput() expose messages, streaming flags, and submission. MCP servers go in the mcpServers prop; local browser functions go in a tools array.

Documented constraints: a backend is required (Tambo Cloud or self-hosted via Docker), and authentication needs a userKey or userToken. The SDK is MIT, but per the LICENSE notes some workspaces such as apps/api are Apache-2.0.