{"slug": "show-hn-interakt-open-source-self-hosted-search-and-ai-chat-for-your-website", "title": "Show HN: Interakt – open-source self-hosted search and AI chat for your website", "summary": "Alpha Solutions released Interakt, an MIT-licensed open-source, self-hosted search and AI chat platform for websites, available via git clone from its GitHub repository. Interakt combines hybrid keyword and vector search on Elasticsearch 9 or Azure AI Search with grounded chat pipelines, MCP server support, and bring-your-own-model options including OpenAI, OpenAI-compatible endpoints, and Ollama, requiring Node.js 24 and Docker. The platform ships drop-in Preact and Shadow DOM widgets, versioned prompts, and a separate analytics database, and Alpha Solutions runs it on Azure Container Apps.", "body_md": "**Open-source, self-hosted search and AI chat for your website, grounded in your own data.**\n\n[Website](https://interakt.app) · [Documentation](https://docs.interakt.app) · [API Reference](https://docs.interakt.app/api/) · [Integrations](https://docs.interakt.app/integrations/) · [Discussions](https://github.com/alphasolutionsrepo/interakt/discussions)\n\nInterakt puts a search box and a chat window in front of your users without you assembling the pieces yourself. Point it at your data, decide how it should behave in the admin dashboard, and paste a snippet into your site.\n\nUnderneath is a curated stack: a search engine, an AI provider, a chat pipeline, a versioned prompt library and an analytics database. You see one dashboard, one API and two widgets.\n\n- **Search that understands intent.** Keyword, semantic or hybrid, with facets, synonyms, autocomplete and AI query understanding.\n- **Chat that knows your data.** Answers are grounded in your indexes through tools, streamed, with optional citations, and kept on topic by guardrails.\n- **Analytics that show what works.** Search events, chat sessions and execution traces land in a separate analytics database, with dashboards and an analytics assistant.\n\n| <sub>**Backend setup** From `git clone` to localhost:3000</sub> | <sub>**AI search and a sales assistant** Interakt on a Medusa storefront</sub> | <sub>**Managing the integration** The admin side of the Medusa setup</sub> | \n\n| 🔍 **Hybrid search** Keyword and vector results fused with reciprocal rank fusion, on Elasticsearch 9 or Azure AI Search. Facets, sorting, synonyms and stop words per index. | 💬 **Grounded chat** A deterministic pipeline (plan → retrieve → synthesize) or an agentic loop, chosen per experience. Streaming responses, with optional inline or footnote citations. | \n| 🧩 **Tools and MCP** Every index ships with search, lookup, inspect and enumerate tools. Add custom HTTP tools, or connect MCP servers over Streamable HTTP or SSE. | 🧠 **Bring your own model** OpenAI, OpenAI-compatible endpoints through a custom base URL, or Ollama for fully local inference. Choose the provider per experience. | \n| 📦 **Drop-in widgets** Preact and Shadow DOM, loaded from a single script bundle. Search and chat widgets that work on any site, no framework required. | 📝 **Versioned prompts** Every pipeline step is an editable template with history and rollback. Tune behaviour without redeploying. | \n| 🛡️ **Guardrails and credentials** Topic gating and greeting detection. Read-only public access tokens, server-side ingestion keys, and an encrypted secrets vault. | 🏠 **Self-hosted** One Docker image, Postgres with pgvector, and Elasticsearch or Azure AI Search. Runs wherever Docker runs; Alpha Solutions runs it on Azure Container Apps. MIT licensed. | \n\n``` php\nflowchart LR\n  D[\"Your data<br/>catalog · docs · CMS · files\"] --> IX[\"Search index\"]\n  IX --> SE[\"Search experience\"]\n  IX -- \"tools\" --> AE[\"AI chat experience\"]\n  T[\"Custom HTTP tools · MCP servers\"] --> AE\n  SE --> W[\"Widgets · REST API\"]\n  AE --> W\n  W --> Y[\"Your website\"]\n  IX -.-> ES[(\"Elasticsearch or<br/>Azure AI Search\")]\n  AE -.-> LLM[(\"OpenAI · Ollama\")]\n```\n\nYou connect a data source, populate a search index, then build one or more experiences on top of it. The chat experience calls the search tools to answer from your data. The [architecture overview](https://docs.interakt.app/getting-started/architecture/) has the full picture.\n\nNeeds Node.js 24 and Docker. Prefer to watch? The [backend setup video](https://www.youtube.com/watch?v=oxcFsP9UGiY) walks through these steps.\n\n```\ngit clone https://github.com/alphasolutionsrepo/interakt.git\ncd interakt/backend\n\ncp .env.example .env                                         # fill in the three generated secrets at the top\ncp setup/setup.config.example.yaml setup/setup.config.yaml   # set your admin email and password\n\nnpm install\nnpm run infra:up     # Postgres (pgvector) and Elasticsearch in Docker\nnpm run dev          # migrates, seeds, creates the admin user → http://localhost:3000\n```\n\nSign in and open **Platform → Initial Setup**. Connect an AI provider (Ollama is free and local), then load the **Fashion Catalog** demo: a populated index plus ready-made search and chat experiences with access tokens. Point the reference app in [`demo-site/`](https://github.com/alphasolutionsrepo/interakt/blob/main/demo-site) at it, or embed the widget below.\n\nThe full walkthrough, scripts and bring-your-own-database notes are in [CONTRIBUTING.md](https://github.com/alphasolutionsrepo/interakt/blob/main/CONTRIBUTING.md#local-development). Hosting notes are in [backend/docker/](https://github.com/alphasolutionsrepo/interakt/blob/main/backend/docker/README.md).\n\n```\n<div id=\"chat\"></div>\n<script src=\"https://your-interakt-host/embed/v1/widgets.js\"></script>\n<script>\n  window.ChatDropinUI.init({\n    containerId: 'chat',\n    accessToken: '<access token from the admin UI>',\n  });\n</script>\n```\n\nUse `SearchDropinUI` for the search widget. The admin UI generates the exact snippet for each experience, and the [widget docs](https://docs.interakt.app/concepts/embed-widgets/) cover launcher modes, placement and theming.\n\n```\n# Search through a search experience\ncurl -X POST https://your-interakt-host/api/v1/search/<experience-slug>/search \\\n  -H \"Authorization: Bearer <access token>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"query\": \"waterproof trail shoes\" }'\n\n# Chat through an AI experience (streams server-sent events)\ncurl -N -X POST https://your-interakt-host/api/v1/ai-experiences/<experience-slug>/chat \\\n  -H \"Authorization: Bearer <access token>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"message\": \"Which of these run true to size?\" }'\n```\n\nAccess tokens are issued per experience and are public and read-only by design. Writing documents into an index uses a server-side **ingestion key** instead. See the [search](https://docs.interakt.app/guides/call-the-search-api/), [chat](https://docs.interakt.app/guides/call-the-chat-api/) and [ingestion](https://docs.interakt.app/guides/ingestion-api-reference/) guides, or the full [API reference](https://docs.interakt.app/api/).\n\nStep-by-step guides for [Medusa](https://docs.interakt.app/integrations/ecommerce/medusa/how-to-integrate-interakt-with-medusa/), [Storyblok](https://docs.interakt.app/integrations/cms-dxp/storyblok/how-to-integrate-interakt-with-storyblok/) and [React / Next.js](https://docs.interakt.app/integrations/frontend/react-nextjs/). The [Interakt-Medusa](https://github.com/alphasolutionsrepo/Interakt-Medusa) repository is the demo storefront that guide is built on.\n\n```\ninterakt/\n├── backend/               Admin dashboard + REST APIs · Next.js 16, Drizzle, Postgres + pgvector\n│   ├── widgets/           Embeddable search and chat widgets · Preact, built to public/embed/v1/widgets.js\n│   ├── docker/            Production Dockerfile + local docker-compose (Postgres, pgAdmin, Elasticsearch)\n│   └── src/content/docs/  The documentation, served in-app at /docs and published to docs.interakt.app\n├── demo-site/             Reference consumer app on port 3001\n└── docs-site/             Docusaurus + Redocusaurus shell for docs.interakt.app\n```\n\nContributions are welcome. [CONTRIBUTING.md](https://github.com/alphasolutionsrepo/interakt/blob/main/CONTRIBUTING.md) covers local setup, conventions and how review works here. Found a bug or want a feature? [Open an issue](https://github.com/alphasolutionsrepo/interakt/issues/new/choose). Have a question? Start a [discussion](https://github.com/alphasolutionsrepo/interakt/discussions). For security issues, follow [SECURITY.md](https://github.com/alphasolutionsrepo/interakt/blob/main/SECURITY.md) and never open a public issue.\n\nThis project follows the [Contributor Covenant](https://github.com/alphasolutionsrepo/interakt/blob/main/CODE_OF_CONDUCT.md) code of conduct.", "url": "https://wpnews.pro/news/show-hn-interakt-open-source-self-hosted-search-and-ai-chat-for-your-website", "canonical_source": "https://github.com/alphasolutionsrepo/interakt", "published_at": "2026-09-16 21:01:06+00:00", "updated_at": "2026-09-16 21:25:17.083913+00:00", "lang": "en", "topics": ["ai-search", "ai-products", "ai-agents", "agent-protocols", "developer-tools"], "entities": ["Interakt", "Alpha Solutions", "Elasticsearch 9", "Azure AI Search", "OpenAI", "Ollama", "Medusa", "MCP"], "alternates": {"html": "https://wpnews.pro/news/show-hn-interakt-open-source-self-hosted-search-and-ai-chat-for-your-website", "markdown": "https://wpnews.pro/news/show-hn-interakt-open-source-self-hosted-search-and-ai-chat-for-your-website.md", "text": "https://wpnews.pro/news/show-hn-interakt-open-source-self-hosted-search-and-ai-chat-for-your-website.txt", "jsonld": "https://wpnews.pro/news/show-hn-interakt-open-source-self-hosted-search-and-ai-chat-for-your-website.jsonld"}}