API

SDK methods, REST endpoints, and custom storage adapter.

SDK API

typescript
// Returns the effective model ID (string) to pass to your AI SDK. Uses override if set, else fallback.
const modelId = await modelKit.getModel("feature-id", "anthropic/claude-3.5-sonnet");
// → e.g. "anthropic/claude-3.5-sonnet" or "anthropic/claude-opus-4" if overridden

// Set or update the runtime override for a feature. modelId required; temperature, maxTokens, topP, topK optional.
await modelKit.setOverride("feature-id", {
  modelId: "anthropic/claude-opus-4",
  temperature: 0.9,
  maxTokens: 4096,
});

// Returns the full override for a feature (modelId, temperature, maxTokens, etc.) or null if no override.
const config = await modelKit.getConfig("feature-id");
// → { modelId, temperature?, maxTokens?, ... } | null — use when you need params, not just the ID

await modelKit.listOverrides();   // All overrides: [{ featureId, override }, ...]
await modelKit.clearOverride("feature-id");   // Remove override; getModel will use fallback

REST API

Hono and Express routers expose:

GET /overrides List all
GET /overrides/:featureId Get one
POST /overrides/:featureId Set override
DELETE /overrides/:featureId Clear override

Custom Storage Adapter

typescript
import type { StorageAdapter } from "@benrobo/modelkit";

function createMyAdapter(): StorageAdapter {
  return {
    async get(featureId) { /* ... */ },
    async set(featureId, override) { /* ... */ },
    async delete(featureId) { /* ... */ },
    async list() { /* ... */ },
  };
}
const modelKit = createModelKit(createMyAdapter());