# AVWatch configuration # Copy to config.toml and edit. Secrets go in environment variables, never # here, so this file is safe to keep on a shared drive or in git. # # AVWATCH_SMTP_PASSWORD mail app password # ANTHROPIC_API_KEY enables the Claude verdict + version lookup # AVWATCH_GITHUB_TOKEN lifts GitHub's 60/hour limit to 5000/hour # AVWATCH_REDDIT_CLIENT_ID free "script" app at reddit.com/prefs/apps # AVWATCH_REDDIT_CLIENT_SECRET [general] cache_ttl = 3600 # seconds to reuse an HTTP response http_timeout = 30 log_level = "INFO" # DEBUG when something is misbehaving [paths] # All relative to the project folder unless you give absolute paths. # data_dir = "data" # report_dir = "reports" # inventory = "inventory.yaml" # --------------------------------------------------------------------------- # Email digest # --------------------------------------------------------------------------- [email] enabled = true # --- Microsoft 365 ----------------------------------------------------- # smtp_host = "smtp.office365.com" # smtp_port = 587 # use_starttls = true # username = "avwatch@yourchurch.org" # With MFA on the account you must create an app password, and the mailbox # needs SMTP AUTH enabled (it is off by default on new M365 tenants): # Exchange admin centre -> Mailboxes -> the mailbox -> Manage email apps # -> tick "Authenticated SMTP". # # --- Google Workspace -------------------------------------------------- smtp_host = "smtp.gmail.com" smtp_port = 587 use_starttls = true use_ssl = false username = "your.address@waterschurch.org" # Requires an App Password (myaccount.google.com -> Security -> 2-Step # Verification -> App passwords). Your normal password will be rejected. from_addr = "your.address@waterschurch.org" from_name = "AVWatch" # Who gets the Monday briefing. to = [ "chris.meireles@waterschurch.org", ] cc = [] subject_prefix = "[AVWatch]" attach_html = true # attach the full dashboard to the email send_when_nothing_new = true # false = stay silent on quiet weeks # --------------------------------------------------------------------------- # Community risk scanning # --------------------------------------------------------------------------- [risk] enabled = true # Only scan the forums for items we are actually behind on. Turning this off # scans everything and takes a great deal longer. only_when_behind = true max_queries_per_item = 2 max_evidence_per_item = 8 lookback_days = 400 use_duckduckgo = true # works with no key, but rate-limits hard use_reddit = true # needs the two AVWATCH_REDDIT_* env vars use_github_issues = true # best signal for OBS / Companion / RustDesk use_hackernews = false # low yield for AV gear # Searched via the Reddit API when credentials are present. subreddits = [ "livesound", "VIDEOENGINEERING", "churchtech", "ProPresenter", "blackmagicdesign", "audioengineering", "shure", "sounddesign", ] # --------------------------------------------------------------------------- # Verdict engine # --------------------------------------------------------------------------- [llm] enabled = true model = "claude-opus-5" # Cheaper alternative if the Opus verdicts read as more than you need: # model = "claude-sonnet-5" escalate_model = "claude-opus-5" escalate_for_criticality = ["showstopper"] max_output_tokens = 1400 # --------------------------------------------------------------------------- # Version lookup for vendors with no machine-readable feed # --------------------------------------------------------------------------- # Most AV vendor support sites are JavaScript-rendered and cannot be scraped. # For those, Claude looks the version up with web search and cites a source. # This is factual retrieval rather than judgement, so it runs on the cheaper # model. Answers are cached for ttl_days, so the Monday digest pays for the # lookups and mid-week scans reuse them. [lookup] enabled = true model = "claude-sonnet-5" ttl_days = 6.0 max_items_per_run = 120 # hard ceiling on cost per run max_searches_per_item = 4 # --------------------------------------------------------------------------- # Local policy -- your rules, independent of what the internet says # --------------------------------------------------------------------------- [policy] # How long a release must have been out before it is recommended, by how much # the gear matters. These are the main dials worth tuning. soak_days_showstopper = 30 soak_days_high = 21 soak_days_normal = 10 # ISO weekdays where an install should never be scheduled (1 = Monday). # Saturday and Sunday by default. blackout_weekdays = [6, 7] # Require a human decision for a major version jump on show-critical gear. major_bump_needs_human = true