{"record":{"id":"373310e388aa5b5f","repo":"sxyazi/yazi","slug":"no-receiver-found-check-if-any-receivers-are-runn","errorCode":null,"errorMessage":"No receiver found. Check if any receivers are running.","messagePattern":"No receiver found\\. Check if any receivers are running\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"yazi-cli/src/dds/shot.rs","lineNumber":62,"sourceCode":"\t\tOk(())\n\t}\n\n\tpub(super) fn ensure_version(version: Option<&str>) -> Result<()> {\n\t\tif version != Some(yazi_version::version()) {\n\t\t\tbail!(\n\t\t\t\t\"Incompatible version (Ya {}, Yazi {}). Restart all `ya` and `yazi` processes if you upgraded either.\",\n\t\t\t\tyazi_version::version(),\n\t\t\t\tversion.unwrap_or(\"Unknown\")\n\t\t\t);\n\t\t}\n\t\tOk(())\n\t}\n\n\tpub(super) fn ensure_ability(peers: &HashMap<Id, Peer>, kind: &str, receiver: Id) -> Result<()> {\n\t\tmatch (receiver, peers.get(&receiver).map(|p| p.able(kind))) {\n\t\t\t// Send to all receivers\n\t\t\t(Id::ZERO, _) if peers.is_empty() => {\n\t\t\t\tbail!(\"No receiver found. Check if any receivers are running.\")\n\t\t\t}\n\t\t\t(Id::ZERO, _) if peers.values().all(|p| !p.able(kind)) => {\n\t\t\t\tbail!(\"No receiver has the ability to receive `{kind}` messages.\")\n\t\t\t}\n\t\t\t(Id::ZERO, _) => Ok(()),\n\n\t\t\t// Send to a specific receiver\n\t\t\t(_, Some(true)) => Ok(()),\n\t\t\t(_, Some(false)) => {\n\t\t\t\tbail!(\"Receiver `{receiver}` does not have the ability to receive `{kind}` messages.\")\n\t\t\t}\n\t\t\t(_, None) => bail!(\"Receiver `{receiver}` not found. Check if the receiver is running.\"),\n\t\t}\n\t}\n}\n","sourceCodeStart":44,"sourceCodeEnd":78,"githubUrl":"https://github.com/sxyazi/yazi/blob/5f901b886b14de1f17460b6e52e9de5d67f8aba9/yazi-cli/src/dds/shot.rs#L44-L78","documentation":"`Shot::ensure_ability` validates the peer table from the DDS handshake before sending. When broadcasting (`receiver == Id::ZERO`) and `peers` is empty, there is no Yazi instance on the other end at all, so it bails with `No receiver found. Check if any receivers are running.`","triggerScenarios":"Running any `ya pub` (broadcast, receiver `Id::ZERO`) while no `yazi` process is connected to the DDS socket; Yazi has exited; `YAZI_PID`-less invocation in an environment where Yazi never started.","commonSituations":"Running `ya` commands in a terminal before launching Yazi; Yazi crashed or was closed; pointing `ya` at a machine/session where no instance runs.","solutions":["Start a Yazi instance first, then re-run the `ya` command.","Check that Yazi is still alive (`pgrep yazi`) — restart it if it exited.","For targeted sends, use `ya pub-to <id>` after confirming the receiver id exists via the peer list (e.g. `ya providers`)."],"exampleFix":"// before\n$ ya pub \"my-plugin\" \"{}\"\nError: No receiver found...\n// after\n$ yazi &        # start a receiver\n$ ya pub \"my-plugin\" \"{}\"","handlingStrategy":"fallback","validationCode":"// shell guard before broadcasting\npgrep -x yazi >/dev/null || { echo \"start yazi before running ya pub\" >&2; exit 1; }","typeGuard":null,"tryCatchPattern":"match result {\n  Err(e) if e.to_string().starts_with(\"No receiver found\") => {\n    eprintln!(\"no yazi instance running; start one or use `ya pub-to <id>` with a live id\");\n  }\n  other => other,\n}","preventionTips":["Ensure a yazi instance is running before any `ya pub` broadcast.","In scripts, gate on `pgrep yazi` or the DDS peer list.","Prefer `ya pub-to <id>` for targeted sends once you know a receiver exists."],"tags":["ipc","dds","no-receiver","process-lifecycle"],"backgroundTag":"no-receiver-found","analyzedSha":"5f901b886b14de1f17460b6e52e9de5d67f8aba9","analyzedAt":"2026-09-02T18:38:25.566Z","contentChangedAt":"2026-09-02T18:38:25.566Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}