Serves Pete's classified-story archive over HTTP alongside the Matrix
bot. Three sections (gaming/tech/politics), Animal-Crossing-vibe Tailwind
templates, day/night palette driven by the visitor's browser clock.
Web port configurable via web.listen_addr and ${PETE_WEB_PORT} in
docker-compose. Tailwind built in a node stage in the Dockerfile so
deployments don't need node at runtime.
95 lines
2.4 KiB
YAML
95 lines
2.4 KiB
YAML
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"
|
|
|
|
ollama:
|
|
base_url: "http://localhost:11434"
|
|
model: "gemma4:27b"
|
|
timeout_seconds: 30
|
|
|
|
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 sources in config order
|
|
|
|
storage:
|
|
db_path: "./data/pete.db"
|
|
recent_window_hours: 24
|
|
classification_log_days: 7
|
|
|
|
web:
|
|
enabled: true
|
|
listen_addr: ":8080"
|
|
site_title: "Pete"
|
|
base_url: "https://news.parodia.dev"
|
|
|
|
sources:
|
|
- name: "The Guardian — World"
|
|
feed_url: "https://www.theguardian.com/world/rss"
|
|
tier: 1
|
|
poll_interval_minutes: 20
|
|
feed_hint: "politics"
|
|
direct_route: "politics"
|
|
enabled: true
|
|
|
|
- name: "The Guardian — Technology"
|
|
feed_url: "https://www.theguardian.com/technology/rss"
|
|
tier: 1
|
|
poll_interval_minutes: 20
|
|
feed_hint: "tech"
|
|
direct_route: null
|
|
enabled: true
|
|
|
|
- name: "The Guardian — Politics"
|
|
feed_url: "https://www.theguardian.com/politics/rss"
|
|
tier: 1
|
|
poll_interval_minutes: 20
|
|
feed_hint: "politics"
|
|
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
|
|
feed_hint: "politics"
|
|
direct_route: "politics"
|
|
enabled: true
|
|
|
|
- name: "Ars Technica"
|
|
feed_url: "https://feeds.arstechnica.com/arstechnica/index"
|
|
tier: 1
|
|
poll_interval_minutes: 20
|
|
feed_hint: "tech"
|
|
direct_route: null
|
|
enabled: true
|
|
|
|
- name: "Ars Technica — Policy"
|
|
feed_url: "https://feeds.arstechnica.com/arstechnica/tech-policy"
|
|
tier: 1
|
|
poll_interval_minutes: 20
|
|
feed_hint: "tech+politics"
|
|
direct_route: null
|
|
enabled: true
|
|
|
|
- name: "Time Extension"
|
|
feed_url: "https://www.timeextension.com/feeds/news"
|
|
tier: 1
|
|
poll_interval_minutes: 20
|
|
feed_hint: "gaming"
|
|
direct_route: "gaming"
|
|
enabled: true
|