fix(desktop): quiet boot reconcile noise for unreachable relays

Boot-time profile reconciliation logged a per-agent failure line every
time a local agent's per-record relay was unreachable, producing a wall of
identical "relay unreachable" lines on every `just staging` run. A local
agent may deliberately target an offline relay, so an unreachable per-record
relay is expected, not an error worth shouting each boot.

Suppress only the relay-unreachable case (detected via the documented
"relay unreachable:" prefix from relay.rs); genuine reconcile failures still
surface loudly. Also default the create-agent picker to buzz-agent instead of
goose so new local agents stop being born on the dead goose command. Keeps
the per-record relay authoritative everywhere — no override, no migration.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
This commit is contained in:
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
2026-06-19 13:20:15 -04:00
co-authored by Will Pfleger
parent d1c3574ba7
commit 570b8c548c
2 changed files with 13 additions and 3 deletions
@@ -232,7 +232,17 @@ pub async fn restore_managed_agents_on_launch(
crate::commands::reconcile_agent_profile(&state, &reconcile_app, &pubkey, &data)
.await
{
eprintln!("buzz-desktop: profile reconciliation failed for agent {pubkey}: {e}");
// A local agent may deliberately target a relay that isn't
// running (e.g. ws://localhost:3000 between boots); the relay
// helper marks every such case with the "relay unreachable:"
// prefix (see relay.rs). That's expected, not a failure worth
// a per-agent line every boot — only genuine reconcile errors
// surface loudly.
if !e.starts_with("relay unreachable:") {
eprintln!(
"buzz-desktop: profile reconciliation failed for agent {pubkey}: {e}"
);
}
}
});
}
@@ -57,7 +57,7 @@ export function CreateAgentDialog({
const backendProvidersQuery = useBackendProvidersQuery();
const { lastRuntimeId, setLastRuntime } = useLastRuntime();
const [acpCommand, setAcpCommand] = React.useState("buzz-acp");
const [agentCommand, setAgentCommand] = React.useState("goose");
const [agentCommand, setAgentCommand] = React.useState("buzz-agent");
const [agentArgs, setAgentArgs] = React.useState("acp");
const [mcpCommand, setMcpCommand] = React.useState("");
const [mcpToolsets, setMcpToolsets] = React.useState("");
@@ -236,7 +236,7 @@ export function CreateAgentDialog({
setSpawnAfterCreate(true);
setStartOnAppLaunch(true);
setAcpCommand("buzz-acp");
setAgentCommand("goose");
setAgentCommand("buzz-agent");
setAgentArgs("acp");
setMcpCommand("");
setMcpToolsets("");