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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file botu_cli-0.2.0.tar.gz.
File metadata
- Download URL: botu_cli-0.2.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f17d546b1c8d681b60f7f0ab7391fa3c821877c01129afe4e656a732f373b68
|
|
| MD5 |
8d857ee91e8358b616c562467f616680
|
|
| BLAKE2b-256 |
b621baedc2688dda9899b42d9ac127fb8d69fcf24d126715f3bdea13ff3334a8
|
File details
Details for the file botu_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: botu_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78d8195d357ba6dc965d238aa0259051e36ba49d57e639d51a7389b4bc6907ad
|
|
| MD5 |
bd28a87a431b39f8d03bc794191a54d7
|
|
| BLAKE2b-256 |
951a9acde5a4cfaa8ce152331962f60ceece4a20eb16f998d4d1858ff09d3066
|