Python convenience wrapper around the Rust xiaoguai CLI.
Project description
xiaoguai (Python wrapper)
pip install xiaoguai — a thin Python launcher that bundles the Rust
xiaoguai CLI binary
inside a platform-specific wheel.
On Debian 12 / Ubuntu 24 and other PEP 668 "externally-managed" systems,
pip installinto the system Python is blocked. Use pipx instead:sudo apt install -y pipx && pipx ensurepath && pipx install xiaoguai.
After install:
xiaoguai --help
xiaoguai chat --mock --prompt "hello"
The console script forwards every argument to the bundled native
binary. There is no Python agent logic in this package — it exists
so pip users have an install path alongside Cargo, Homebrew, and
the standalone tarball.
Supported platforms
The CI matrix produces wheels for:
| Target triple | Wheel tag (approx.) |
|---|---|
aarch64-apple-darwin |
macosx_11_0_arm64 |
x86_64-apple-darwin |
macosx_10_12_x86_64 |
x86_64-unknown-linux-gnu |
manylinux_2_28_x86_64 |
aarch64-unknown-linux-gnu |
manylinux_2_28_aarch64 |
Other platforms (Alpine / musl, Windows, FreeBSD) are out of scope for v1.1.7. Build from source instead:
cargo install --path crates/xiaoguai-cli
HTTP client (wave-3)
pip install 'xiaoguai[client]' — adds xiaoguai.client.XiaoguaiClient, a
synchronous HTTP client for the xiaoguai-api REST server (requires httpx>=0.25).
Note: the client snippets below predate the single-user pivot (DEC-033). The live API now serves on
:7600with optional HTTP Basic auth and no tenant scoping. The bundled binary launcher above is the supported path; treat these examples as illustrative pending a client refresh.
Covered endpoints (v1.2.x)
| Domain | Methods |
|---|---|
| HotL | list_hotl_policies, create_hotl_policy, delete_hotl_policy |
| Outcomes | record_outcome, outcomes_summary, outcomes_timeseries |
| Skills | list_skill_catalog, list_installed_skills, install_skill, uninstall_skill |
Quick start
from xiaoguai.client import XiaoguaiClient
with XiaoguaiClient("http://localhost:7600", token="my-bearer-token") as c:
# HotL — boundary policy admin
policy = c.create_hotl_policy(
tenant_id="my-tenant-uuid",
scope="llm_call",
window_seconds=3600,
max_count=100,
escalate_to="ops@example.com",
)
policies = c.list_hotl_policies(tenant_id="my-tenant-uuid", scope="llm_call")
c.delete_hotl_policy(policy.id)
# Outcomes — ROI telemetry
c.record_outcome(
tenant_id="my-tenant",
agent_name="sales-bot",
kind="revenue_usd",
value=1500.0,
description="Closed enterprise deal",
)
summary = c.outcomes_summary(tenant_id="my-tenant", range="7d")
ts = c.outcomes_timeseries(tenant_id="my-tenant", range="30d", kind="hours_saved")
# Skills — pack marketplace
catalog = c.list_skill_catalog()
pack = c.install_skill(tenant_id="my-tenant", pack_slug="rag-legal")
installed = c.list_installed_skills(tenant_id="my-tenant")
c.uninstall_skill(pack.id)
Error handling
from xiaoguai.client import (
XiaoguaiNotFoundError,
XiaoguaiValidationError,
XiaoguaiConflictError,
)
try:
c.install_skill(tenant_id="t1", pack_slug="rag-legal")
except XiaoguaiConflictError:
print("already installed")
except XiaoguaiNotFoundError:
print("unknown pack slug")
Typed models
HotlPolicy, HotlVerdict, OutcomeRecord, OutcomeSummary,
OutcomeTimeseries, InstalledSkillPack, SkillPackEntry — all frozen
dataclasses with from_dict class methods.
Troubleshooting
If xiaoguai after a fresh install prints "native binary not
bundled", the wheel matched on architecture but its package data is
empty (rare — usually an sdist install rather than a wheel). Set
XIAOGUAI_PY_DEBUG=1 to see the resolution path the launcher tried.
Documentation
Full documentation, configuration, and architecture notes live in the upstream repository — see the main README.
License
BUSL-1.1. Same license as the upstream Rust project.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
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 xiaoguai-1.11.0-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: xiaoguai-1.11.0-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4dd5d048b1d48be3749e684a09d202091162f93d300ce6f703a2d50225cc608
|
|
| MD5 |
be312cc21d9aebbc5ae34084e2d27dab
|
|
| BLAKE2b-256 |
de69f5f64a8f29b4bbdd0efde2b8a1cd5d5f57b7a58b2fe06df8c1c534821046
|
File details
Details for the file xiaoguai-1.11.0-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: xiaoguai-1.11.0-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 7.7 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37db6d8ee5010dd4260e79ffafaeb08c74d5c807766ab97501586f89fc35ca90
|
|
| MD5 |
a66511f2b2b37863508c40f11225e3d3
|
|
| BLAKE2b-256 |
8afcea8cc2b5d10b1160ffda28102f5e4132d11622d9bf6711faff2521b33b3e
|
File details
Details for the file xiaoguai-1.11.0-py3-none-macosx_11_0_x86_64.whl.
File metadata
- Download URL: xiaoguai-1.11.0-py3-none-macosx_11_0_x86_64.whl
- Upload date:
- Size: 8.1 MB
- Tags: Python 3, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd2e038c0b8e8d0f2e47462526a8c825a990819412b797ebf82f4098db9025f4
|
|
| MD5 |
dfa4b4b3783de46b9e20a1cc28a09ea3
|
|
| BLAKE2b-256 |
0ace63c72db7e8d2b25aa52d5e91c0efb6cd649330d7a2ce6812e0173744b4cc
|
File details
Details for the file xiaoguai-1.11.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: xiaoguai-1.11.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 7.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c22d0dba9a68a93b9afe193261c67fd008d5b5e1cec2059aa32c4acda1d8693
|
|
| MD5 |
7abfae2e62b8a82766ab3119f9ab5d6a
|
|
| BLAKE2b-256 |
384a4fffa5c489e24426ce695a124180756020a19bf2c0fce762437938a23449
|