Thanks for your interest! openConcierge is an open-source, self-hosted AI concierge for customer support — an AI-native alternative to Intercom / Channel Talk.
Requires Docker (or a local Postgres 15+ with the pgvector extension) and Node 20+.
cp .env.example .env # set DATABASE_URL + ANTHROPIC_API_KEY + an embeddings key (for AI)
npm install
npm run db:migrate # apply db/migrations/*.sql + db/seed.sql (needs a pgvector Postgres)
npm run dev # http://localhost:3000Or docker compose up to run Postgres+pgvector and the app together.
npm run build— production build; also runs the TypeScript type-check. Please make sure it passes before opening a PR.npm run db:reset— drop + re-apply migrations + seed.- Migrations live in
db/migrations/; add a new timestamped file rather than editing an applied one.
The MVP is a deliberate wedge. Key decisions (do not casually undo):
- Single-tenant self-host (one
channelrow) — but every table keepschannel_idfor a future multi-tenant path. - Realtime is app-owned — Postgres
LISTEN/NOTIFYfanned out to browsers over SSE (/api/stream). All publishing goes throughsrc/lib/realtime.ts; clients only subscribe. No Supabase. - The widget is three frontends (loader IIFE → iframe SPA → desk), never one. See
public/loader.js+src/app/widget. - The AI answers only from indexed knowledge, with citations, and hands off to a human on low confidence (
src/lib/ai/).
- Branch from
main. - Keep changes focused; match the surrounding style (TypeScript, server actions in
src/actions/). - Ensure
npm run buildpasses. - Describe what you changed and how you tested it.
By contributing you agree your contributions are licensed under the MIT License.