🐟 Bonito CLI
Unified multi-cloud AI management from your terminal.
Bonito gives enterprise AI teams a single CLI to manage models, costs, and workloads across AWS Bedrock, Azure OpenAI, Google Vertex AI, and more.
Install
pip install bonito-cli
Quick Start
bonito auth login # Authenticate
bonito models list # Browse 381+ models across 3 clouds
bonito projects create --name "My Project" # Create a project
bonito agents create --project <id> --name "Assistant" --prompt "You are a helpful AI assistant"
bonito agents execute <agent-id> "Hello!" # Execute agent
bonito chat -m gpt-4o # Interactive chat
bonito kb create --name docs # Create a knowledge base
Commands
| Command | Description |
|---|---|
bonito auth |
🔐 Authentication & account management |
bonito providers |
☁️ Cloud provider management (AWS/Azure/GCP) |
bonito models |
🤖 AI model catalogue — list, search, enable |
bonito chat |
💬 Interactive AI chat with compare mode |
bonito gateway |
🌐 API gateway — keys, logs, config |
bonito policies |
🎯 Routing policies — cost/latency/quality optimization |
bonito analytics |
📊 Usage analytics, costs, trends, digest |
bonito deployments |
🚀 Model deployment management |
bonito kb |
📚 Knowledge base (RAG) — documents, search, sync |
bonito agents |
🤖 Bonobot agents — create, execute, manage sessions |
bonito projects |
📁 Agent projects — organize and manage agents |
bonito groups |
👥 Agent groups — RBAC and permissions |
bonito sso |
🔐 SAML Single Sign-On — configure and manage SSO |
bonito deploy |
📦 Apply a whole stack from bonito.yaml |
bonito deploy --plan |
🔍 Show what bonito deploy would change, without changing anything |
Stacks (bonito.yaml)
Declare providers, gateway keys, routing, knowledge bases, MCP servers, agents and (version 2) the relay between agents in your clouds in one file, then plan and apply it:
bonito deploy -f bonito.yaml --plan # what would change; writes nothing
bonito deploy -f bonito.yaml --plan --json # the same plan as JSON (for CI)
bonito deploy -f bonito.yaml # apply it
bonito deploy --plan runs the same engine as bonito deploy, reading your live org and recording each write instead of sending it, so the plan is exactly what deploy does:
┏━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃ Resource ┃ Name ┃ Change ┃
┡━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ + │ agent │ Stack Billing │ model anthropic.claude-haiku-4-5, in │
│ │ │ │ project claims-stack │
│ ~ │ gateway key │ claims-key │ rate_limit: 30 -> 60 │
│ ~ │ agent │ Stack Claims │ model_config.temperature: 0.2 -> 0.5 │
│ ↻ │ provider │ groq │ credentials re-sent and re-verified; stored │
│ │ │ │ secrets can't be compared │
│ = │ knowledge base │ claims-kb │ exists; its settings and documents are left │
│ │ │ │ as they are │
│ = │ agent │ Stack Triage │ │
└───┴────────────────┴───────────────┴─────────────────────────────────────────────┘
1 to create, 2 to change, 1 to refresh, 2 unchanged. plan 2eb2c671a077511e
| Mark | Meaning |
|---|---|
+ |
created |
~ |
changed; each line is field: from -> to. Only the fields the file sets are compared; a block such as model_config is replaced whole, so a key the file drops shows as going to null |
↻ |
refreshed: provider credentials (and retriever secrets) are re-sent and re-verified, because stored secrets can't be read back to compare |
= |
unchanged |
Secrets show as (secret). Deploy never deletes: anything not in the file is left alone. A new gateway key's or agent token's secret appears once, after deploy. The plan hash identifies the exact set of changes; the dashboard Stacks page, the API (POST /api/stacks/plan, POST /api/stacks/apply) and Claude over MCP (plan_stack, apply_stack) refuse to apply when the org has changed since the plan you reviewed. bonito deploy --plan exits 1 when the file has errors.
Version 2 files can also declare who the agents in your clouds are and whom they may call, by name:
tokens:
- name: claims-runtime # a project token, minted once and reused after
relay:
- caller: claims # as the inventory lists it (bonito agents inventory)
cloud: gcp
token: claims-runtime
targets:
- { name: payments, cloud: aws, fallback: payments-backup } # fallback: an agent in this file or another cloud agent
- { resource: "runtime/fraud-check-x1" } # or match the ARN / Google resource name
Bonobot Agents
Create and manage AI agents with persistent conversations and automation:
# Create a project
bonito projects create --name "Customer Support" --budget 100.00
# Create an agent
bonito agents create --project <project-id> --name "Support Bot" \
--prompt "You are a helpful customer support agent" \
--model gpt-4o --max-turns 50
# Execute the agent
bonito agents execute <agent-id> "How do I reset my password?"
# Manage sessions
bonito agents sessions <agent-id> # List conversations
bonito agents messages <agent-id> <session-id> # View conversation history
# Agent connections and triggers
bonito agents connections <agent-id> # View agent connections
bonito agents triggers <agent-id> # View automated triggers
Knowledge Base (RAG)
bonito kb create --name "Product Docs" # Create a KB
bonito kb upload <kb-id> report.pdf notes.md # Upload documents
bonito kb search <kb-id> "How to configure?" # Semantic search
bonito kb info <kb-id> # Stats & details
SAML Single Sign-On
Configure enterprise SSO for your organization:
bonito sso setup --provider okta # Interactive SSO setup
bonito sso test # Test configuration
bonito sso enable # Enable SSO login
bonito sso enforce --breakglass-admin <user> # Enforce SSO-only (disable passwords)
bonito sso status --email user@company.com # Check SSO status
JSON Output
All commands support --json for scripting and CI/CD:
bonito models list --json | jq '.[] | .display_name'
bonito analytics overview --json > report.json
Configuration
Config stored in ~/.bonito/:
- Override with
BONITO_API_KEYandBONITO_API_URLenvironment variables
Development
cd cli/
pip install -e .
bonito --version
License
MIT
Metadata
Release files for bonito-cli 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bonito_cli-0.15.0.tar.gz | 139.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bonito_cli-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 283.9 kB
Release files / bonito_cli-0.15.0.tar.gz
| Download URL | bonito_cli-0.15.0.tar.gz |
|---|---|
| Size | 139.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4614382b335e0bfcffb3cb6bb8f1991a46c00fb6c9a9df59a56cda2e71bf619e
|
|
BLAKE2b-256 checksum How to use checksums |
9801bd9be13b93790a0466088f91d412879d532a4a3c0de9b7e2a8877fdfaeda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / bonito_cli-0.15.0-py3-none-any.whl
| Download URL | bonito_cli-0.15.0-py3-none-any.whl |
|---|---|
| Size | 144.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1bfc4e3cb850128394f3862c57b4a7d5f277109cb5c2ea5cbe29a7435818af5d
|
|
BLAKE2b-256 checksum How to use checksums |
2dec64ed68b7a5853c3910be59fd457a9db4f3ecff5e5dbeb238223a319ca9bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|