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 sites verify <site-id> --domain acme.com --check # confirm it
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 embed API keys |
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 |
About embed keys
The plaintext of an API key is shown once — at creation. botu embed
therefore can't retrieve the key of an existing site. Either pass
--key pk_live_..., or use --new-key to mint a fresh one and drop it
straight into the snippet.
Configuration
| Env var | Default | Purpose |
|---|---|---|
BOTU_API_URL |
https://botu.io |
Target deployment (set to https://qa.botu.io for QA) |
BOTU_JSON |
— | 1 forces JSON output globally |
Credentials are stored in ~/.paradigx/auth.json, shared with other
Paradigx product CLIs (e.g. tokenroute) — they authenticate against the
same Logto, so logging in once is reused across them.
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.1.0.tar.gz.
File metadata
- Download URL: botu_cli-0.1.0.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b38e054866c38d0649a954b04a1e79a64a667f5e6b243c6da54f3a10af586f6
|
|
| MD5 |
f030495633a8ecefda24f91c342c2be5
|
|
| BLAKE2b-256 |
90e8d32e016bdc5c19a0a9931228874934a739fa5a0771bf25dcbe8037772ebb
|
File details
Details for the file botu_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: botu_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.4 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 |
014e890dd50fcafc35766737d127aa4287bd571454208b0b03edb2bcdaefdbc5
|
|
| MD5 |
45f96da6b7f2a3c35c51e5ed923c0535
|
|
| BLAKE2b-256 |
c6babd23d8f255eaa8e50f03d437b206126a7c9c54911335957a413e7d7d92ac
|