The AI company for Atlanta businesses
ServingMetro Atlanta
StatusBooking calls

RMDW Private Jah API

Plug in Jah in two minutes.

Jah speaks the OpenAI and Anthropic formats, so your tools and your code connect without a rewrite. Every snippet below was run against the live API before it was written here.

Base URLhttps://kiyomibot.ai/v1

OpenAI format at /chat/completions, Anthropic format at /messages. The Anthropic SDK base URL is https://kiyomibot.ai (no /v1).

Modelsjah-7.0-max jah-7.0-fast

Max thinks hard, for agents and hard problems. Fast answers instantly, for chat and small jobs. Plain jah works too.

1. Test it with curl

Paste your key where it says YOUR_KEY. If you get a hello back, you are connected.

Terminal
curl https://kiyomibot.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jah-7.0-fast",
    "messages": [{"role": "user", "content": "Reply with exactly: hello from jah"}]
  }'

2. Pi

Add the provider to ~/.pi/agent/models.json, then run it. Set KIYOMI_API_KEY in your shell.

~/.pi/agent/models.json (inside "providers")
"kiyomi": {
  "baseUrl": "https://kiyomibot.ai/v1",
  "api": "openai-completions",
  "authHeader": true,
  "models": [{
    "id": "jah-7.0-fast",
    "name": "Jah 7.0",
    "reasoning": true,
    "contextWindow": 1000000,
    "maxTokens": 65536
  }]
}
Terminal
export KIYOMI_API_KEY=YOUR_KEY
pi --provider kiyomi --model jah-7.0-fast

3. Claude Code

Three environment variables and it runs on Jah. jah-7.0-max is the deep one, jah-7.0-fast the quick one.

Terminal
export ANTHROPIC_BASE_URL=https://kiyomibot.ai
export ANTHROPIC_AUTH_TOKEN=YOUR_KEY
export ANTHROPIC_MODEL=jah-7.0-max
claude

4. OpenCode

Put this in opencode.json in your project (or ~/.config/opencode/opencode.json for every project).

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "rmdw": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Jah (Kiyomi)",
      "options": {
        "baseURL": "https://kiyomibot.ai/v1",
        "apiKey": "YOUR_KEY"
      },
      "models": {
        "jah-7.0-max": {
          "name": "Jah 7.0",
          "tools": true,
          "limit": { "context": 1000000, "output": 65536 }
        }
      }
    }
  }
}
Terminal
opencode -m rmdw/jah-7.0-max

5. Codex

Add the provider to ~/.codex/config.toml and set the key in your shell.

~/.codex/config.toml
model = "jah-7.0-max"
model_provider = "kiyomi"

[model_providers.kiyomi]
name = "Jah (Kiyomi)"
base_url = "https://kiyomibot.ai/v1"
env_key = "KIYOMI_API_KEY"
wire_api = "responses"
Terminal
export KIYOMI_API_KEY=YOUR_KEY
codex

6. Cursor

Cursor takes a custom OpenAI key for chat and agents. Tab completion stays on Cursor's own models.

Cursor Settings > Models
OpenAI API key:   YOUR_KEY
Base URL override: https://kiyomibot.ai/v1
Model:             jah-7.0-max
(If your Cursor build has no base URL override, use a model name of jah-7.0-max after the key.)

7. Your own code, OpenAI format

Works with the official OpenAI SDK and anything that speaks it. Point the base URL at us.

openai.mjs
import OpenAI from "openai";

const jah = new OpenAI({ baseURL: "https://kiyomibot.ai/v1", apiKey: process.env.KIYOMI_API_KEY });

const r = await jah.chat.completions.create({
  model: "jah-7.0-fast",
  messages: [{ role: "user", content: "Hello from my code" }],
});
console.log(r.choices[0].message.content);
openai.py
from openai import OpenAI

jah = OpenAI(base_url="https://kiyomibot.ai/v1", api_key="YOUR_KEY")

r = jah.chat.completions.create(
    model="jah-7.0-fast",
    messages=[{"role": "user", "content": "Hello from my code"}],
)
print(r.choices[0].message.content)

8. Your own code, Anthropic format

For code already built on the Anthropic Messages API. The base URL has no /v1, the SDK adds it.

anthropic.mjs
import Anthropic from "@anthropic-ai/sdk";

const jah = new Anthropic({ baseURL: "https://kiyomibot.ai", apiKey: process.env.KIYOMI_API_KEY });

const m = await jah.messages.create({
  model: "jah-7.0-fast",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello from my code" }],
});
console.log(m.content[0].text);