@aikyroon/kyros
v1.0.1
Published
Kyros is a multi-provider coding agent that runs locally in your terminal.
Readme
Kyros
Kyros is a coding agent that runs locally in your terminal and works with any model provider that speaks the OpenAI or Anthropic wire format — OpenAI, Claude, DeepSeek, Kimi, GLM, Qwen, MiniMax, OpenRouter, Groq, or a local server.
The provider is a configuration choice, not something baked into the binary.
Why Kyros
Most terminal agents are wired to a single vendor's API. Kyros speaks three wire protocols, so one agent works across all of them:
| wire_api | Protocol | Endpoint | Providers |
| ----------- | ----------------------- | ------------------- | --------- |
| responses | OpenAI Responses | /responses | OpenAI, Azure OpenAI |
| chat | OpenAI Chat Completions | /chat/completions | DeepSeek, Kimi, GLM, Qwen, MiniMax, OpenRouter, Groq, Together, vLLM, Ollama |
| messages | Anthropic Messages | /messages | Anthropic (Claude) |
Switching providers is a config edit, not a reinstall.
Installation
npm — Linux, macOS, Windows
The launcher picks the right prebuilt binary for your platform:
npm install -g @aikyroon/kyrosOr with your package manager of choice:
pnpm add -g @aikyroon/kyros
bun install -g @aikyroon/kyrosThen run it:
kyros --version
kyrosRequires Node.js 18+. Prebuilt binaries cover linux x64/arm64, macOS x64/arm64 and Windows x64/arm64.
Install script — Linux and macOS
No Node.js needed; downloads the binary straight from the GitHub release:
curl -fsSL https://raw.githubusercontent.com/aikyroon/kyros/main/scripts/install/install.sh | shInstall script — Windows
irm https://raw.githubusercontent.com/aikyroon/kyros/main/scripts/install/install.ps1 | iexFrom source
Needs Rust 1.95.0 (pinned in kyros-rs/rust-toolchain.toml, installed
automatically by rustup). Build on Linux or macOS; on
Windows build inside WSL2, since the sandbox uses Linux primitives.
On Debian/Ubuntu, install the system libraries first:
sudo apt install -y build-essential pkg-config libssl-dev perl curl git
# building the full workspace (not just the binary) also needs:
sudo apt install -y libcap-dev libseccomp-dev libdbus-1-devgit clone https://github.com/aikyroon/kyros.git
cd kyros/kyros-rs
cargo build --release --bin kyros
install -m 0755 target/release/kyros ~/.local/bin/kyrosBuild tip: on machines with many cores, the
aws-lc-sysC sources can fail under high parallelism with no compiler diagnostic. If that happens, retry withcargo build --release --bin kyros -j4.
Quickstart
Set an API key and point Kyros at a provider:
export DEEPSEEK_API_KEY="sk-..."
kyros -c model_provider=deepseek -c model=deepseek-chat "explain this repo"Or start the interactive TUI and let it use your configured default:
kyrosRun a one-shot task without the interactive UI:
kyros exec "add tests for the parser module"Check that config, auth, and runtime are healthy:
kyros doctorConfiguration
Kyros reads ~/.kyros/config.toml. The config directory can be overridden with KYROS_HOME.
Migrating from Codex? On first run Kyros copies
config.tomlandauth.jsonfrom an existing~/.codexinto its own~/.kyros. Databases and sessions stay with Codex — the two tools keep separate state.
Pick the active provider and model at the top level, then define the provider:
model = "deepseek-chat"
model_provider = "deepseek"
[model_providers.deepseek]
name = "DeepSeek"
base_url = "https://api.deepseek.com/v1"
env_key = "DEEPSEEK_API_KEY"
wire_api = "chat"env_key names the environment variable holding the API key; Kyros sends it as Authorization: Bearer <key>.
Anthropic / Claude
Anthropic does not use bearer auth. Supply the key via x-api-key and pin the API version, leaving env_key unset:
model = "claude-sonnet-4-6"
model_provider = "anthropic"
[model_providers.anthropic]
name = "Anthropic"
base_url = "https://api.anthropic.com/v1"
wire_api = "messages"
[model_providers.anthropic.http_headers]
"anthropic-version" = "2023-06-01"
[model_providers.anthropic.env_http_headers]
"x-api-key" = "ANTHROPIC_API_KEY"OpenAI
Both ChatGPT login and a plain API key work:
printenv OPENAI_API_KEY | kyros login --with-api-keyMore providers
Kimi, GLM, Qwen, MiniMax, OpenRouter and other OpenAI-compatible gateways follow the same wire_api = "chat" shape. See docs/multi-provider.md for a ready-to-copy block for each.
You can also override per invocation without touching the config file:
kyros -c model_provider=anthropic -c model=claude-sonnet-4-6 "review my diff"Usage
| Command | What it does |
| --- | --- |
| kyros | Interactive TUI |
| kyros "<prompt>" | Interactive, seeded with a prompt |
| kyros exec "<task>" | Non-interactive run |
| kyros review | Code review, non-interactive |
| kyros apply | Apply the agent's latest diff to your working tree |
| kyros resume | Resume a previous session |
| kyros doctor | Diagnose config, auth, and runtime health |
| kyros mcp | Manage external MCP servers |
| kyros sandbox | Run a command inside the Kyros sandbox |
| kyros login / kyros logout | Manage credentials |
Run kyros --help for the full list.
Known limitations
The chat and messages codecs stream assistant text and tool calls, but a few things are not yet wired up for them:
- Provider-side reasoning traces are not surfaced.
- Token-usage accounting is not reported.
- Images in inputs are not forwarded.
- Anthropic requests use a fixed
max_tokensof 8192.
The responses (OpenAI) path is unaffected by all of the above.
Documentation
- Multiple model providers — config for every supported provider
- Configuration reference
- Getting started
- Sandbox
Development
cd kyros-rs
cargo check --workspace --all-targets # fast validation
cargo test -p kyros-core # test a single crateThe Rust workspace lives in kyros-rs/ (126 crates). kyros-cli/ is the npm wrapper, and sdk/ holds the Python and TypeScript SDKs.
License & attribution
Licensed under Apache-2.0 — see LICENSE.
This project incorporates code from OpenAI Codex, Copyright 2025 OpenAI, licensed under Apache-2.0. Required attributions are listed in NOTICE.
Kyros is not affiliated with or endorsed by OpenAI or Anthropic.
