Hard fork of xai-org/grok-build (Apache-2.0) re-targeted as Kigi, an
unofficial Kimi Code CLI community build.
Rename & identity
- 72 xai-*/xai-grok-* crates -> kigi-* (explicit: xai-grok-pager-bin ->
kigi-bin [binary `kigi`], xai-grok-pager -> kigi-tui; rest mechanical);
ptyctl, ptyctl-cli, third_party/ unchanged; proto package
xai.grok.tools.v1 -> kigi.tools.v1
- Config home ~/.kigi (KIGI_SHARE_DIR override), env prefix GROK_* ->
KIGI_*, `kigi --version` carries the unofficial-community-build notice
- clap identity, help text, startup banner, prompt templates rebranded
(templates re-encrypted)
Deletions (PRD removal list #5/#6/#7/#9/#10)
- voice input (xai-grok-voice) and all TUI wiring
- telemetry: Mixpanel client, external OTel stream, Sentry, OTLP layers,
trace/GCS/S3 upload queues (kigi-file-utils halved), workspace upload
module & dc_log, heap-profile uploader, auth-diagnostics uploader,
session-analytics halves of feedback; local zero-egress observability
preserved in new kigi-log crate (unified log, --debug firehose,
subsystem file logs, opt-in instrumentation)
- announcements (crate, remote-settings fields, TUI surfaces)
- plugin marketplace (crate, sources/browse/CTA/extensions-modal tab);
direct plugin install/uninstall/update via kigi-agent git_install kept
- relay/gateway/assets endpoints and features (agent relay, headless
relay transport, gateway bridge, LeaderEnvUrls); leader IPC socket now
~/.kigi/leader.sock + KIGI_LEADER_SOCKET, no ws-url derivation
- functional types rehomed instead of deleted: PermissionMode ->
kigi-config-types, McpInitStrategy -> kigi-mcp, PrCreationSource ->
session signals, TerminalDiagnostics -> kigi-pager-render, agent_id ->
shell util
Endpoints
- kigi-env rewritten: single production KigiEndpoints {coding_api_base_url
https://api.kimi.com/coding/v1 (KIGI_CODE_BASE_URL), oauth_host
https://auth.kimi.com (KIGI_OAUTH_HOST), update_base_url (GitHub
Releases API), upgrade_page_url}; GrokBuildEnvironment enum deleted
Toolchain & workspace hygiene
- Rust 1.97.0 pinned; edition 2024; full cargo update; git2 hoisted to
workspace at 0.21 (Option->Result API migration), quick-xml 0.41
- Root Cargo.toml hand-maintained (PRD §8.1): version 0.1.0 inherited by
all members, members sorted, unused deps pruned
- cargo-deny advisories gate (deny.toml with documented transitive
exceptions); CI workflow (check/clippy/fmt/deny/test, macOS+Linux)
- cross-crate test seams re-gated behind `test-support` cargo feature;
insta snapshot baselines renamed to the kigi_tui prefix
- clippy --workspace --all-targets: zero warnings; fmt clean
Fixes surfaced by the port
- updater probe/installer divergence (bin/kigi vs bin/grok symlink set)
- idle model-metadata refresh dead under KIGI_CODE_BASE_URL override
(new is_effective_coding_endpoint_url, loopback+override aware)
- macOS symlinked-TMPDIR fixture canonicalization (foreign_sessions,
fast-worktree); RSS measurement tests serialized via serial_test
Docs & legal (Apache §4)
- NOTICE added (upstream attribution + change statement); THIRD-PARTY
notices sustained; kigi-tools ported-code notices extended; README,
CONTRIBUTING, SECURITY, AGENTS.md rewritten
Out of scope for M0 (tracked): Kimi auth/inference (M1), search/fetch,
command parity, config import (M2), Computer Hub excision & final
brand-token sweep (M2), distribution & self-update rewrite (M3).
3.4 KiB
Kigi — agent/developer notes
Single source of truth for how this repository is organized and the constraints every change must respect. Update this file whenever the tech stack or product direction changes.
What this is
Kigi is an unofficial Kimi Code CLI community build: a hard fork of
xai-org/grok-build (Apache-2.0, Rust) re-targeted at the Kimi Code
subscription API and the Moonshot open platform. It coexists with the
official kimi CLI: binary kigi, config dir ~/.kigi
(KIGI_SHARE_DIR override), keyring service kigi, env prefix KIGI_*.
Never read or write ~/.kimi (except the explicit one-time read-only
import) or any KIMI_* env var.
Hard constraints
- Zero egress: outbound connections are limited to
auth.kimi.com,api.kimi.com,api.moonshot.cn,api.moonshot.ai, GitHub Releases domains, and user-configured MCP servers. No telemetry, no analytics, ever.crates/codegen/kigi-envis the single home of first-party endpoints. - Toolchain: Rust 1.97.0 (rust-toolchain.toml), edition 2024.
- Gates (all must stay green):
cargo check --workspace --all-targets,cargo clippy --workspace --all-targets(zero warnings),cargo fmt --all --check,cargo deny check advisories. - Observability is local:
kigi-log(unified session log,--debugfirehose, subsystem file logs, opt-in instrumentation) writes under~/.kigionly. Its zero-network property is a contract. - The root
Cargo.tomlis hand-maintained (upstream's generator is not in this repo). Members sorted; versions inherited fromworkspace.package.version(0.1.0).
Layout
crates/codegen/— the bulk of the application (62kigi-*crates). Key ones:kigi-bin(binarykigi),kigi-tui(full-screen TUI + headless-pmode +acp/mcpcommands),kigi-shell(agent runtime, leader-follower IPC, sessions),kigi-sampler(inference client; ChatCompletions/Responses/Messages backends),kigi-auth(credentials),kigi-config(config layering,~/.kigipaths),kigi-env(endpoints),kigi-tools(tool implementations incl. codex/opencode ports — see its THIRD_PARTY_NOTICES.md),kigi-workspace(FS/VCS/exec/permissions, checkpoint/worktree),kigi-log(local observability).crates/common/,crates/build/,prod/mc/— shared libs, proto build, proxy wire types (the latter to be redefined against Kimi in M1).third_party/— vendored Mermaid rendering stack (untouched policy).bin/protoc— dotslash launcher used by proto codegen.
Test seams
Cross-crate test hooks are behind the test-support cargo feature
(kigi-workspace, kigi-pager-render, kigi-config, kigi-tui), enabled via
dependents' [dev-dependencies]. Don't expose new test seams as plain
#[cfg(test)] items across crate boundaries.
Milestones (PRD §8.3)
- M0 (done): rename, deletions (voice/telemetry/announcements/marketplace/ relay-gateway), toolchain, gates.
- M1: Kimi device-flow auth (F1), Moonshot API-key channel (F2), inference
via ChatCompletions (F3), dynamic model sync (F4). The auth stack in
kigi-shell/src/auth+kigi-authgets rewritten here; transitional grok.com references live only there and inkigi-sampler/proxy types. - M2: server-side search/fetch (F5), command parity with kimi-cli 1.49.0
(F6), one-time
~/.kimi/config.tomlimport (F7), F9 smoke list, perf CI. - M3: GitHub Releases distribution, install scripts, self-update (F8).