Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
FranciscoMoretti/chat-js: Production-ready AI chat. Start here and make it your own. Formerly Sparka AI

FranciscoMoretti/chat-js: Production-ready AI chat. Start here and make it your own. Formerly Sparka AI

15 hours ago

ChatJS

ChatJS

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

Website · Live Demo · Documentation

!DemosOnly


CLI

Create a new ChatJS app:

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

The CLI walks you through gateway, features, and auth choices, generates chat.config.ts, and lists the env vars required by your selections.

Features

  • 120+ Models: Claude, GPT, Gemini, Grok via one API
  • Auth: GitHub, Google, anonymous. Ready to go.
  • Attachments: Images, PDFs, docs. Drag and drop.
  • Resumable Streams: Continue generation after page refresh
  • Branching: Fork conversations, explore alternatives
  • Sharing: Share conversations with public links
  • Web Search: Real-time web search integration
  • Image Generation: AI-powered image creation
  • Code Execution: Run code snippets in sandbox
  • MCP: Model Context Protocol support
  • Desktop App: Package as a native macOS, Windows, or Linux app with Electron

Stack

Monorepo Layout

Development

  • bun dev: run chat app
  • bun dev:info: print this worktree's assigned app URLs
  • bun dev:docs: run docs
  • bun lint: check repository-wide Oxlint rules and Oxfmt formatting, plus docs health
  • bun format: format the repository with Oxfmt
  • bun lint:fix: apply safe Oxlint fixes
  • bun test:types: type-check the workspaces
Ultracite supplies the Oxlint and Oxfmt presets. The oxlint-baseline.json files temporarily disable existing violations by file and rule; remove entries as the code is cleaned up. New files receive the full presets. Oxfmt skips build output and the five generated registration indexes whose exact content hashes are verified by chat-js sync.

Set CHATJS_DEV_SLOT in .env.worktree.local to reserve a stable range of ten ports per worktree. Within each range, chat uses offset 0, Electron uses 1, and the site uses 2, as configured in .worktree-env.json. The local file is ignored by Git and kept separate from Vercel-managed .env.local. Run bun dev:info instead of assuming a port.

Releases

Releases are driven by Changesets for the whole repository.

  • Add a changeset for each releasable package you change.
  • Merge the generated version PR from the Changesets workflow.
  • Public packages such as @chat-js/cli publish to npm.
  • Desktop installers for @chat-js/electron publish to GitHub Releases.

License

Apache-2.0


Vercel OSS Program

Chat with me