block/buzz · error
channel {target} not found in community {}
Error message
channel {target} not found in community {} What it means
reconcile_channels() parsed the --channel UUID but db.get_channel(community, target) returned an error/not-found for the community resolved from RELAY_URL. The channel id is syntactically valid but no row with that id exists in THIS community — either the channel was deleted, it belongs to a different community in a shared database, or RELAY_URL resolved to the wrong tenant. The message interpolates the channel UUID and the resolved community host so you can see the mismatch.
Source
Thrown at crates/buzz-admin/src/main.rs:520
);
eprintln!("Events signed with this key won't be verifiable after this run.");
eprintln!("Pass --relay-key or set BUZZ_RELAY_PRIVATE_KEY for production use.");
k
}
};
let tenant = resolve_admin_tenant(&db).await?;
let target_channel = channel_arg
.as_deref()
.map(uuid::Uuid::parse_str)
.transpose()
.map_err(|e| anyhow::anyhow!("invalid --channel UUID: {e}"))?;
let channels = if let Some(target) = target_channel {
vec![db
.get_channel(tenant.community(), target)
.await
.map_err(|_| {
anyhow::anyhow!("channel {target} not found in community {}", tenant.host())
})?]
} else {
db.list_channels(tenant.community(), None).await?
};
if channels.is_empty() {
println!("No channels in database.");
return Ok(());
}
let mut reconciled = 0u32;
let mut skipped = 0u32;
for channel in &channels {
let channel_id_str = channel.id.to_string();
// Check if kind:39000 already exists
let existing = db
.query_events(&EventQuery {View on GitHub (pinned to f956e6fe06)
Solutions
- List channels in the target community to confirm the id exists there: `SELECT id, name FROM channels WHERE community = (…);` or use the admin channel listing, then re-run with the correct UUID.
- Verify RELAY_URL points at the relay whose community actually owns the channel — the error message names the host it searched, so compare that host with where the channel lives.
- If the channel was intentionally deleted, drop --channel to reconcile all remaining channels, or skip the command.
- If the UUID came from another environment, re-copy it from THIS deployment's database/CLI output.
Example fix
# before: staging UUID used against the dev community buzz-admin reconcile-channels --channel 11111111-2222-3333-4444-555555555555 # error: channel 11111111-... not found in community localhost:3000 # after: look up the real id, then reconcile psql $DATABASE_URL -c "SELECT id, name FROM channels;" buzz-admin reconcile-channels --channel <real-uuid-for-this-community>
Defensive patterns
Strategy: validation
Validate before calling
-- confirm the channel exists in the community your RELAY_URL resolves to SELECT id, name FROM channels WHERE id = '<uuid>' AND community = (SELECT id FROM communities WHERE host = 'localhost:3000');
Prevention
- Never hard-code channel UUIDs across environments — look them up per deployment.
- After deleting a channel, prune stale ids from runbooks and scheduled jobs.
- Set RELAY_URL explicitly in scripts so the community resolution is deterministic.
When it happens
Trigger: Passing a channel UUID copied from another environment (staging id used against prod DB); the channel was deleted before reconcile ran; RELAY_URL points at a different relay whose community has no such channel; a re-generated database where old channel ids no longer exist.
Common situations: Runbooks with hard-coded channel UUIDs that drift between environments; operating against a shared Postgres with multiple communities and an unset/wrong RELAY_URL so the wrong tenant is resolved; retrying an old task after the channel was removed.
Related errors
- RELAY_URL host '{host}' is not mapped to a community. buzz-a
- --channel requires --relay-key or BUZZ_RELAY_PRIVATE_KEY
- channel not found
- BUZZ_RELAY_PRIVATE_KEY is required for add-member/remove-mem
- invalid BUZZ_RELAY_PRIVATE_KEY: {e}
AI-assisted analysis of block/buzz@f956e6fe06 (2026-08-16).
Data as JSON: /api/errors/77c05e63d22d8aa1.
Report an issue: GitHub.