Kiyomi API

Your own private model, in the tools you already use.

Claude Code, Codex, opencode, Claude Desktop, Cline, Cursor. Anything that speaks the OpenAI or Anthropic API. Change one URL and the tool you already know runs on Jah: a private model on hardware Kiyomi owns. Your code and prompts never reach Anthropic, OpenAI, or anyone else.

Your API keys

No keys yet.

Quickstart

Base URL: https://kiyomibot.ai/v1 · Model: jah

OpenAI format · curl

curl https://kiyomibot.ai/v1/chat/completions \
  -H "Authorization: Bearer $ECHOLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jah",
    "messages": [{"role": "user", "content": "Write a haiku about privacy."}]
  }'

OpenAI format · Python SDK

from openai import OpenAI

client = OpenAI(
    base_url="https://kiyomibot.ai/v1",
    api_key="sk-echols-...",
)
resp = client.chat.completions.create(
    model="jah",
    messages=[{"role": "user", "content": "Hello, Jah."}],
)
print(resp.choices[0].message.content)

Anthropic format · curl

curl https://kiyomibot.ai/v1/messages \
  -H "x-api-key: $ECHOLS_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jah",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, Jah."}]
  }'

Your coding agent, on your own model

Keep the tool you already know. Point it at Kiyomi and the work runs on Jah instead of someone else's cloud.

Claude Code

# 1. install Claude Code (skip if you have it)
npm install -g @anthropic-ai/claude-code

# 2. point it at Kiyomi and run
unset ANTHROPIC_API_KEY                        # must be UNSET, or it wins over the token
export ANTHROPIC_BASE_URL="https://kiyomibot.ai"
export ANTHROPIC_AUTH_TOKEN="sk-echols-..."   # your key, from above
export ANTHROPIC_MODEL="jah"
export ANTHROPIC_SMALL_FAST_MODEL="jah"
claude

Want both? Put the exports in an alias like echols-code, so claude stays on Anthropic and echols-code runs on Jah.

Codex CLI

# ~/.codex/config.toml
model = "jah"
model_provider = "echols"

[model_providers.echols]
name = "Kiyomi"
base_url = "https://kiyomibot.ai/v1"
env_key = "ECHOLS_API_KEY"
wire_api = "responses"
export ECHOLS_API_KEY="sk-echols-..."
codex

opencode

Paste this into opencode.json (in your project or ~/.config/opencode/):

// opencode.json (in your project, or ~/.config/opencode/opencode.json)
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "echols": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Kiyomi",
      "options": {
        "baseURL": "https://kiyomibot.ai/v1",
        "apiKey": "sk-echols-..."
      },
      "models": { "jah": { "name": "Jah (Kiyomi)" } }
    }
  },
  "model": "echols/jah"
}

The first run downloads the provider package, so give it a minute. After that it starts instantly.

Claude Desktop

The desktop app can point at Kiyomi too, no terminal needed. Developer Mode has to be on first.

1. Help → Troubleshooting → Enable Developer Mode
2. Developer → Configure third-party inference
3. Gateway base URL:   https://kiyomibot.ai
   Gateway API key:    sk-echols-...
   Gateway auth scheme: bearer

Pricing

API access is included with your Kiyomi membership, one plan at $25/mo — 300 requests a day, resetting nightly, with throughput limits that keep the hardware fair for everyone. It's the same private model behind the app, your own sovereign endpoint, not a reseller of someone else's cloud.

See plans →