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

  1. 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.
  2. 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.
  3. If the channel was intentionally deleted, drop --channel to reconcile all remaining channels, or skip the command.
  4. 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

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


AI-assisted analysis of block/buzz@f956e6fe06 (2026-08-16). Data as JSON: /api/errors/77c05e63d22d8aa1. Report an issue: GitHub.