---
title: "Introduction"
description: "The prod-ready AI chat app"
seo:
  title: "Build Production-Ready AI Chat Applications"
  description: "Complete documentation for ChatJS, the production-ready AI chat app. Learn authentication, streaming, tool calling, multi-model support, and deployment best practices."
---

<img
  class="block dark:hidden"
  src="/docs/images/hero-light.png"
  alt="Hero Light"
/>
<img
  class="hidden dark:block"
  src="/docs/images/hero-dark.png"
  alt="Hero Dark"
/>

Stop rebuilding the same AI chat infrastructure. ChatJS gives you a production-ready foundation with authentication, hundreds of models via pluggable gateways, streaming, and tools so you can focus on what makes your app unique.

**[Live Demo](https://demo.chatjs.dev)**

See what you're building.

**[Get Started](/quickstart)**

Create, configure, deploy. Go from zero to production in minutes.

**[Web Platform](/platforms/web)**

Run ChatJS in the browser by default and deploy it like any Next.js app.

**[Desktop Platform](/platforms/desktop)**

Package the same app as a native macOS, Windows, or Linux desktop app.

## Why ChatJS?

Every AI chat app needs the same boring stuff: auth, message persistence, streaming, file uploads, model switching. You've probably built it before. Maybe twice.

ChatJS packages all of that into a single, well-architected codebase. Scaffold it, customize it, ship it.

```bash
npx @chat-js/cli@latest create my-app
```

## What's Included

**[Multi-Gateway](/core/multi-model)**

Hundreds of models via Vercel AI Gateway or OpenRouter

**[Auth](/core/authentication)**

GitHub, Google, anonymous. Ready to go.

**[Attachments](/features/attachments)**

Images, PDFs, docs. Drag and drop.

**[Resumable Streams](/cookbook/resumable-streams)**

Continue generation after page refresh

**[Branching](/features/branching)**

Fork conversations, explore alternatives

**[Syntax Highlighting](/core/syntax-highlighting)**

Beautiful code formatting with themes

**[Sharing](/features/sharing)**

Share conversations with public links

**[Web Search](/features/web-search)**

Real-time web search integration

**[Image Generation](/features/image-generation)**

AI-powered image creation built-in

**[MCP](/features/mcp)**

Model Context Protocol support

**[Projects](/features/projects)**

Organize chats into workspaces

**[Code Execution](/features/code-execution)**

Run Python and JavaScript in sandbox

## Stack

- [Next.js](https://nextjs.org) - App Router, React Server Components
- [TypeScript](https://www.typescriptlang.org) - Full type safety
- [AI SDK](https://ai-sdk.dev/) - The AI Toolkit for TypeScript
- [AI Gateway](https://vercel.com/ai-gateway) / [OpenRouter](https://openrouter.ai) - Pluggable multi-gateway for AI models
- [Better Auth](https://www.better-auth.com) - Authentication & authorization
- [Drizzle ORM](https://orm.drizzle.team) - Type-safe database queries
- [PostgreSQL](https://www.postgresql.org) - Primary database
- [Redis](https://redis.io) - Caching & resumable streams
- [Files SDK](https://files-sdk.dev) - Provider-agnostic file storage
- [Shadcn/UI](https://ui.shadcn.com) - Beautiful, accessible components
- [Tailwind CSS](https://tailwindcss.com) - Styling
- [tRPC](https://trpc.io) - End-to-end type-safe APIs
- [Zod](https://zod.dev) - Schema validation
- [Zustand](https://docs.pmnd.rs/zustand) - State management
- [Motion](https://motion.dev) - Animations
- [t3-env](https://env.t3.gg) - Environment variables
- [Pino](https://getpino.io) - Structured Logging
- [Langfuse](https://langfuse.com) - LLM observability & analytics
- [Vercel Analytics](https://vercel.com/analytics) - Web analytics
- [Oxlint and Oxfmt](https://oxc.rs) - Code linting and formatting
- [Ultracite](https://ultracite.ai) - Oxlint and Oxfmt presets for humans and AI
- [Streamdown](https://streamdown.ai/) - Markdown for AI streaming
- [AI Elements](https://ai-sdk.dev/elements/overview) - AI-native Components
- [AI SDK Tools](https://ai-sdk-tools.dev/) - Developer tools for AI SDK
- [`@chat-js/thread`](./threads) - Branching conversations with a `useChat`-compatible interface
