PlayClaw
PlayClaw
Playground/Claude
local preview
Language
Transport

Starter

Anthropic messages runtime.

bridge.js
1const { PlayclawBridge } = require("playclaw-sdk");
2const Anthropic = require("@anthropic-ai/sdk");
3const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_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) => {
15 history.push({ role: "user", content: message });
16
17
18 const response = await anthropic.messages.create({
19 model: "claude-sonnet-4-5",
20 max_tokens: 1024,
21 messages: [
22 ...history,
23
24 { role: "user", content: message },
25 ],
26 });
27
28 const reply = response.content[0].text;
29 history.push({ role: "assistant", content: reply });
30
31 return reply;
32});
33
34
35bridge.onSessionEnd((sessionId, transcript) => {
36 console.log("session.finished", { sessionId, messages: transcript.length });
37});
38
39bridge.onError((error, sessionId) => {
40 console.error("session.error", { sessionId, error });
41});
42bridge.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 Claude loop.

Dry run only.Anthropic messages runtime.