Metadata-Version: 2.4
Name: bonito-cli
Version: 0.15.0
Summary: Bonito CLI — Unified multi-cloud AI management from your terminal
Author-email: Bonito <hello@getbonito.com>
License: MIT
Keywords: ai,aws,azure,cli,gcp,llm,multi-cloud
Requires-Python: >=3.10
Requires-Dist: httpx>=0.25.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer[all]>=0.9.0
Description-Content-Type: text/markdown

# 🐟 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

```bash
pip install bonito-cli
```

## Quick Start

```bash
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:

```bash
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:

```yaml
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:

```bash
# 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)

```bash
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:

```bash
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:

```bash
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

```bash
cd cli/
pip install -e .
bonito --version
```

## License

MIT
