Skip to main content

saki.io

Saki AI — Live2D avatar app with Copilot/Cursor CLI relay. Planning and goals live in MySpace; this repo is implementation only.

Install

uv sync

Run

uv run saki.io

Then open http://localhost:8000 in your browser. The app uses the Copilot CLI (e.g. brew install copilot-cli) and agent-client-protocol for context across messages. If ACP isn't available, the server falls back to one-shot copilot --prompt "...".

Commands for developers

All commands use UV:

Command Description
uv run saki.io Run Saki (default).
uv run saki.io --allow-tools Allow Copilot to run commands, read/write files, and use tools (e.g. gh).
uv run saki.io -v Enable verbose output (session, HTTP, ACP logs).

Flags can be combined, e.g. uv run saki.io --allow-tools -v.

Structure

  • saki/io/ — Python package
    • server.py — HTTP server + setup APIs + /api/send → agent backend
    • app/ — static web app (HTML, CSS, JS) shipped as package data
    • backend/ — agent backend abstraction (Copilot now; Cursor later)
    • acp_client.py — Copilot ACP client (used by CopilotBackend)
    • bootstrap.py — .saki.io folder bootstrap
  • tests/ — pytest

Stack

Plain HTML + JavaScript, no build. Python deps in pyproject.toml. Relay uses one copilot --acp --stdio session when agent-client-protocol is installed.

Tests

uv sync --extra dev
uv run pytest tests/ -v

Integration test (Copilot + gh): RUN_ACP_INTEGRATION=1 uv run pytest tests/test_acp_gh_integration.py -v

Debugging ACP

If you see "Using one-shot --prompt" and want the single-session (context) mode:

  1. Install the ACP client: uv sync
  2. Ensure Copilot supports ACP: copilot --acp --stdio (then Ctrl+C)
  3. Run with verbose logs: uv run saki.io -v — startup and ACP errors are printed to stderr.
  4. To inspect the raw ACP protocol: SAKI_ACP_LOG=1 uv run saki.io -v — every JSON-RPC message to/from Copilot is printed.

"Failed to list models" — Copilot ACP can't list models (auth/network). Start the server from a terminal where copilot --prompt "hi" works (same env = same credentials).

Tool use

By default, Saki rejects all tool use (terminal, file read/write). To allow Copilot to run commands and use tools:

uv run saki.io --allow-tools

Why does Saki say "tool rejected" when gh/copilot work in tests?

Tests run commands directly in the server process. In chat, Copilot uses the ACP flow: it asks for permission (we say "allowed"), then it calls back into our client. If that follow-up uses a method or param shape we don't support, we return "method not found". With SAKI_ACP_LOG=1 uv run saki.io -v you can see the exact ACP messages and adjust acp_client.py or backend.

Metadata

Release files for saki-io 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for saki-io 0.1.0
File Interpreter ABI Platform
saki_io-0.1.0-py3-none-any.whl Python 3 none any Details

Release files / saki_io-0.1.0-py3-none-any.whl

Download URL saki_io-0.1.0-py3-none-any.whl
Size 33.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc225b3a866b78ce76ebd84e8b7299fddf3e4b971dd4b416c2d1ac5f3a295498
BLAKE2b-256 checksum
How to use checksums
17d05b7847093dd76d0e402d04a3222491801ff691050e68e2d965831e9e54b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

0.0.1

2 release 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