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.

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.10.5-py3-none-manylinux_2_28_x86_64.whl (8.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

xiaoguai-1.10.5-py3-none-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

xiaoguai-1.10.5-py3-none-macosx_11_0_x86_64.whl (7.8 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

xiaoguai-1.10.5-py3-none-macosx_11_0_arm64.whl (7.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.10.5-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4498ffb36398cff6992186a0272a453cf872595ea29f9727997e28127c74e21a
MD5 e6b2d30a2661bdf3a99cd41c5f14c437
BLAKE2b-256 d6bde3b336ca10ef4595b4763a92a05cf1a79ec24e351f9a8ece9da486909299

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.10.5-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d4c25c17ba81307c3988a20de3e3acc12cbe07d7b07b6464bccb9f8bad6e2b1
MD5 325a967283c2b3f179b6ce4276d77fa4
BLAKE2b-256 497863e598e7f743998362c7fde8692150d65c8424c36faab2b8b89e6b1aaac7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.10.5-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 1c3faaf8751f1829e72644e87759542a3dbb4be9fc6b4e94d5730e352544438e
MD5 c8bb8add7ad622972907c577d1ad62eb
BLAKE2b-256 301ba75d2a4c4299eae83dd40be76f7e905dd120e21d875fdd662183cc50c42c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.10.5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8c8213d08f5c5a8e8290590079a83555b7b9160906c262f152c920c3d7fd685e
MD5 8ae40ca823d18f467b337fea2591be3a
BLAKE2b-256 1e05f0daa5c4fbdfee33bce9b953fe60223231735a0bc2d69f387e59e2b04b37

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