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.4.0.tar.gz (17.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.4.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: botu_cli-0.4.0.tar.gz
  • Upload date:
  • Size: 17.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.4.0.tar.gz
Algorithm Hash digest
SHA256 f12f782825d4a80e9cedd68071a320e5cacb5b19ac6b761cc561385525b3ac58
MD5 7340b0cad5a8505e905110d6042bf137
BLAKE2b-256 4d7242e9b97f66db6700e44190dc28a479ef03e5de555938cfb1148320a662a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: botu_cli-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5fdadb8cbcb47fd010851302adc8eed80d6b62990889084b4f51e3d167d5294
MD5 6b14f1c5e4857270c5a91a2ade8398db
BLAKE2b-256 618ba0695c94aecf980833582d3abac1a4de76c70c129f3fb312e77bc0a476dc

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