u14app/neo-chat

A local-first AI chat workspace for models, agents, skills, plugins, search, RAG, voice, memory, and artifacts.

TypeScript

1,873

332 commits

updated Oct 16, 2026

See the code

README

Neo Chat logo

Neo Chat

Your models. Your knowledge. Your workspace.

English · 简体中文

CI MIT License

Neo Chat brings multi-model chat, agents, and deep research into a self-hostable workspace. Connect your own model providers, work with your files, and keep your conversation history in your browser by default.

Neo Chat desktop interface

Mobile preview

Neo Chat mobile interface

Why Neo Chat?

  • Your choice of models. Google, OpenAI, Anthropic, and OpenAI-compatible endpoints, with image input and generation where supported.
  • Chat, act, research. Everyday conversations, an Agent mode for multi-step tool workflows, and Deep Research with reviewable plans, cited reports, and manual resume.
  • A workspace for your knowledge. File attachments, knowledge-base retrieval, local search, memory, and reusable assistant presets.
  • Extend it your way. Text Skills, OpenAPI plugins, remote MCP servers, and an optional Docker bridge for local MCP tools.
  • More than text. Voice, editable artifacts, Markdown, math, diagrams, and interactive charts with export controls.
  • Intelligent UI. Local checklists, comparisons, forms, quizzes with wrong-answer practice, flashcards, calculators and charts, plus borderless HTML interfaces with HTTPS media/CDN assets and explicit AI chat buttons. Chat follow-ups receive interface source and reported visible results. A persistent viewer preserves saved progress across inline and expanded views; host actions stage editable explanation, revision and supported repair requests. Linked exploration connects typed data, charts and calculations, including bounded v2 multi-chart layouts; supported tool results offer selection and confirmed local drafts. Source versions remain traceable. An experimental MCP Apps display host is off by default and requires a separate sandbox. Learning progress stays in the current conversation; sharing includes your inputs only when selected. Usage and HTML release limits.
  • Local-first data. Browser storage by default, ZIP backup and restore, and optional end-to-end encrypted sync through WebDAV or S3/MinIO.

The interface supports English, Simplified Chinese, and Japanese, with responsive desktop and mobile layouts.

See the changelog for release notes and the roadmap for planned work.

Quick start

Run locally

Requires Node.js 24 and pnpm 10.30.3 (via Corepack).

git clone https://github.com/u14app/neo-chat.git
cd neo-chat
corepack pnpm install --frozen-lockfile
corepack pnpm dev

Open localhost:3000, add a model provider and API key in Settings, then start a conversation.

Most options are available in the app. To configure deployment-wide defaults, copy .env.example to .env.local and follow the environment variable reference.

Try with Docker

Run the official image without a source checkout:

docker run --rm -p 127.0.0.1:3000:3000 \
  -e ACCESS_PASSWORD='replace-with-a-strong-password' \
  -e BYOK_ALLOW_EPHEMERAL_KEY=true \
  ghcr.io/u14app/neo-chat:latest

Open localhost:3000 and enter your access password. This local example uses ephemeral credential-encryption keys; configure stable BYOK keys before production use to avoid key rollover across restarts and replicas.

Deploy

PlatformGetting started
DockerUse the official image; see the Compose setup.
VercelImport the repository with the Next.js preset and the default output directory.
Cloudflare WorkersRun corepack pnpm build:worker, then corepack pnpm deploy:worker. The deploy script preserves dashboard variables with --keep-vars.

Before production deployment, follow the deployment guide to configure stable BYOK keys, access protection, and shared runtime stores. A single hosted process has temporary-key and in-memory rate-limit fallbacks; public multi-instance deployments should use stable keys and shared stores.

Your data

Conversations and workspace files stay in browser storage by default. Requests send the necessary content to the model providers and services you use, usually through the app's API routes. Local-first storage does not mean inference runs offline.

Encrypted sync is optional. Backups exclude credentials and external service data; Research extensions such as custom templates, steering, and report Q&A are currently browser-local and excluded from both ZIP backups and encrypted sync.

Agent and Research runs are orchestrated in the foreground. Closing the page interrupts execution; saved runs require explicit resume. The deployment password is an access gate, not a multi-user account system.

Read more about privacy and local data, encrypted sync, and security.

Documentation

Browse the documentation hub, or jump to a guide below.

GuideWhat you'll find
ConfigurationModel providers, search, RAG, voice, and server defaults
DeploymentDocker, Vercel, Cloudflare Workers, and production setup
Agent runtimeTools, permissions, workspaces, and execution recovery
Deep ResearchTemplates, sources, steering, and report Q&A
Plugin developmentBuild and integrate tools
Local MCP bridgeConnect allowlisted stdio servers through Docker
Conversation sharingPublish, update, expire, and revoke read-only snapshots
Offline modePWA installation and available offline features
Reliability and safetyRuntime boundaries, failure handling, and recovery

Contributing

Contributions, bug reports, and focused improvements are welcome. Start with CONTRIBUTING.md for setup, checks, and pull request guidance. Please follow the Code of Conduct, and report vulnerabilities through the Security Policy.

Built with Next.js, React, TypeScript, and Zustand. Common development commands:

corepack pnpm dev        # Start the development server
corepack pnpm lint       # Run ESLint
corepack pnpm typecheck  # Check TypeScript
corepack pnpm test       # Run Vitest
corepack pnpm build      # Create a production build

Community

Join the conversation on LinuxDo, or open an issue for a bug report or feature request.

Looking for the original Gemini-only project? It is archived on the gemini-next-chat branch.

License

MIT

ai
ai-chat
gemini
openai
skills

u14app/neo-chat

A local-first AI chat workspace for models, agents, skills, plugins, search, RAG, voice, memory, and artifacts.

