keirouter-chat
Chat / code generation via KeiRouter using OpenAI /v1/chat/completions or Anthropic /v1/messages format with streaming +…
Generate vector embeddings via KeiRouter /v1/embeddings using OpenAI / Mistral / Cohere / Voyage / NVIDIA / AWS Bedrock and other embedding models for RAG, semantic search, similarity. Use when the user wants embeddings, vectors, RAG, semantic search, or to embed text.
$ npx -y skills add mydisha/keirouter --skill keirouter-embeddings --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/keirouter-embeddingsContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate vector embeddings via KeiRouter /v1/embeddings using OpenAI / Mistral / Cohere / Voyage / NVIDIA / AWS Bedrock and other embedding models for RAG, semantic search, similarity. Use when the user wants embeddings, vectors, RAG, semantic search, or to embed text.
name: keirouter-embeddings description: Generate vector embeddings via KeiRouter /v1/embeddings using OpenAI / Mistral / Cohere / Voyage / NVIDIA / AWS Bedrock and other embedding models for RAG, semantic search, similarity. Use when the user wants embeddings, vectors, RAG, semantic search, or to embed text.
Requires `KEIROUTER_URL` (and `KEIROUTER_KEY` if auth enabled). See https://raw.githubusercontent.com/mydisha/keirouter/main/skills/keirouter/SKILL.md for setup.
curl $KEIROUTER_URL/v1/models/embedding | jq '.data[].id' # Per-model dimensions curl "$KEIROUTER_URL/v1/models/info?id=openai/text-embedding-3-small"
`POST $KEIROUTER_URL/v1/embeddings`
| Field | Required | Notes | |---|---|---| | `model` | yes | from `/v1/models/embedding` | | `input` | yes | string OR array of strings | | `dimensions` | no | OpenAI v3 only |
curl -X POST $KEIROUTER_URL/v1/embeddings \
-H "Authorization: Bearer $KEIROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/text-embedding-3-small","input":["hello","world"]}'JS:
const r = await fetch(`${process.env.KEIROUTER_URL}/v1/embeddings`, {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.KEIROUTER_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ model: "gemini/text-embedding-004", input: "RAG chunk text" }),
});
const { data } = await r.json();
console.log(data[0].embedding.length); // dimension{ "object": "list", "model": "openai/text-embedding-3-small",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.045, ...] },
{ "object": "embedding", "index": 1, "embedding": [...] }
],
"usage": { "prompt_tokens": 5, "total_tokens": 5 } }| Provider | Notes | |---|---| | OpenAI, Mistral, Cohere, Voyage, Jina, Fireworks, Together, Nebius, NVIDIA, OpenRouter, Venice, Cloudflare, vLLM | OpenAI shape — `dimensions` works only on models that support it (e.g. OpenAI `text-embedding-3-*`) | | AWS Bedrock | Titan and Cohere Embed via InvokeModel; send OpenAI shape | | Azure AI Foundry, Databricks, GitHub Models | OpenAI shape on the provider's own endpoint | | GigaChat | Native connector; send OpenAI shape | | Custom OpenAI | Any OpenAI-compatible `/embeddings` endpoint |
Vectors are always returned as float arrays.
Batch (`input` as array) is faster; some providers cap batch size.
Chat / code generation via KeiRouter using OpenAI /v1/chat/completions or Anthropic /v1/messages format with streaming +…
Generate images via KeiRouter /v1/images/generations using OpenAI (DALL-E, gpt-image), xAI, Venice or Recraft models, or any…
Speech-to-text via KeiRouter /v1/audio/transcriptions using OpenAI Whisper or Groq Whisper models (or any OpenAI-compatible…
Text-to-speech via KeiRouter /v1/audio/speech using OpenAI voices (or any OpenAI-compatible speech server added as a custom…
Fetch URL → markdown / text / HTML via KeiRouter /v1/web/fetch using Firecrawl / Tavily Extract / Exa Contents. Use when the user…
Web search via KeiRouter /v1/search using Tavily / Exa / Brave Search / Serper. Use when the user wants to search the web, look…