replika-ai
v1.1.0
Published
Typed Replika WebSocket client with send-and-wait helpers.
Maintainers
Readme
replika-ai
Typed Node.js client for Replika's realtime WebSocket API. It wraps the raw socket frames the web client uses, adds tasteful defaults (typing bursts, reply waiting), and exposes a small helper you can use from bots, automations, or tests.
Install
npm install replika-aiThe library ships pre-compiled JavaScript (dist/) and TypeScript types.
Usage
import { ReplikaChatClient } from 'replika-ai';
const client = new ReplikaChatClient({
userId: process.env.REPLIKA_USER_ID!,
authToken: process.env.REPLIKA_AUTH_TOKEN!,
deviceId: process.env.REPLIKA_DEVICE_ID!,
chatId: process.env.REPLIKA_CHAT_ID!,
botId: process.env.REPLIKA_BOT_ID!,
});
await client.connect();
const history = await client.fetchHistory(50);
console.log('Last message:', history.messages.at(-1));
const reply = await client.sendTextAndAwaitReply('Hey Honey, how are you?', {
typingBursts: 4,
typingDelayMs: 400,
responseTimeoutMs: 20000,
});
console.log('Replika replied with:', reply.content?.text);
client.disconnect();Credentials
You need the same headers the official web client uses:
userId,authToken,deviceId– captured from a logged-in session.chatId,botId– the chat/bot you're talking to.
You can discover these by proxying the browser or using the included
npm run ws:test script together with environment variables.
Helper options
sendTextAndAwaitReply(text, options) supports:
| option | default | description |
| --- | --- | --- |
| typingBursts | 3 | How many text_input_detected events to send before the message. |
| typingDelayMs | 500 | Delay between typing bursts. |
| responseTimeoutMs | 15000 | Fail if no robot message arrives within this window. |
All helpers reject if the socket errors or times out, so you can wrap them in your retry/backoff logic of choice.
Development
npm install
npm run ws:test # requires REPLIKA_* env varsPublishing is handled by npm's prepare hook, which builds dist/ automatically.