TypeScript

1,873

332 commits

updated Oct 16, 2026

See the code

README

Neo Chat logo

Neo Chat

Your models. Your knowledge. Your workspace.

English · 简体中文

CI MIT License

Neo Chat brings multi-model chat, agents, and deep research into a self-hostable workspace. Connect your own model providers, work with your files, and keep your conversation history in your browser by default.

Neo Chat desktop interface

Mobile preview

Neo Chat mobile interface

Why Neo Chat?

  • Your choice of models. Google, OpenAI, Anthropic, and OpenAI-compatible endpoints, with image input and generation where supported.
  • Chat, act, research. Everyday conversations, an Agent mode for multi-step tool workflows, and Deep Research with reviewable plans, cited reports, and manual resume.
  • A workspace for your knowledge. File attachments, knowledge-base retrieval, local search, memory, and reusable assistant presets.
  • Extend it your way. Text Skills, OpenAPI plugins, remote MCP servers, and an optional Docker bridge for local MCP tools.
  • More than text. Voice, editable artifacts, Markdown, math, diagrams, and interactive charts with export controls.
  • Intelligent UI. Local checklists, comparisons, forms, quizzes with wrong-answer practice, flashcards, calculators and charts, plus borderless HTML interfaces with HTTPS media/CDN assets and explicit AI chat buttons. Chat follow-ups receive interface source and reported visible results. A persistent viewer preserves saved progress across inline and expanded views; host actions stage editable explanation, revision and supported repair requests. Linked exploration connects typed data, charts and calculations, including bounded v2 multi-chart layouts; supported tool results offer selection and confirmed local drafts. Source versions remain traceable. An experimental MCP Apps display host is off by default and requires a separate sandbox. Learning progress stays in the current conversation; sharing includes your inputs only when selected. Usage and HTML release limits.
  • Local-first data. Browser storage by default, ZIP backup and restore, and optional end-to-end encrypted sync through WebDAV or S3/MinIO.

The interface supports English, Simplified Chinese, and Japanese, with responsive desktop and mobile layouts.

See the changelog for release notes and the roadmap for planned work.

Quick start

Run locally

Requires Node.js 24 and pnpm 10.30.3 (via Corepack).

git clone https://github.com/u14app/neo-chat.git
cd neo-chat
corepack pnpm install --frozen-lockfile
corepack pnpm dev

Open localhost:3000, add a model provider and API key in Settings, then start a conversation.

Most options are available in the app. To configure deployment-wide defaults, copy .env.example to .env.local and follow the environment variable reference.

Try with Docker

Run the official image without a source checkout:

docker run --rm -p 127.0.0.1:3000:3000 \
  -e ACCESS_PASSWORD='replace-with-a-strong-password' \
  -e BYOK_ALLOW_EPHEMERAL_KEY=true \
  ghcr.io/u14app/neo-chat:latest

Open localhost:3000 and enter your access password. This local example uses ephemeral credential-encryption keys; configure stable BYOK keys before production use to avoid key rollover across restarts and replicas.

Deploy

PlatformGetting started
DockerUse the official image; see the Compose setup.
VercelImport the repository with the Next.js preset and the default output directory.
Cloudflare WorkersRun corepack pnpm build:worker, then corepack pnpm deploy:worker. The deploy script preserves dashboard variables with --keep-vars.

Before production deployment, follow the deployment guide to configure stable BYOK keys, access protection, and shared runtime stores. A single hosted process has temporary-key and in-memory rate-limit fallbacks; public multi-instance deployments should use stable keys and shared stores.

Your data

Conversations and workspace files stay in browser storage by default. Requests send the necessary content to the model providers and services you use, usually through the app's API routes. Local-first storage does not mean inference runs offline.

Encrypted sync is optional. Backups exclude credentials and external service data; Research extensions such as custom templates, steering, and report Q&A are currently browser-local and excluded from both ZIP backups and encrypted sync.

Agent and Research runs are orchestrated in the foreground. Closing the page interrupts execution; saved runs require explicit resume. The deployment password is an access gate, not a multi-user account system.

Read more about privacy and local data, encrypted sync, and security.

Documentation

Browse the documentation hub, or jump to a guide below.

GuideWhat you'll find
ConfigurationModel providers, search, RAG, voice, and server defaults
DeploymentDocker, Vercel, Cloudflare Workers, and production setup
Agent runtimeTools, permissions, workspaces, and execution recovery
Deep ResearchTemplates, sources, steering, and report Q&A
Plugin developmentBuild and integrate tools
Local MCP bridgeConnect allowlisted stdio servers through Docker
Conversation sharingPublish, update, expire, and revoke read-only snapshots
Offline modePWA installation and available offline features
Reliability and safetyRuntime boundaries, failure handling, and recovery

Contributing

Contributions, bug reports, and focused improvements are welcome. Start with CONTRIBUTING.md for setup, checks, and pull request guidance. Please follow the Code of Conduct, and report vulnerabilities through the Security Policy.

Built with Next.js, React, TypeScript, and Zustand. Common development commands:

corepack pnpm dev        # Start the development server
corepack pnpm lint       # Run ESLint
corepack pnpm typecheck  # Check TypeScript
corepack pnpm test       # Run Vitest
corepack pnpm build      # Create a production build

Community

Join the conversation on LinuxDo, or open an issue for a bug report or feature request.

Looking for the original Gemini-only project? It is archived on the gemini-next-chat branch.

License

MIT

ai
ai-chat
gemini
openai
skills

Significant stargazers

CanisMinor

892 followers · starred May 2024

颜泽

1 followers · starred May 2024

风少1227

59 followers · starred Jul 2026

mikey

79 followers · starred May 2025