Adapters

Title generation adapters for React Ink.

Adapters customize how the local runtime generates titles. Pass them to useLocalRuntime via options.

import { useLocalRuntime, createSimpleTitleAdapter } from "@assistant-ui/react-ink";

const runtime = useLocalRuntime(chatModel, {
  titleGenerator: createSimpleTitleAdapter(),
});

TitleGenerationAdapter

Generates a title for a thread based on its messages. Pass via the titleGenerator option on useLocalRuntime.

interface TitleGenerationAdapter {
  generateTitle(messages: ThreadMessage[]): Promise<string>;
}

Custom implementation

import type { TitleGenerationAdapter } from "@assistant-ui/react-ink";

const aiTitleGenerator: TitleGenerationAdapter = {
  async generateTitle(messages) {
    const response = await fetch("http://localhost:3000/api/generate-title", {
      method: "POST",
      body: JSON.stringify({ messages }),
    });
    const { title } = await response.json();
    return title;
  },
};

const runtime = useLocalRuntime(chatModel, {
  titleGenerator: aiTitleGenerator,
});

Which option to choose?

ChatModelAdapter + useLocalRuntimeRemoteThreadListAdapter + useRemoteThreadListRuntime
Thread storageIn-memoryYour backend
Message storageIn-memoryIn-memory (can add history adapter for server-side)
Cross-session persistenceNoYes
Setup complexityMinimalModerate
Best forCLI tools, demos, prototypesProduction apps with persistence