RootCXPlatformLogs
Real-time Logs
The Core captures stdout and stderr from backend processes and broadcasts them via an in-memory SSE channel. Ephemeral: logs are not persisted to disk.
Log Levels
| Level | Source |
|---|---|
stdout |
console.log() from the backend process. |
stderr |
console.error() from the backend process. |
system |
Core lifecycle events (start, stop, restart, crash). |
Using Studio
The Console panel shows live logs from all running backends. Logs stream in real time with color-coded levels. Use the Command Palette to clear the console.
Using Code
SSE Endpoint
GET /api/v1/apps/{appId}/logs
Authorization: Bearer <token>
Streams text/event-stream with JSON payloads:
{ "level": "stdout", "message": "RPC call received" }
{ "level": "stderr", "message": "Failed to connect" }
{ "level": "system", "message": "Worker restarted" }
Logging from Your Backend
// Standard output → broadcasts as [stdout]
console.log("Processing:", method);
// Standard error → broadcasts as [stderr]
console.error("Connection failed");
// Structured IPC log with custom level
process.stdout.write(JSON.stringify({
type: "log", level: "info", message: "Event occurred"
}) + "\n");
Client Example
const res = await fetch(`/api/v1/apps/myapp/logs`, {
headers: { Authorization: `Bearer ${token}` },
});
const reader = res.body!.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(decoder.decode(value));
}