Skip to main content

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

Offline hosts: the wheel bundles the native binary, so it installs without network on the target. Download it on a connected machine and carry it over:

pip download xiaoguai --no-deps --only-binary=:all: \
  --platform manylinux_2_28_x86_64 --python-version 3.12 -d ./offline
# transfer ./offline, then on the air-gapped host:
pip install --no-index ./offline/xiaoguai-*.whl

For the systemd/package route and the SEC-01 credential step, see Offline / air-gapped install.

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.

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

Uploaded Python 3manylinux: glibc 2.28+ x86-64

xiaoguai-1.34.4-py3-none-manylinux_2_28_aarch64.whl (9.4 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

xiaoguai-1.34.4-py3-none-macosx_11_0_x86_64.whl (9.7 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

xiaoguai-1.34.4-py3-none-macosx_11_0_arm64.whl (8.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.34.4-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 03dc80838e1053c7061379dc65dd858d4ecc178f04206839da7ae768b3021111
MD5 7173dc03c341e44b918b5bdb3dae0208
BLAKE2b-256 19e19e925e42e4d95ab4197a3dffc368b41a0d2f83e8059a42ab599581818cb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.34.4-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0c1bf3bd5832f36c02a77d28cf5c878b22fa8a509a3ed9a18808b604ca83f245
MD5 2bdb219b97ef25965ce5c47a03a313ce
BLAKE2b-256 3e2c3c79d9793ecb0205142c39d10ea98a44e266624f93fc4cd4652f9629048c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.34.4-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 4624c965ab3b19682aaef837a9933eff46eb58785efbed67d16812c52efeaa9b
MD5 dd752d85619a4a1f7df87d4dc712d22d
BLAKE2b-256 916a7e4a3f818e5b3b5f73c981d72d6cb585e80ff147214efade992898097511

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xiaoguai-1.34.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb1b30e46c98faaef01db3195b5162aa4a415f949097153e508d844cc1d014c4
MD5 75f375158374aa01915c1feee7cd81ec
BLAKE2b-256 0ba3efd1645f4e09806df6e1f5b5292a142f5e6aaeacf39f63ae061230140617

See more details on using hashes here.

Release history Release notifications | RSS feed

1.35.0

4 files

This release

1.34.4 This release

4 files

1.34.3

4 files

1.34.2

4 files

1.34.0

4 files

1.32.0

4 files

1.31.0

4 files

1.30.0

4 files

1.29.1

4 files

1.29.0

4 files

1.28.0

4 files

1.27.0

4 files

1.26.0

4 files

1.25.0

4 files

1.24.0

4 files

1.23.0

4 files

1.22.3

4 files

1.22.2

4 files

1.22.1

4 files

1.22.0

4 files

1.21.0

4 files

1.20.0

4 files

1.19.0

4 files

1.18.0

4 files

1.17.0

4 files

1.16.0

4 files

1.15.0

4 files

1.14.0

4 files

1.13.0

4 files

1.12.0

4 files

1.11.0

4 files

1.10.8

4 files

1.10.7

4 files

1.10.6

4 files

1.10.5

4 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page