Skip to content

Getting Started

aibind provides universal AI SDK bindings for every major JavaScript framework. It wraps the Vercel AI SDK with reactive primitives native to your framework.

What You Get

  • Streaming text — Real-time text streaming with abort, retry, and resume
  • Structured output — Stream typed JSON with partial updates using any Standard Schema
  • Agents — Server-side tool-calling with streaming responses
  • Chat history — Branching conversation trees with edit/regenerate/navigate
  • Projects — Claude-like project context management
  • Markdown — Streaming markdown rendering with recovery for incomplete syntax

Quick Example (SvelteKit)

1. Install

bash
pnpm add @aibind/sveltekit ai @openrouter/ai-sdk-provider

2. Configure models (server)

ts
// src/models.server.ts
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
import { defineModels } from "@aibind/sveltekit";

const openrouter = createOpenRouter({
  apiKey: process.env.OPENROUTER_API_KEY!,
});

export const models = defineModels({
  fast: openrouter("google/gemini-3.1-flash-lite-preview"),
  smart: openrouter("openai/gpt-5-mini"),
});

3. Create the server handler

ts
// src/hooks.server.ts
import { createStreamHandler } from "@aibind/sveltekit/server";
import { models } from "./models.server";

export const handle = createStreamHandler({ models });

4. Use in your component

svelte
<script lang="ts">
  import { Stream } from '@aibind/sveltekit';

  const stream = new Stream({ model: 'fast' });
  let prompt = $state('');
</script>

<form onsubmit={(e) => { e.preventDefault(); stream.send(prompt); prompt = ''; }}>
  <input bind:value={prompt} placeholder="Ask something..." />
  <button disabled={stream.loading}>Send</button>
</form>

{#if stream.text}
  <div>{stream.text}</div>
{/if}

Next Steps

Released under the MIT License.