This release is a pre-release and may not be stable for production use.
pcli
pcli is a modular terminal coding agent for Kimi-compatible models. It can connect to the hosted pcli gateway with invite-code registration, or to a local OpenAI-compatible proxy for development. The project is split into:
pcli_kimi.py: main CLI/TUI entrypointkimi_openai_proxy.py: local proxy that exposes/v1/chat/completionspcli/: reusable runtime modules for tools, UI, session handling, streaming, resilience, and API plumbing
The default CLI runtime uses the proxy at http://127.0.0.1:8765/v1.
What It Does
- Chat with Kimi from the terminal
- Run tools with confirmation for risky operations
- Read, edit, append, delete, and summarize files
- Search files and the web
- Attach local files, images, and PDFs
- Save and resume sessions
- Track tool loops, query chains, planner state, and reflection checks
- Use either the freebuff TUI or a classic terminal layout
Requirements
- Python 3.8+
- CLI dependencies from the base package
- Playwright Chromium only for the proxy runtime
End-user CLI install:
pip install "kimi-pcli[ui]"
or:
uv tool install "kimi-pcli[ui]"
Proxy install:
pip install "kimi-pcli[proxy]"
python3 -m playwright install chromium
Quick Start
1. Register or log in to the hosted gateway
pp-cli
Inside the CLI:
/register
Enter the gateway URL, email, password, and invite code from your administrator. The default gateway is:
https://pcli.tranlequybaotk12.workers.dev/v1
Existing users can reconnect with:
/login
2. Start the local proxy for development
Default fast IPv4 native mode:
python3 kimi_openai_proxy.py
This starts the proxy with native aiohttp, browser release after credential
refresh, and IPv4-only upstream transport enabled by default.
Legacy browser-backed mode:
KIMI_PROXY_NATIVE_CLIENT=0 python3 kimi_openai_proxy.py
Native mode with dual-stack DNS if IPv4-only is not desired:
KIMI_PROXY_NATIVE_IPV4_ONLY=0 python3 kimi_openai_proxy.py
Useful proxy flags:
python3 kimi_openai_proxy.py --port 8765 --ws-port 8766
3. Start the CLI
pp-cli
If you run the CLI in a TTY with ui_style=freebuff, it starts the freebuff TUI automatically. Otherwise it falls back to the classic text UI.
Hosted gateway mode:
PCLI_BASE_URL="https://<gateway-domain>/v1" \
PCLI_API_KEY="<gateway-user-token>" \
pp-cli
Admin account-pool setup for hosted gateway lives in
gateway-cf/README.md, including the scripts/kimi_account_export.py flow for
exporting Kimi browser credentials into the dashboard Quick Add form.
Configuration and State
The CLI bootstrap creates and uses ~/.code_assistant/ by default:
~/.code_assistant/config.json~/.code_assistant/sessions/~/.code_assistant/backups/~/.code_assistant/logs/
Session browser state for the proxy lives under .webchat_state/kimi/.
Common config keys live in pcli/config/settings.py. The important defaults are:
model:kimi-k2.6-thinkingbase_url:http://127.0.0.1:8765/v1ui_style:freebuffauto_context_compact:trueauto_save:true
Example config:
{
"model": "kimi-k2.6-thinking",
"base_url": "http://127.0.0.1:8765/v1",
"ui_style": "freebuff",
"auto_context_compact": true
}
CLI Usage
Use /help inside the CLI for the full command list. The common commands are:
/help,/tools,/files/model,/ui,/set/clear,/save,/sessions,/load/backups,/restore/autoyes,/risk/context,/chain,/plan,/autoplan/plugins,/mcp,/mcp test <server>/reflect,/watchdog,/hooks,/warm/exit
The CLI supports:
- multiline input and bracket paste
- session save/resume
- file attachment parsing
- tool call rendering in both TUI and classic layouts
- auto-confirm for safe operations and guided confirmation for risky ones
MCP Servers
pcli can call local MCP stdio servers through one generic agent tool,
mcp_tool, so MCP support does not bloat every request with many tool schemas.
Servers are cold-started only when the agent calls mcp_tool or when you run
/mcp test <server>.
Add servers to ~/.code_assistant/config.json:
{
"mcp_enabled": true,
"mcp_servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/tlqbao/Desktop"],
"description": "Filesystem MCP scoped to Desktop",
"tools": ["read_file", "list_directory"]
}
}
}
Inside pcli:
/mcp
/mcp test filesystem
The agent should first call:
mcp_tool(server="filesystem", action="list_tools")
Then call the exact MCP tool:
mcp_tool(server="filesystem", action="call_tool", tool="read_file", input={"path": "/home/tlqbao/Desktop/a.txt"})
Proxy API
The proxy is OpenAI-compatible and serves the CLI at /v1.
Common endpoints:
GET /healthGET /metricsGET /kimi/statsGET /kimi/native
If native mode is enabled, the proxy also exposes runtime controls for the native client path. See doc/PHASE3_DEPLOY_GUIDE.md for the full deployment and rollback flow.
For an internal alpha, put an access gateway in front of the hosted Fly proxy so
each developer receives an individual token. See
doc/ACCESS_GATEWAY_DESIGN.md and
doc/PYPI_FLY_DEPLOY.md.
Environment Variables
CLI
PCLI_KIMI_SESSION_ID: override the per-session proxy header valuePCLI_BASE_URL: overridebase_urlwithout editing configPCLI_API_KEY: overrideapi_keywithout editing configPCLI_MODEL: override model without editing configPCLI_AGENT_DEBUG=1: enable agent/tool-loop debug logging
Proxy
KIMI_PROXY_AUTH_TOKEN: requireAuthorization: Bearer <token>orX-API-KeyKIMI_PROXY_NATIVE_CLIENT=1: enable the native aiohttp pathKIMI_PROXY_NATIVE_IPV4_ONLY=1: force native upstream requests to IPv4KIMI_PROXY_NATIVE_MAX_INFLIGHT=2: cap concurrent native requestsKIMI_PROXY_NATIVE_RELEASE_BROWSER=1: release Playwright resources after refreshKIMI_PROXY_DEBUG_PHASE3=1: verbose native routing logs
See doc/PHASE3_DEPLOY_GUIDE.md for the full native-mode environment matrix.
Testing
Run the test suite:
pytest -q
Useful focused checks:
python3 -m py_compile pcli_kimi.py kimi_openai_proxy.py
pytest tests/test_kimi_proxy.py -q
Compare Playwright vs native path on a running proxy:
python3 bench/native_vs_playwright.py --repeats 3
Benchmarks and Docs
doc/USER_GUIDE.mddoc/DEVELOPER_GUIDE.mddoc/ARCHITECTURE.mddoc/PYPI_FLY_DEPLOY.mddoc/PHASE3_DEPLOY_GUIDE.mddoc/PERFORMANCE_IMPROVEMENT_PLAN.mddoc/CHANGELOG_PERF.mdbench/run_bench.pybench/phase3_acceptance.pybench/fast_tool_accuracy.pybench/latency_probe.py
License
MIT
Release files for kimi-pcli 0.1.0a18
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kimi_pcli-0.1.0a18.tar.gz | 435.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kimi_pcli-0.1.0a18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 812.0 kB
Release files / kimi_pcli-0.1.0a18.tar.gz
| Download URL | kimi_pcli-0.1.0a18.tar.gz |
|---|---|
| Size | 435.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c94912e0e2ee28d8e02efafa8c364ba1d7e9de0cfda99a53a206b4463dfc83b5
|
|
BLAKE2b-256 checksum How to use checksums |
3361be013aff884a7820ec7de5f42f9101b493b3f4ce112f0a2deb5627e8f2f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.10
|
Release files / kimi_pcli-0.1.0a18-py3-none-any.whl
| Download URL | kimi_pcli-0.1.0a18-py3-none-any.whl |
|---|---|
| Size | 376.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66100cc87ed38f511182c2569548c7ca9845e04fb5c3e61b5846692f7b9fc2b7
|
|
BLAKE2b-256 checksum How to use checksums |
5eb8d08aeef164183f40fe519ef5a3ff2ac73aef70df82ee99311e630af74e63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.10
|