Skip to main content

🐟 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_KEY and BONITO_API_URL environment 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)

Source distribution for bonito-cli 0.15.0
File Size Uploaded
bonito_cli-0.15.0.tar.gz 139.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bonito-cli 0.15.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.16.0

2 release files

0.15.1

2 release files

This release

0.15.0 This release

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.9

2 release files

0.9.8

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page