A small Python tool that watches recent IETF Internet-Drafts and W3C specifications for digital identity, authorization, credentials, privacy-preserving identity, trust infrastructure, and AI governance relevance.
src/ietf_watch/- fetching, classification, persistence, and reportingtests/- focused unit testsconfig/default.yaml- relevance rules and reporting settingsreports/- generated Markdown and CSV reports.data/ietf_watch.db- local SQLite review state created at runtime
python3.12 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -e .[dev]Python 3.11+ is required.
Run tests:
pytestRun the monitor with the default deterministic classifier:
python -m ietf_watch.cli --config config/default.yaml --since-days 7Useful options:
--use-llm- enable optional OpenAI-backed classification refinement--since-days- recent draft window to inspect--min-relevance- override the configured reporting threshold--dry-run- write reports without updating the SQLite review state--config- choose a different YAML config file
Generated reports are written as:
reports/YYYY-MM-DD-ietf-identity-ai-watch.mdreports/YYYY-MM-DD-ietf-identity-ai-watch.csv
The workflow in .github/workflows/daily-ietf-watch.yml:
- runs every day at
14:00 UTC - installs dependencies
- runs tests
- runs the monitor against IETF and W3C sources
- commits updated reports back to the repository when the
reports/directory changes
You can also run it manually with Actions -> Daily IETF Watch -> Run workflow.
If you want optional LLM refinement in your own runs, add OPENAI_API_KEY as a repository secret:
- Open Settings -> Secrets and variables -> Actions
- Create a new repository secret named
OPENAI_API_KEY - Provide the key value
- Run locally or update the workflow command to include
--use-llm
The tool still works without the key and defaults to deterministic classification.
Edit config/default.yaml to adjust:
- global relevance keywords
- working-group boost values
- per-category keyword definitions
- minimum reporting threshold
- report title
The classifier intentionally avoids treating every AI-related draft as high relevance; AI drafts focused only on networking or telemetry should fall to weaker buckets unless they also involve identity, authority, credentials, provenance, governance, trust, or privacy.
- The Datatracker HTML is parsed heuristically, so layout changes may require parser updates.
- The W3C specifications API payload may evolve, and field extraction is best effort.
- Metadata JSON fields vary across drafts, so group and update-date extraction is best effort.
- Optional LLM classification uses the OpenAI Chat Completions API and falls back to deterministic scoring on any failure.
- Previously seen versions are skipped once stored in SQLite; deleting
.data/ietf_watch.dbresets local review state.