Skip to main content

Agent-first CLI for botu — embeddable AI agent for any website

Project description

botu (Python CLI)

Agent-first CLI for botu — the embeddable AI agent for any website.

Register a site, get an embed key, verify your domain, and inject the <script> snippet — all from the command line, no web console needed.

Install

pip install botu-cli
# or, run once without installing:
uvx botu --help
pipx run botu --help

Quickstart

botu login                                          # OAuth device-flow, opens browser
botu sites create --name acme --domain acme.com     # create a site + first embed key
botu embed --site <site-id> --new-key --write index.html   # inject the <script>
botu sites verify <site-id> --domain acme.com       # start domain verification
botu test --site <site-id>                          # check the embed key works

All commands accept --json (or env BOTU_JSON=1) for machine-parseable output that's friendly to agents and CI.

Commands

Command Purpose
botu login / logout / whoami OAuth device-flow session
botu sites create|list|get|delete Manage sites
botu sites verify <id> --domain <d> [--check] Domain ownership (DNS TXT)
botu keys create|list|revoke --site <id> Manage site embed API keys
botu tokens create|list|revoke Account access tokens (PATs) for CI
botu embed --site <id> Print / write the <script> embed snippet
botu usage [--site <id>] Per-site quota and usage
botu test --site <id> Verify an embed key via the loader auth exchange

Non-interactive use (CI / headless agents)

botu login needs a browser. For CI or headless agents, create an account access token once and pass it via the BOTU_TOKEN env var — no login, no browser:

botu tokens create --name ci --json     # → {"token": "bpat_...", ...}  shown ONCE
export BOTU_TOKEN=bpat_...
botu sites list                         # uses BOTU_TOKEN, no ~/.paradigx needed

Interactive sessions don't need this — the device-flow JWT is cached and auto-refreshed, so botu login is a one-time step per machine.

About embed keys vs account tokens

  • pk_live_* / pk_test_*site embed keys, go in the <script> tag.
  • bpat_*account access tokens, authenticate the CLI itself.

Both plaintexts are shown once, at creation. botu embed can't retrieve an existing site's key — pass --key or use --new-key to mint a fresh one.

Configuration

Env var Default Purpose
BOTU_API_URL https://botu.io Target deployment (https://qa.botu.io for QA)
BOTU_TOKEN Account access token — skips login (CI / agents)
BOTU_JSON 1 forces JSON output globally

Credentials are stored in ~/.paradigx/auth.json, shared with other Paradigx product CLIs (e.g. tokenroute) — log in once, reuse everywhere.

Exit codes

0 ok · 1 user error (4xx) · 2 network error · 3 server error (5xx)


© 2026 Paradigx. All Rights Reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

botu_cli-0.3.0.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

botu_cli-0.3.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file botu_cli-0.3.0.tar.gz.

File metadata

  • Download URL: botu_cli-0.3.0.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for botu_cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6f53f4ab6b9052bc298aa209b8639c2b00775afefb8ab97eb4c7ac80e1c44732
MD5 c1c253c3800be40e49101581b13cf5bf
BLAKE2b-256 8aee991ae734cfbfa26e95be79c7587d58d44329bb5642ade04d978056ead41e

See more details on using hashes here.

File details

Details for the file botu_cli-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: botu_cli-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for botu_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 958484bd6f4f6d4ad1e4e3af7a87411e133c6b39d75772983e1258e702b657ad
MD5 8f306f129a673b673056025bec09e5db
BLAKE2b-256 25519a00c3df76791842e547705fd93411b7211da11e14ee495cc21fadffbe9a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page