tinyhumansai/openhuman · error
Playwright daemon exited without a response
Error message
Playwright daemon exited without a response
What it means
read_response got EOF from the daemon's stdout: read_line returned 0 bytes, meaning the Playwright daemon process exited before producing a response for the pending request.
Source
Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:233
.context("Failed to terminate Playwright request")?;
daemon
.stdin
.flush()
.await
.context("Failed to flush Playwright request")?;
Ok(())
}
async fn read_response(daemon: &mut PlaywrightDaemon) -> Result<PlaywrightResponse> {
tracing::trace!("[browser::playwright] reading response from daemon");
let mut line = String::new();
let read = daemon
.stdout
.read_line(&mut line)
.await
.context("Failed to read Playwright stdout")?;
if read == 0 {
anyhow::bail!("Playwright daemon exited without a response");
}
tracing::trace!("[browser::playwright] received response from daemon");
serde_json::from_str(&line).context("Playwright daemon returned invalid JSON")
}
async fn start_daemon(headless: bool) -> Result<PlaywrightDaemon> {
tracing::debug!(
headless,
"[browser::playwright] spawning playwright backend daemon"
);
let mut command = node_command();
command
.arg("-e")
.arg(RUNNER_JS)
.env(
"OPENHUMAN_PLAYWRIGHT_HEADLESS",
if headless { "1" } else { "0" },
)View on GitHub (pinned to 7491200858)
Solutions
- Retry the action to spawn a new daemon
- Check daemon logs or stderr for a crash cause (missing Playwright install, bad Node version)
- Reinstall or repair the Playwright daemon if it exits immediately on every launch
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:233 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/d10fff9b13876ae1.
Report an issue: GitHub.