1services: 2 # Tap - AT Protocol sync utility 3 # Build from local indigo checkout, or use pre-built image 4 tap: 5 container_name: weaver-tap 6 image: ghcr.io/bluesky-social/indigo/tap:latest 7 ports: 8 - "2480:2480" 9 volumes: 10 - tap_data:/data/tap 11 environment: 12 TAP_DATABASE_URL: sqlite:///data/tap/tap.db 13 TAP_BIND: ":2480" 14 TAP_DISABLE_ACKS: "false" 15 TAP_LOG_LEVEL: info 16 # Filter to weaver collections only 17 #TAP_SIGNAL_COLLECTION: sh.weaver.edit.root 18 TAP_SIGNAL_COLLECTION: sh.tangled.actor.profile 19 TAP_COLLECTION_FILTERS: "sh.weaver.*,app.bsky.actor.profile,sh.tangled.*,pub.leaflet.*" 20 healthcheck: 21 test: ["CMD", "wget", "-q", "--spider", "http://localhost:2480/health"] 22 interval: 20s 23 timeout: 5s 24 retries: 3 25 26 # Weaver indexer - consumes from tap or direct firehose 27 indexer: 28 container_name: weaver-indexer 29 build: 30 context: . 31 dockerfile: crates/weaver-index/Dockerfile 32 command: ["run"] 33 ports: 34 - "3000:3000" 35 environment: 36 RUST_LOG: debug,weaver_index=debug,hyper_util::client::legacy::pool=info 37 # ClickHouse connection (set these for your cloud/homelab instance) 38 CLICKHOUSE_URL: ${CLICKHOUSE_URL} 39 CLICKHOUSE_DATABASE: ${CLICKHOUSE_DATABASE:-weaver} 40 CLICKHOUSE_USER: ${CLICKHOUSE_USER} 41 CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD} 42 # Source mode: "firehose" or "tap" 43 INDEXER_SOURCE: tap 44 # Tap connection (when INDEXER_SOURCE=tap) 45 TAP_URL: ws://tap:2480/channel 46 TAP_SEND_ACKS: "true" 47 # Firehose connection (when INDEXER_SOURCE=firehose) 48 FIREHOSE_RELAY_URL: wss://bsky.network 49 # Collection filters 50 INDEXER_COLLECTIONS: "sh.weaver.*,app.bsky.actor.profile,sh.tangled.*,pub.leaflet.*" 51 depends_on: 52 tap: 53 condition: service_healthy 54 healthcheck: 55 test: ["CMD", "wget", "-q", "--spider", "http://localhost:2480/xrpc/_health"] 56 interval: 20s 57 timeout: 5s 58 retries: 3 59 60volumes: 61 tap_data: