Pick the package for where your code runs. Each one authenticates with a client key, talks to https://app.kelu.dev by default, and takes a baseUrl to point elsewhere.

@keluhq/widget

The website widget: one script tag, no build step.

@keluhq/react

The KeluChat panel and the useKeluChat hook.

@keluhq/sdk

The core client: chat, search and feedback for browsers, React Native and Node.js 18+.
@keluhq/sdk and @keluhq/react install from npm. The widget is not on npm: load it as the hosted script at https://widget.kelu.dev/kelu-widget.js.

Which one

  • A docs site or help centre: the widget.
  • A React app: @keluhq/react. The component for a finished panel, the hook for your own markup.
  • Any other JavaScript app, or a server: @keluhq/sdk.

Credentials

Where the code runsKeyOption
Browser, React Native, widgetPublic key kl_pk_…clientKey
Server (Node.js)Secret pair kl_ci_… + kl_cs_…clientId, clientSecret
Create both under the knowledge base’s Integrations → Client Keys. A key belongs to one knowledge base. The Developer SDKs tab beside it shows starter code with your knowledge base ID and a public key filled in. On app.kelu.dev, a public key also has to send a reCAPTCHA v3 token. The widget, @keluhq/sdk and @keluhq/react all get one for you in the browser: see CAPTCHA.
Never ship clientId and clientSecret in a browser or mobile app.