Tellers CLI to interact with tellers.ai from the terminal.
Build the CLI:
# Generate the client crate
scripts/generate_api.sh
# Build the CLI
cargo build --releaseSet your API key:
export TELLERS_API_KEY=sk_...Optional:
export TELLERS_API_BASE=https://api.tellers.aiRun a prompt against the Tellers agent:
tellers "prompt"— Streams the response and starts a minimal REPL (reply in the terminal; Ctrl-C to exit).tellers --background "prompt"— Single request, no REPL; prints the response text (or last JSON result when using--json-response).tellers --full-auto --background "prompt"— Same as--backgroundwith full-auto behavior.
Prompt options:
| Flag | Description |
|---|---|
--no-interaction |
Single response only, no REPL. |
--json-response |
Use the JSON endpoint; output is the last tellers.json_result event (no interaction implied). |
--tool <TOOL_ID> |
Enable a tool (repeat for multiple). Omit to use default tools from settings. |
--llm-model <MODEL> |
LLM model (e.g. gpt-5.4-2026-03-05). |
--interactive, -i |
Interactively set options: JSON response (y/N), no interaction (y/N), tool selection (checkbox list), and LLM model (list). |
Examples:
# Streamed chat with REPL
tellers "Generate a video, with cats"
# Single response, no follow-up
tellers --no-interaction "Generate a video, with stock footage video of cats"
# JSON endpoint: only the last JSON result is printed
tellers --json-response "Generate a video, with stock footage video of cats"
# Choose model and tools via flags
tellers --llm-model gpt-5.4-2026-03-05 --tool tool_a --tool tool_b "Your prompt"
# Interactive: prompts for JSON, no-interaction, checkbox list for tools, model picker
tellers -i "Generate a video, with stock footage video of cats"Interactive tool selection: When you use -i and the settings include available tools, a TUI checkbox list is shown. Use ↑/↓ to move, Space to toggle, a to toggle all, Enter to confirm. Checkboxes are pre-set from each tool’s enabled field in the settings JSON (missing = enabled).
Upload media files to Tellers:
tellers upload /path/to/media_folderCommon flags:
--disable-description-generation— Disable automatic time-based media description generation (enabled by default)--dry-run— Analyze files without uploading--force-upload— Upload files even if they were already uploaded--local-encoding— Enable local encoding before upload--parallel-uploads <N>— Number of parallel uploads (default: 4)--ext <EXT>— Filter files by extension (e.g.,--ext mp4 --ext mov)--in-app-path <PATH>— Set the in-app path for uploaded files
Files ≥ 10 MiB use multipart S3 upload (presigned part URLs, then complete); smaller files use a single presigned PUT.
- Argument parsing via Clap 4.x. See
clapdocs: docs.rs/clap - Minimal TUI via Ratatui. See
ratatuisite: ratatui.rs - API client generated from OpenAPI spec using
openapi-generator. Seescripts/generate_api.sh.
Requires openapi-generator:
brew install openapi-generatorSpec location (update as needed): src/tellers_api/openapi.tellers_public_api.yaml
Generate the client crate:
scripts/generate_api.sh