Metadata-Version: 2.4
Name: ietf-llm
Version: 0.13.0
Summary: Maintain a local, LLM-queryable corpus of an IETF Working Group's public record (drafts, mailing list, GitHub issues, meetings), with an MCP server, semantic search, and NotebookLM export.
Author-email: Mark Nottingham <mnot@mnot.net>
License-Expression: MIT
Project-URL: Homepage, https://github.com/mnot/ietf-llm
Project-URL: Documentation, https://github.com/mnot/ietf-llm/blob/main/docs/README.md
Project-URL: Source, https://github.com/mnot/ietf-llm
Project-URL: Issues, https://github.com/mnot/ietf-llm/issues
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: requests
Requires-Dist: beautifulsoup4
Requires-Dist: pypdf
Requires-Dist: dulwich>=0.21.7
Requires-Dist: llm
Requires-Dist: numpy
Requires-Dist: mcp
Requires-Dist: argcomplete
Provides-Extra: local-embeddings
Requires-Dist: llm-sentence-transformers; extra == "local-embeddings"
Provides-Extra: notebooklm
Requires-Dist: google-auth; extra == "notebooklm"
Requires-Dist: google-auth-oauthlib; extra == "notebooklm"
Requires-Dist: google-auth-httplib2; extra == "notebooklm"
Provides-Extra: s3
Requires-Dist: boto3; extra == "s3"
Provides-Extra: certs
Requires-Dist: pip-system-certs; extra == "certs"
Provides-Extra: dev
Requires-Dist: mypy; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-md; extra == "dev"
Requires-Dist: validate-pyproject; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: types-beautifulsoup4; extra == "dev"
Requires-Dist: google-auth; extra == "dev"
Requires-Dist: google-auth-oauthlib; extra == "dev"
Requires-Dist: google-auth-httplib2; extra == "dev"
Requires-Dist: boto3; extra == "dev"
Requires-Dist: moto; extra == "dev"
Dynamic: license-file

# ietf-llm

Maintain a local, queryable corpus of an [IETF](https://www.ietf.org/) effort's public record — a
Working Group, an [IRTF](https://irtf.org/) Research Group, a mailing list, or a set of drafts. It
pulls together charter, drafts, RFCs, meeting agendas, minutes, slides, transcripts, mailing list
archives, and GitHub issues for use with LLM-based tools.

## What it's for

A working group's history is spread across mailing list archives, Datatracker, GitHub, and meeting
materials — too much to hold in your head, and too scattered to search well by hand. With the record
gathered into one queryable corpus, an LLM can help you:

- **Get up to date with the state of discussions** — what's open, what was recently decided, where a
  debate currently stands.
- **Summarise the arguments already made** about an issue — every distinct position on a topic, who
  holds it, and how the chairs ruled.
- **Formulate a new proposal** — surface the objections raised against similar ideas before, so you
  can anticipate them.
- **Fact-check assertions** about what's happened so far — grounded in the actual list traffic and
  chair statements, not someone's recollection.

> **Tip:** for an IRTF Research Group, pass its shortname (e.g. `cfrg`, `hrpc`, `pearg`) wherever the
> docs use `<name>` — it works the same as a WG.


## Modes of operation

There are three supported workflows:

1. **Use it as an MCP server** — register it with Claude, Codex, Cursor, Gemini, Zed,
   etc. and ask questions across any corpus you've gathered. Two ways to run it:
   - **[Local MCP](https://github.com/mnot/ietf-llm/blob/main/docs/mcp-local.md)** — one server subprocess per client, on your own machine. <-- **Best starting point**
   - **[As a shared HTTP MCP server](https://github.com/mnot/ietf-llm/blob/main/docs/mcp-server.md)** — one process serving many concurrent
     clients (hosted).
2. **[Use it with NotebookLM](https://github.com/mnot/ietf-llm/blob/main/docs/notebooklm.md)** — export the gathered corpus as a directory of
   clean text files and ingest it as a notebook (or push directly to NotebookLM Enterprise).
3. **[Use it from the CLI](https://github.com/mnot/ietf-llm/blob/main/docs/search-cli.md)** — run semantic search over the cache directly with
   `ietf-llm-search`, no LLM client required.

See the workflow documentation linked above for installation and use instructions, or the
[full documentation listing](https://github.com/mnot/ietf-llm/blob/main/docs/README.md).

