Tambo CLI
Agent-friendly CLI for project setup and component management.
Quick Start
npx tambo init --api-key=sk_... # Initialize with API key npx tambo add message-thread-full --yes # Add a component npx tambo create-app my-app --template=standard # New app from template
Non-Interactive Mode
The CLI detects non-interactive environments and returns guidance instead of hanging:
In CI or piped environments, this returns guidance (exit 2) instead of prompting
npx tambo init
Error: Project name required.
Run one of:
tambo init --project-name=myapp # Create new project
tambo init --project-id=abc123 # Use existing project
Detection Logic
Non-interactive when ANY of these are true:
-
process.stdin.isTTY is false (piped input)
-
process.stdout.isTTY is false (piped output)
-
CI environment variable is set
-
GITHUB_ACTIONS=true
Override with FORCE_INTERACTIVE=1 (requires real TTY).
Exit Codes
Code Meaning
0 Success
1 Error (network, invalid args, etc.)
2 User action required - check stderr for exact command
Commands for Agents
Initialize Project
Option 1: Direct API key (simplest for agents)
npx tambo init --api-key=sk_...
Option 2: Create new project (requires prior auth)
npx tambo init --project-name=myapp
Option 3: Use existing project
npx tambo init --project-id=abc123
Skip all prompts with defaults
npx tambo init --yes --project-name=myapp
Add Components
npx tambo add form --yes # Skip confirmation npx tambo add form graph --yes # Multiple components npx tambo add form --prefix=src/components # Custom directory npx tambo add form --dry-run # Preview changes npx tambo add form --legacy-peer-deps # For dependency conflicts
Component Library
Browse and preview all components at ui.tambo.co.
Available Components
Component Description
message-thread-full
Complete message thread with all content and interactions
message-thread-panel
Message thread in a side panel or modal context
message-thread-collapsible
Message threads that can be expanded or collapsed
message
Individual messages with markdown support
message-input
Composes and sends messages in a conversation
message-suggestions
AI-generated suggestions to help users compose responses
control-bar
Controls and actions in the interface
input-fields
Reusable input fields with styles and validation
graph
Visualizes graph-based data structures
form
Collects user input with validation support
map
Interactive map with clustering and heatmap support
canvas-space
Displays rendered components from chat messages
thread-history
Chronological history of a conversation thread
thread-dropdown
Dropdown menu for collapsible chat threads
thread-content
Displays messages within a thread
scrollable-message-container
Container that auto-scrolls to new messages
edit-with-tambo-button
Inline AI editor button for interactable components
elicitation-ui
MCP elicitation UI for user input requests
mcp-components
MCP prompt and resource picker buttons
What You Get
Each component includes:
-
Source code copied to your project (not a dependency)
-
Tambo integration pre-configured with hooks
-
Styling via Tailwind CSS (customizable)
-
TypeScript with full type definitions
Example: Full Chat Interface
npx tambo add message-thread-full control-bar --yes
This adds a complete chat UI with:
-
Message history display
-
AI-generated component rendering
-
Input bar with send button
-
Streaming status indicators
List Components (No Prompts)
npx tambo list --yes
Create New App
npx tambo create-app my-app --template=standard
Authentication
npx tambo auth login --no-browser # Prints URL instead of opening browser npx tambo auth status # Check current auth (no prompts)
Full Setup (One Command)
npx tambo full-send # Complete setup with components
Agent Docs
The CLI auto-creates/updates AGENTS.md with Tambo documentation:
npx tambo add form --yes # Also updates AGENTS.md
The generated section includes CLI commands formatted for non-interactive use.
Key Flags Summary
Flag Commands Purpose
--yes , -y
init, add, list Skip all prompts
--api-key
init Direct API key input
--project-name
init Create new project
--project-id
init Use existing project
--no-browser
auth login Output URL instead of opening
--dry-run
add Preview without installing
--prefix
add, list Custom component directory