@kitana-sdk/core
v0.1.8
Published
Router, provider detection, and failover for AI CLI subscriptions (Claude, Codex, Ollama) — no API keys required.
Maintainers
Readme
@kitana-sdk/core
Router, provider detection, and failover for Kitana SDK — use AI subscriptions (Claude Max, ChatGPT Plus) programmatically, without API keys.
Install
npm install @kitana-sdk/coreUsage
import { createRouter, detect } from '@kitana-sdk/core'
const env = await detect()
// { providers: { claude: {...}, codex: { available, auth: {...} }, ollama: {...} }, ... }
const router = createRouter({
chain: ['claude', 'codex', 'ollama', 'api-key'],
models: { ollama: 'mistral:instruct', claude: 'sonnet' },
apiKeys: { anthropic: process.env.ANTHROPIC_API_KEY }
})
const response = await router.complete({
messages: [{ role: 'user', content: 'Hello' }],
model: 'auto',
systemPrompt: 'Answer concisely.'
})
// { content, model, provider, usage }models configures a default per provider when the request model is auto or
omitted. An explicit request model still takes precedence. Providers without a
configured model retain their existing defaults.
Streaming
import { streamClaude } from '@kitana-sdk/core'
await streamClaude('say PONG', 'auto', text => {
process.stdout.write(text) // called incrementally as tokens arrive
})Provider fallback context
onProviderSwitch lets a caller (e.g. @kitana-sdk/bible) inject context when the router falls back to a different provider. The context is passed through each provider's real system-prompt channel — never mixed into the user message — so it isn't mistaken for a prompt-injection attempt.
const router = createRouter({
chain: ['claude', 'ollama'],
onProviderSwitch: async ({ from, to }) => {
return 'facts carried over from the previous step...'
}
})Requirements
- Claude CLI (
npm install -g @anthropic-ai/claude-code), authenticated viaclaude auth login - Codex CLI (
npm install -g @openai/codex), authenticated viacodex login - Optionally: Ollama running locally, or an Anthropic/OpenAI API key for fallback
See the main repo for full documentation.
