How to Run the Kimi-Code Development Server Locally: Complete Setup Guide
Run pnpm dev:server from the repository root after installing Node.js ≥24.15.0 and pnpm 10.33.0 to start the kap-server on http://127.0.0.1:58627 with debug endpoints enabled.
The kap-server is the core development server that powers both the Kimi Code CLI (kimi) and the web UI (kimi-web). Learning how to run the kimi-code development server locally is essential for contributors who want to modify the agent's behavior, develop plugins, or test changes against a live backend before deployment.
Prerequisites
Before launching the development server, verify your environment meets the minimum requirements specified in the MoonshotAI/kimi-code repository.
- Node.js ≥ 24.15.0
- pnpm 10.33.0
Check your versions with:
node --version # → 24.15.x or higher
pnpm --version # → 10.33.x
Installation and Setup
Clone the repository and install workspace dependencies using pnpm.
git clone https://github.com/MoonshotAI/kimi-code.git
cd kimi-code
pnpm install
This installs all packages across the monorepo, including the apps/kimi-code package that contains the server entry point.
Starting the Development Server
The primary command to run the kimi-code development server locally is pnpm dev:server. This script is defined in apps/kimi-code/package.json and orchestrates the entire startup process.
pnpm dev:server
What Happens When You Run pnpm dev:server
According to the source code in apps/kimi-code/package.json, the dev:server script executes:
tsx --tsconfig ./tsconfig.dev.json src/main.ts web --no-open --debug-endpoints
This command performs the following actions:
- Loads the development configuration (
tsconfig.dev.json) which enablesexperimentalDecoratorsfor dependency injection and pulls in all workspace package sources - Invokes the entry point (
src/main.ts) with thewebsub-command, instructing the server to boot in HTTP/WebSocket mode rather than terminal UI mode - Prevents browser auto-open (
--no-open) to avoid interrupting your workflow - Enables debug endpoints (
--debug-endpoints) which register diagnostic routes under/api/v1/debug/*for inspecting the DI registry and service state
The server listens on http://127.0.0.1:58627 by default. You can override this by setting the KIMI_BACKEND_DEFAULT_URL environment variable before starting the process.
The Development Wrapper Script
Behind the scenes, scripts/dev.mjs serves as the orchestration layer. This Node.js script:
- Spawns the
tsxprocess with the appropriate import loader (../../build/register-raw-text-loader.mjs) to handle raw text assets during development - Injects environment variables for the plugin marketplace, starting a local marketplace server unless
KIMI_CODE_DEV_MARKETPLACE_URLis provided externally - Handles process cleanup and error propagation
You should see console output indicating the plugin marketplace dev server URL once the startup sequence completes.
Development Commands and Options
The repository provides several npm scripts for different development scenarios. Each is defined in the root package.json and delegates to specific workspace configurations.
| Command | Purpose | Source Location |
|---|---|---|
pnpm dev:server |
Launches the kap-server with debug endpoints on port 58627 | apps/kimi-code/package.json |
pnpm dev:cli |
Runs the Kimi Code CLI in development mode, connecting to the local server | apps/kimi-code/package.json |
pnpm dev:web |
Starts the Vite dev server for the web UI (port 5173), proxying /api/v1 requests to the local kap-server |
apps/kimi-web/package.json |
pnpm dev:v2 |
Spawns a second kap-server instance on port 58628 for multi-backend testing | Root package.json |
pnpm dev:server:restart |
Watch-mode helper that restarts the server on file changes while preserving the home directory | Root package.json |
Running the CLI Against Your Local Server
To interact with the agent via terminal while your local server is running:
pnpm dev:cli
This connects the TUI (Terminal User Interface) to the kap-server you started with pnpm dev:server, allowing you to test agent behavior against your local modifications.
Running the Web UI
To develop the React-based frontend while connected to your local backend:
pnpm dev:web
The Vite development server starts on http://localhost:5173 (or the next available port) and proxies all API requests to http://127.0.0.1:58627, enabling full-stack development with hot module replacement.
Architecture Details
Understanding the server architecture helps troubleshoot startup issues and configure advanced development scenarios.
Entry Point: src/main.ts
The central entry point uses Commander.js to parse CLI arguments. When invoked with the web sub-command, it bypasses the terminal UI (runShell from src/cli/run-shell.ts) and instead initializes the HTTP/WebSocket server. This same entry point handles both headless prompt execution (runPrompt) and the development server mode.
TypeScript Configuration
The tsconfig.dev.json file extends the base configuration to include all workspace packages in the compilation scope. This is crucial for development because it allows the server to resolve imports from sibling packages (like shared utilities or protocol definitions) without requiring a build step.
Debug Endpoints
When --debug-endpoints is active, the server exposes routes under /api/v1/debug/* that provide introspection into the dependency injection container. These endpoints reveal the entire service registry and internal state, making them invaluable for verifying that your changes to service providers or decorators are being registered correctly.
Configuring Server Ports and URLs
You can customize the development server behavior using environment variables:
KIMI_BACKEND_DEFAULT_URL– Changes the server's listen address and port (default:http://127.0.0.1:58627)KIMI_CODE_DEV_MARKETPLACE_URL– Points to an external plugin marketplace instead of starting the local dev server
Example with custom port:
KIMI_BACKEND_DEFAULT_URL=http://127.0.0.1:9000 pnpm dev:server
Summary
- Install Node.js ≥24.15.0 and pnpm 10.33.0 before attempting to run the kimi-code development server locally.
- Use
pnpm dev:serverto start the kap-server with debug endpoints enabled on port 58627. - The entry point
apps/kimi-code/src/main.tsreceives thewebargument to boot in server mode rather than TUI mode. - Development scripts in
apps/kimi-code/scripts/dev.mjshandle environment setup and the optional local plugin marketplace. - Access debug routes at
/api/v1/debug/*when starting with the--debug-endpointsflag to inspect the DI registry. - Override default ports by setting
KIMI_BACKEND_DEFAULT_URLbefore running the start command.
Frequently Asked Questions
What is the default port for the kimi-code development server?
The kap-server listens on port 58627 by default when started with pnpm dev:server. You can verify this in the console output or by checking the KIMI_BACKEND_DEFAULT_URL environment variable, which defaults to http://127.0.0.1:58627 according to the source configuration.
How do I enable debug endpoints when running the server?
Debug endpoints are automatically enabled when you use the pnpm dev:server command. The npm script passes the --debug-endpoints flag to src/main.ts, which registers diagnostic routes under /api/v1/debug/*. These routes expose the dependency injection registry and service state for troubleshooting.
What is the difference between pnpm dev:server and pnpm dev:cli?
pnpm dev:server starts the HTTP/WebSocket backend (kap-server) that exposes REST APIs under /api/v1, while pnpm dev:cli launches the Terminal User Interface that connects to an existing server instance. You typically run dev:server in one terminal to start the backend, then dev:cli in another to interact with it, or use dev:web to connect via the browser interface.
How do I run a second development server instance for testing?
Use pnpm dev:v2 to spawn a secondary kap-server instance on port 58628. This is useful for testing multi-backend scenarios, comparing behavior between different code versions, or developing features that require communication between multiple server instances. The command uses the same scripts/dev.mjs wrapper but overrides the port configuration internally.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →