Real-time AI communication ยท ws://localhost:3210/ws
Persistent connection โ send multiple messages without reconnecting.
// JavaScript
const ws = new WebSocket("ws://localhost:3210/ws");
ws.onopen = () => console.log("Connected!");
ws.onmessage = (e) => console.log(JSON.parse(e.data));
// Send a message
ws.send(JSON.stringify({
action: "ask",
model: "claude",
message: "What is AI?"
}));
{
"action": "ask",
"model": "claude",
"message": "What is AI?",
"id": "optional-request-id"
}
// Status update
{"type":"status","id":"req_1","status":"processing"}
// Response
{"type":"response","id":"req_1",
"content":"AI is...",
"model":"claude",
"responseTimeMs":5420}
// Error
{"type":"error","id":"req_1",
"error":"Provider unavailable"}
// Ask specific provider
{"action":"ask","model":"claude",
"message":"Write a haiku"}
// Auto-pick best
{"action":"ask",
"message":"Hello world"}
{"action":"search",
"query":"Latest AI news 2026"}
// Generate
{"action":"code",
"description":"Sort algorithm",
"language":"Python"}
// Review
{"action":"code","subaction":"review",
"description":"def fib(n):..."}
{"action":"translate",
"text":"Hello world",
"to":"Hindi"}
{"action":"brainstorm",
"topic":"AI startup ideas"}
{"action":"debate",
"topic":"Is AI dangerous?"}
{"action":"audit",
"code":"app.get('/user',
(req,res)=>db.query(
'SELECT * WHERE id='+req.id))"}
{"action":"ping"}
// โ {"type":"pong"}
{"action":"stats"}
// โ {"type":"stats","data":{...}}
const ws = new WebSocket("ws://localhost:3210/ws");
ws.onmessage = (e) => {
const msg = JSON.parse(e.data);
if (msg.type === 'response') {
console.log(msg.content);
}
};
ws.onopen = () => {
ws.send(JSON.stringify({
action: "ask",
model: "claude",
message: "Explain AI"
}));
};
import websocket, json
ws = websocket.create_connection(
"ws://localhost:3210/ws"
)
# Send
ws.send(json.dumps({
"action": "ask",
"model": "claude",
"message": "What is AI?"
}))
# Receive
result = json.loads(ws.recv()) # status
result = json.loads(ws.recv()) # response
print(result["content"])