Skip to main content

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 install into 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 :7600 with 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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

xiaoguai-1.12.0-py3-none-manylinux_2_28_x86_64.whl (8.4 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

xiaoguai-1.12.0-py3-none-manylinux_2_28_aarch64.whl (7.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

xiaoguai-1.12.0-py3-none-macosx_11_0_x86_64.whl (8.1 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

xiaoguai-1.12.0-py3-none-macosx_11_0_arm64.whl (7.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file xiaoguai-1.12.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xiaoguai-1.12.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f89170e3516ab2489f456fa5a466feebf75b511252c6121c8d6ffa72c4f7b2a0
MD5 1f6384dbe73cc657db6bb01fba4e4f0b
BLAKE2b-256 412f24576151b56164ba4c68aacb09b48b70c85371e9e2b4ce92694ae78b3936

See more details on using hashes here.

File details

Details for the file xiaoguai-1.12.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for xiaoguai-1.12.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e67665397d63b85b1fc0378d8873f45c5f5f6b33fd8ea18c5439366b09834df8
MD5 9f4ae613b95279ba7228fa64fb603f68
BLAKE2b-256 0a250b7755b6df58160ae3f79dce18138c9d00ec21a963c3a5fc28173066e31f

See more details on using hashes here.

File details

Details for the file xiaoguai-1.12.0-py3-none-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for xiaoguai-1.12.0-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 40e596b78152adf9698d2e863ad9f8f33e89459a5b2b4a5d704c816a5039319e
MD5 ffd94314b1dbf7ee2b491477c276f619
BLAKE2b-256 65933b729d1e767fbf80eb3907efb1cb10db5e0f77a094e0343f64a2ac4aed7d

See more details on using hashes here.

File details

Details for the file xiaoguai-1.12.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for xiaoguai-1.12.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba020f587726bfad6d2b07bcd0ab11b765ca5989e210509cb7a833140e548859
MD5 57433967f90fb55541381d8ab04c9c83
BLAKE2b-256 5cfd3833d88535c417b88c9ff6e4c4175502921c46e2da01c1ca87d200ebee2d

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