DOCUMENTATION
CyberKimi speaks the OpenAI API dialect. If your tooling works with the OpenAI
SDK, it works here — change the base URL, use your platform key, select
lordx64/cyberkimi.
// QUICKSTART
1. Request access via the waitlist — v2 invites roll out from there (priority access = one month of subscription, $149). 2. Once invited, create an API key (Settings → Account → API Keys). 3. Call the API. That's the whole onboarding.
// API KEYS
Keys live in Settings → Account → API Keys. Create as many as you like, name them per
tool (burp, ci-runner, laptop),
and revoke them independently. Keys inherit your subscription state in real time — if a
subscription lapses, its keys stop working within seconds.
// ENDPOINTS
| WHAT | WHERE |
|---|---|
| Base URL | https://platform.adverserial.ai/api |
| Chat completions | POST /api/chat/completions |
| Model list | GET /api/models |
| Model id | lordx64/cyberkimi |
| Auth | Authorization: Bearer <your key> |
// PYTHON (OPENAI SDK)
# pip install openai from openai import OpenAI client = OpenAI( api_key="sk-YOUR-PLATFORM-KEY", base_url="https://platform.adverserial.ai/api", ) resp = client.chat.completions.create( model="lordx64/cyberkimi", messages=[ {"role": "system", "content": "You are a red-team operator assistant."}, {"role": "user", "content": "Write a Sigma rule for this behavior: ..."}, ], max_tokens=2048, ) print(resp.choices[0].message.content)
// CURL
curl https://platform.adverserial.ai/api/chat/completions \ -H "Authorization: Bearer sk-YOUR-PLATFORM-KEY" \ -H "Content-Type: application/json" \ -d '{"model":"lordx64/cyberkimi","messages":[{"role":"user","content":"triage this log line: ..."}],"max_tokens":1024}'
// STREAMING
stream = client.chat.completions.create(
model="lordx64/cyberkimi",
messages=[...],
max_tokens=2048,
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
print(delta.content or "", end="")
// THE REASONING FIELD
CyberKimi is a reasoning model: it thinks before it answers. The thinking trace arrives in
message.reasoning, the final answer in message.content.
Give max_tokens generously — if a response ends with
finish_reason="length" and empty content, the model spent the whole budget
thinking; raise the cap.
// LIMITS & TRIAL
| ITEM | VALUE |
|---|---|
| Free trial | 1 prompt per account, chat UI only (no API keys) |
| Context window | 1,000,000 tokens (whole codebases / pcaps in one call) |
| Rate limits | No hard caps on Hacker Manifesto — fair use; contact us for batch-scale |
| API keys | Active members only |
// CLAUDE CODE & ANTHROPIC-API CLIENTS
For Claude Code, Cline, and other Anthropic-dialect clients, use the shim base URL — it sanitizes thinking blocks that the backend parser rejects:
export ANTHROPIC_BASE_URL="https://api.adverserial.ai" export ANTHROPIC_AUTH_TOKEN="sk-YOUR-PLATFORM-KEY" export ANTHROPIC_MODEL="lordx64/cyberkimi" export ANTHROPIC_DEFAULT_OPUS_MODEL="lordx64/cyberkimi" export ANTHROPIC_DEFAULT_SONNET_MODEL="lordx64/cyberkimi" export ANTHROPIC_DEFAULT_HAIKU_MODEL="lordx64/cyberkimi" claude
// CODEX CLI
Codex (current versions) speaks the OpenAI Responses API — our shim translates it. The clean setup keeps CyberKimi as a profile so your default model stays untouched. In ~/.codex/config.toml add the provider:
[model_providers.cyberkimi] name = "CyberKimi" base_url = "https://api.adverserial.ai/v1" env_key = "OPENAI_API_KEY" wire_api = "responses"
Then create the profile file ~/.codex/cyberkimi.config.toml:
model = "lordx64/cyberkimi" model_provider = "cyberkimi"
And use it:
export OPENAI_API_KEY="sk-YOUR-PLATFORM-KEY"
codex --profile cyberkimi
// CODEX DESKTOP APP
The Codex desktop app shares the same ~/.codex/config.toml but has no provider picker — its model list is account-bound. To run the desktop app on CyberKimi, set the provider as the top-level default:
model = "lordx64/cyberkimi" model_provider = "cyberkimi" [model_providers.cyberkimi] name = "CyberKimi" base_url = "https://api.adverserial.ai/v1" wire_api = "responses" [model_providers.cyberkimi.auth] command = "/bin/cat" args = ["/Users/YOU/.codex/cyberkimi-key"]
Then:
printf 'sk-YOUR-PLATFORM-KEY' > ~/.codex/cyberkimi-key && chmod 600 ~/.codex/cyberkimi-key
Fully quit the app (⌘Q) and relaunch. The command-based auth block matters here: GUI apps can't see shell environment variables, so env_key won't work for the desktop app — the file read always works. To go back to your OpenAI models, remove the top-level model_provider line and set model back, then relaunch.
Note: the model's self-reported name follows the harness (Codex says "GPT-5…", Claude Code says "Claude") until our identity-tuned checkpoint ships — the backend is CyberKimi regardless.
// ERRORS
| CODE | MEANING |
|---|---|
| 401 | Missing/revoked key, or subscription lapsed |
| trial message | Access is waitlist-only — join the waitlist |
| finish_reason=length, empty content | Reasoning ate the token budget — raise max_tokens |
| 503 | Platform scaling up — retry in a few seconds |
// FAQ
Is this a different model from Kimi K3? It's Kimi K3 with the refusal layer ablated out of the weights and cyber-tuning on top — same brain, no leash, field training.
Do you log my prompts? Chats live in your platform account; the GPU backend is ours and phones home to no one. Delete chats any time from the platform.
Team plans? Enterprise tier: dedicated capacity, private weight deployment, SSO — contact@adverserial.ai.