matrix: homeserver: "https://matrix.example.org" user_id: "@pete:matrix.example.org" password: "${PETE_PASSWORD}" pickle_key: "${PETE_PICKLE_KEY}" display_name: "Pete" data_dir: "./data" admin_room: "!adminroomid:matrix.example.org" channels: tech: "!techroomid:matrix.example.org" politics: "!politicsroomid:matrix.example.org" gaming: "!gamingroomid:matrix.example.org" posting: min_interval_seconds: 300 burst_cap_count: 3 burst_cap_window_seconds: 1800 daily_cap_total: 5 # hard global cap across ALL channels (rolling 24h); 0 disables round_robin: enabled: false # when true, replaces immediate posting with paced rotation interval_hours: 4 # one story per N hours, cycling through channels in sorted order storage: db_path: "./data/pete.db" recent_window_hours: 24 web: enabled: true listen_addr: ":8080" site_title: "Pete" base_url: "https://news.parodia.dev" # Every enabled source MUST set direct_route to a key from matrix.channels above. # There is no automatic classification — Pete posts each story to its configured channel. sources: - name: "The Guardian — World" feed_url: "https://www.theguardian.com/world/rss" tier: 1 poll_interval_minutes: 20 direct_route: "politics" enabled: true - name: "The Guardian — Politics" feed_url: "https://www.theguardian.com/politics/rss" tier: 1 poll_interval_minutes: 20 direct_route: "politics" enabled: true - name: "The Guardian — US News" feed_url: "https://www.theguardian.com/us-news/rss" tier: 1 poll_interval_minutes: 20 direct_route: "politics" enabled: true - name: "Ars Technica" feed_url: "https://feeds.arstechnica.com/arstechnica/index" tier: 1 poll_interval_minutes: 20 direct_route: "tech" enabled: true - name: "Time Extension" feed_url: "https://www.timeextension.com/feeds/news" tier: 1 poll_interval_minutes: 20 direct_route: "gaming" enabled: true