OPEN SOURCE

TheshadcnforAI.

Open-source, SDK-agnostic AI tools and agents. Install with one command. Own the source code. Ship faster.

npx better-registry add exa-search
Read the DocsTry Playground

Built for Vercel AI SDK & TanStack AI

Vercel AI SDKTanStack AIOpenAIAnthropicGoogle AIMistralGroqCohere
1Tool available
0AgentsSOON
2SDK adapters
100%Open source
HOW IT WORKS

Three commands to superpowers.

From zero to AI-powered in under a minute.

01

Install the CLI

npx better-registry init

Initialize your project configuration. Detects your AI SDK and sets up imports.

02

Add a tool

npx better-registry add exa-search

Browse the registry and add any tool. Source code is copied directly into your project - you own it.

03

Build with it

import { createExaWebSearchTool } from "./tools/exa";

Import and use. Works with your existing AI SDK setup. Customize anything - it's your code now.

WHY BETTER-REGISTRY

Built different.

Everything you need to ship AI features, nothing you don't.

SDK-Agnostic Architecture

Pure logic core with adapter layers. Write tools once, use them with Vercel AI SDK, TanStack AI, or any future framework. No lock-in, ever.

Core
Adapter
Your SDK

You Own the Code

Like shadcn, tools are copied into your project. Read it, modify it, extend it. No black boxes, no hidden API calls.

One Command Install

npx better-registry add [tool]. That's it. No config files, no build steps, no dependency hell.

Fully Type-Safe

Zod schemas, TypeScript-first. Every tool input and output is validated and typed. Your IDE knows everything.

Composable & Extensible

Tools are modular building blocks. Compose them into agents, chain them together, or use them standalone.

Battle-Tested

Error handling, timeouts, retries, input validation. Production-grade from day one. Built with Effect for robust error handling.

SEE IT IN ACTION

One tool. Every SDK.

The same Exa web search tool works everywhere. Pick your SDK, get the right adapter.

Start with the core. Zero dependencies, zero framework opinions. Just a typed async function that calls Exa's API. Use it in any JavaScript runtime - Node, Deno, Bun, edge functions.

core.ts
import { webSearch } from "@ai-registry/exa/core";

const results = await webSearch(
  { query: "latest AI research" },
  { numResults: 5, type: "neural" }
);

console.log(results.results[0].title);
TOOL REGISTRY

Tools that extend your AI.

Pre-built, tested, SDK-agnostic functions. Install, customize, ship.

AVAILABLE

exa-search

@ai-registry/exa

Neural and keyword web search powered by Exa. Includes content scraping, highlights, and summaries.

web-searchneuralscraping
npx better-registry add exa-search
COMING SOON

firecrawl-scrape

Web scraping and crawling powered by Firecrawl. Extract clean content from any URL.

scrapingcrawling
COMING SOON

tavily-search

AI-optimized web search via Tavily. Built for RAG and agent workflows.

web-searchrag
COMING SOON

e2b-sandbox

Secure code execution sandbox powered by E2B. Run untrusted code safely.

code-execsandbox
COMING SOON

browserbase-browse

AI-powered web browsing via Browserbase. Navigate, click, extract.

browsingautomation
COMING SOON

resend-email

Send transactional emails through Resend. Perfect for AI notification workflows.

emailnotifications
AGENT REGISTRY

Agents that think for you.

Pre-configured LLM + tool loop combinations for complex workflows. Install a complete agent with one command.

COMING SOON
Search
Analyze
Report
LLM
COMING SOON

Research Agent

Deep research agent that searches, reads, synthesizes, and produces structured reports.

COMING SOON

Coding Agent

Code generation agent with web search, documentation lookup, and iterative refinement.

COMING SOON

Data Agent

Extract, transform, and analyze data from multiple sources with natural language.

Want to be notified when agents launch? Star us on GitHub

SDK ADAPTERS

Same tool. Your framework.

Every tool ships with adapters for the SDKs you already use. The core logic is identical — only the wrapper changes.

vercel-ai-sdk.ts
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { createExaWebSearchTool } from "@ai-registry/exa";

const { text } = await generateText({
  model: openai("gpt-4o-mini"),
  tools: {
    webSearch: createExaWebSearchTool(),
  },
  prompt: "Find recent AI papers",
});
tanstack-ai.ts
import { chat } from "@tanstack/ai";
import { openaiText } from "@tanstack/ai-openai";
import {
  createTanstackExaWebSearchTool
} from "@ai-registry/exa/tanstack-ai";

const result = chat({
  adapter: openaiText("gpt-4o-mini"),
  tools: [createTanstackExaWebSearchTool()],
  messages: [
    { role: "user", content: "Find recent AI papers" }
  ],
});

// Both adapters call the same core function under the hood:

import { webSearch } from "@ai-registry/exa/core";

Stop building AI tools
from scratch.

Install. Customize. Ship. The registry is open source and growing.

$ npx better-registry add exa-search