- .github/workflows/release.yml: on tag v* build all 5 targets (macOS
arm64/x86_64, Linux arm64/x86_64 incl. free arm runners, Windows
x86_64) with the release-dist profile, archive kigi-<version>-<triple>
with LICENSE/NOTICE/THIRD-PARTY-NOTICES, generate SHA256SUMS, publish
the release (prerelease for tags containing '-'), with a tag↔workspace
version guard.
- install.sh / install.ps1 (repo root): platform detection, latest or
--version download from GitHub Releases, SHA-256 verification against
SHA256SUMS, install into the kigi home's downloads/ + bin/kigi symlink
(the same layout the self-updater manages), smoke test, PATH guidance.
- kigi-update rewritten onto the GitHub Releases API (documented wire
shape; stable=/latest, alpha=semver-max across the list, pinned=/tags):
SHA-256 gate before any binary swap, tar.gz/zip extraction per
platform, atomic bin/kigi symlink swap, channel/rollback semantics and
the KIGI_AUTO_UPDATE gate preserved verbatim; every x.ai/GCS/npm
endpoint deleted, npm/gh-release installers removed, legacy grok/agent
links retired on install. kigi-env owns the update base URL with a
KIGI_UPDATE_BASE_URL override (this is what the test artifact server
injects).
- .cargo/config.toml: removed the non-portable neoverse-v2 CPU pin on
Linux arm64 (fleet-specific); RELRO/NX hardening link-args now apply
to the gnu targets too, matching the release-dist profile's contract.
- THIRD-PARTY-NOTICES regenerated via cargo-about (about.toml +
template); the M0 hand-built file is dropped and README points at the
generated one. docs/RELEASE.md carries the release checklist.
- Deleted xAI-era leftovers: kigi-tui/scripts/install*.{sh,ps1} (x.ai
CDN) and the @xai-official/grok npm skeleton (PRD F8: no npm).
Gates: fmt clean; workspace check/clippy 0/0 (--locked, -D warnings);
kigi-update 58 lib + 86 integration tests green; deny ok;
release-dist build of kigi-bin succeeds and reports 'kigi 0.1.0'.
93 lines
3.7 KiB
Markdown
93 lines
3.7 KiB
Markdown
# Kigi
|
|
|
|
**Kigi** (`kigi`) is an unofficial Kimi Code CLI community build — a
|
|
terminal-based AI coding agent based on the Apache-2.0 sources of
|
|
[xai-org/grok-build](https://github.com/xai-org/grok-build), re-targeted at
|
|
the Kimi Code subscription API and the Moonshot open platform.
|
|
|
|
It runs as a full-screen TUI that understands your codebase, edits files,
|
|
executes shell commands, and manages long-running tasks — interactively,
|
|
headlessly for scripting/CI, or embedded in editors via the Agent Client
|
|
Protocol (ACP).
|
|
|
|
Kigi is not affiliated with Moonshot AI or xAI. It coexists with the official
|
|
`kimi` CLI on the same machine: independent binary name, independent config
|
|
directory (`~/.kigi`), independent keyring credentials, and a `KIGI_*`
|
|
environment-variable namespace. Nothing the official client installs or
|
|
stores is touched.
|
|
|
|
## Status
|
|
|
|
`0.1.0` — milestone M0 (compilable skeleton) complete:
|
|
|
|
- 62 workspace crates renamed to the `kigi-*` namespace; brand and env-var
|
|
namespaces separated from upstream.
|
|
- Telemetry, voice input, announcements, plugin marketplace, and
|
|
relay/gateway remote services removed. Kigi is **zero-telemetry**: the
|
|
only outbound connections are the inference/auth APIs you configure,
|
|
GitHub Releases for updates, and MCP servers you add.
|
|
- Toolchain Rust 1.97.0; `cargo check`/`clippy --workspace --all-targets`
|
|
clean; `cargo deny check advisories` gate in place.
|
|
|
|
Authentication and inference against Kimi Code (milestone M1), the
|
|
compatibility surface (M2), and release distribution (M3) are in progress.
|
|
|
|
## Providers and API keys
|
|
|
|
Kigi talks to a fixed three-platform registry:
|
|
|
|
| Platform id | Base URL | Auth |
|
|
| ------------- | ------------------------------- | --------------------------- |
|
|
| `kimi-code` | `https://api.kimi.com/coding/v1` | Kimi Code subscription OAuth (`kigi login`) |
|
|
| `moonshot-cn` | `https://api.moonshot.cn/v1` | Moonshot open-platform API key |
|
|
| `moonshot-ai` | `https://api.moonshot.ai/v1` | Moonshot open-platform API key |
|
|
|
|
Moonshot API keys come from the environment or `~/.kigi/config.toml`
|
|
(environment wins; values are never logged):
|
|
|
|
```sh
|
|
export KIGI_MOONSHOT_API_KEY=sk-... # applies to both open platforms
|
|
export KIGI_MOONSHOT_CN_API_KEY=sk-... # platform-scoped, beats the generic name
|
|
export KIGI_MOONSHOT_AI_API_KEY=sk-...
|
|
```
|
|
|
|
```toml
|
|
# ~/.kigi/config.toml
|
|
[platforms.moonshot-cn]
|
|
api_key = "sk-..."
|
|
|
|
[platforms.moonshot-ai]
|
|
api_key = "sk-..."
|
|
```
|
|
|
|
On login and on startup Kigi syncs each configured platform's model list
|
|
from `GET {base}/models` and shows the merged catalog in the model picker
|
|
(catalog keys are `{platform_id}/{model_id}`). If the sync fails, the last
|
|
cached catalog is used; with no cache, a small built-in fallback list
|
|
applies. Model selection resolves as
|
|
`--model` CLI flag > `KIGI_DEFAULT_MODEL` > `[models] default` in
|
|
config.toml > server-delivered list > built-in fallback.
|
|
|
|
`KIGI_CODE_BASE_URL` re-points the subscription platform (useful for
|
|
testing); `KIGI_MOONSHOT_CN_BASE_URL` / `KIGI_MOONSHOT_AI_BASE_URL` are the
|
|
equivalent dev/test overrides for the open platforms.
|
|
|
|
## Building from source
|
|
|
|
```sh
|
|
rustup toolchain install 1.97.0
|
|
cargo build --profile release-dist -p kigi-bin
|
|
./target/release-dist/kigi --version
|
|
```
|
|
|
|
`protoc` is invoked through the vendored [dotslash](https://dotslash-cli.com)
|
|
launcher at `bin/protoc`; install dotslash (`brew install dotslash` or
|
|
`cargo install dotslash`) if it is not already on your PATH.
|
|
|
|
## License
|
|
|
|
Apache-2.0. See [LICENSE](LICENSE), [NOTICE](NOTICE), and
|
|
[THIRD-PARTY-NOTICES](THIRD-PARTY-NOTICES.md). Code ported from
|
|
openai/codex and sst/opencode is documented in
|
|
[crates/codegen/kigi-tools/THIRD_PARTY_NOTICES.md](crates/codegen/kigi-tools/THIRD_PARTY_NOTICES.md).
|