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"
xiaoguai doctor    # self-check: database / providers / Ollama / port

To keep xiaoguai serve running in the background across reboots: xiaoguai service install (systemd on Linux — needs sudo; a per-user launchd agent on macOS — no root).

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

Uploaded Python 3manylinux: glibc 2.28+ x86-64

xiaoguai-1.27.0-py3-none-manylinux_2_28_aarch64.whl (8.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

xiaoguai-1.27.0-py3-none-macosx_11_0_x86_64.whl (9.0 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

xiaoguai-1.27.0-py3-none-macosx_11_0_arm64.whl (8.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.27.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ff6cb39e5930a127c6f5c861d92686152c7193f3e768641f07e03c8cae0da5c1
MD5 cbc064d98621f4628b6fc202fa42b490
BLAKE2b-256 5851d2dd0f65de67c19b0930723b9a4922836cd51e74ac83610b8daf4b098ce3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.27.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 10ded37616d4d4c81c085760c9d5e46ffa7fbee8f19e1997c2f893cf980fa72a
MD5 8f194700f694e0e9b5a7e29940a0f6ee
BLAKE2b-256 e34c6b08588c81dcf80e0db697051650ea0cd33b6d88416db32be17f60c662a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.27.0-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 dbe4763d71c8d31fa71c0fc283d3f7b984a4191e758ab3d78447ac218721316e
MD5 150e6a06225f5d546722b0ebd321c0ce
BLAKE2b-256 c76cfad1b7fa552e21c1bfd17c312ad058bcf8dd7c6838e3cf9191edab7e0ae2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.27.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b3a38898cf401a41f3a46e3e9df3a154b888d52ab6f246f98d353d3c9c1172a
MD5 b9df3b3f3beedc4c8861090678f4b3f5
BLAKE2b-256 9de1ae1d0d9c8982aab27c9c742e974c7c054bd2b2f10b67f74b040e25a19a0e

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