Initial commit: AVWatch v1.0.0 with .gitignore and CLAUDE.md
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user