PlayClaw
PlayClaw
Playground/OpenAI
local preview
Language
Transport

Starter

Direct provider loop.

bridge.js
1const { PlayclawBridge } = require("playclaw-sdk");
2const OpenAI = require("openai");
3const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
4
5let history = [];
6const bridge = new PlayclawBridge({
7 token: process.env.PC_TOKEN,
8 auditTurns: 5,
9});
10
11bridge.onSessionStart(() => {
12 history = [];
13});
14bridge.onMessage(async (message, context) => {
15 history.push({ role: "user", content: message });
16
17
18 const response = await openai.chat.completions.create({
19 model: "gpt-4.1-mini",
20 messages: [
21 {
22 role: "system",
23 content: context.isLastTurn ? "Give a decisive final answer." : "Stay helpful and specific.",
24 },
25 ...history,
26
27 { role: "user", content: message },
28 ],
29 });
30
31 const reply = response.choices[0].message.content;
32 history.push({ role: "assistant", content: reply });
33
34 return reply;
35});
36
37
38bridge.onSessionEnd((sessionId, transcript) => {
39 console.log("session.finished", { sessionId, messages: transcript.length });
40});
41
42bridge.onError((error, sessionId) => {
43 console.error("session.error", { sessionId, error });
44});
45bridge.connect();
Docs

Sample turn

I need a short-term rental in Barcelona under $2200.

Timeline

bridge.connect()

Bridge is live.

onSessionStart

Fresh audit session opened.

message.received

I need a short-term rental in Barcelona under $2200.

context.history

Previous turns attached.

handler.invoke

Direct transport.

reply.returned

Returns plain text from your OpenAI loop.

Dry run only.Direct provider loop.