Skip to main content

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.

Metadata

Release files for botu-cli 0.4.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 botu-cli 0.4.0
File Size Uploaded Provenance
botu_cli-0.4.0.tar.gz 17.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for botu-cli 0.4.0
File Interpreter ABI Platform
botu_cli-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.2 kB

Release files / botu_cli-0.4.0.tar.gz

Download URL botu_cli-0.4.0.tar.gz
Size 17.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f12f782825d4a80e9cedd68071a320e5cacb5b19ac6b761cc561385525b3ac58
BLAKE2b-256 checksum
How to use checksums
4d7242e9b97f66db6700e44190dc28a479ef03e5de555938cfb1148320a662a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / botu_cli-0.4.0-py3-none-any.whl

Download URL botu_cli-0.4.0-py3-none-any.whl
Size 13.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d5fdadb8cbcb47fd010851302adc8eed80d6b62990889084b4f51e3d167d5294
BLAKE2b-256 checksum
How to use checksums
618ba0695c94aecf980833582d3abac1a4de76c70c129f3fb312e77bc0a476dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for botu-cli 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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