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

Apache-2.0. 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.14.0-py3-none-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

xiaoguai-1.14.0-py3-none-manylinux_2_28_aarch64.whl (8.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

xiaoguai-1.14.0-py3-none-macosx_11_0_x86_64.whl (8.3 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

xiaoguai-1.14.0-py3-none-macosx_11_0_arm64.whl (7.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.14.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee810b439b256cece427a06e2cb53f81648be369d2f74d7bc01131b96f9597c2
MD5 2bf874fe2058f9455a7745d78d551cb9
BLAKE2b-256 b5a87443bd7e9c9c0e97b1c8319accddb6435236c553aec05bab1d5c20a5c3cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.14.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 769635632b2bc248402b7fc17841b1994710ff54d8c62516acbc9b28ca75845c
MD5 8d1b2b884fb136d0fa49b7449e238d18
BLAKE2b-256 a5a4b9435253482ed66510614021312c9d2833a4b314eb7a85e91aaac19daa42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.14.0-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 fb539d9a1989d376226592a38dcaa11c5e65992dcaf565c4aab12dce48c046ba
MD5 aa3b497fb80ce1dcfe32a7019c982c52
BLAKE2b-256 0458fb8d702c03e70c6247e3fb644fa386a5220953fd00f71ed7bd6d4bbf1259

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.14.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c419c9d9a3137b994651b7135785f5a09dc676f47da360b53a16d7a211859f66
MD5 e9bea6d3b11780523ff704c74c025d3a
BLAKE2b-256 7a142c2bdff014323f4523cd680e9c1b26a2e412a4136831278dd1f5101c6ccb

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