RepoTogether AITogether AIpublished Aug 7, 2026seen 2w

togethercomputer/oss-digest

Python

Open original ↗

Captured source

source ↗
published Aug 7, 2026seen 2wcaptured 2whttp 200method plain

togethercomputer/oss-digest

Description: Daily PR digest for inference-infra OSS repos (flashinfer, sglang, vllm, FlashMLA)

Language: Python

Stars: 0

Forks: 0

Open issues: 1

Created: 2026-08-07T23:14:51Z

Pushed: 2026-08-07T23:20:26Z

Default branch: main

Fork: no

Archived: no

README:

oss-digest

Daily pull-request radar for inference-infra repos (FlashInfer, SGLang, vLLM, FlashMLA, …). A worker polls GitHub for newly opened and merged PRs, drops noise (docs/CI/typos) with a rule pass, tags the rest into categories — with a Together LLM when TOGETHER_API_KEY is set, rule heuristics otherwise — and a React UI shows a per-day digest.

Same architectural shape as eval-api / eval.together-turbo.com so it can be productionized the same way: Caddy serves the static Vite bundle and proxies /v1/*, /admin/*, /health same-origin to FastAPI; a worker runs alongside; storage is a thin DAO (api/app/store.py) over SQLite that swaps to Mongo/DocumentDB by reimplementing one module.

Layout

  • api/app/config.py — watched repos, categories, env settings
  • api/app/github.py — pulls API client (newest-first, stops at cutoff)
  • api/app/rules.py — high-precision noise drop + category hints
  • api/app/llm.py — batched Together chat-completions classification
  • api/app/pipeline.py — fetch → rules → LLM → upsert, incremental per-repo sync
  • api/app/main.py — FastAPI: /v1/prs, /v1/digest, /admin/v1/ingest
  • api/app/worker.py--once or polling loop (DIGEST_POLL_INTERVAL_HOURS)
  • web/ — Vite + React + TS + Tailwind + React Query SPA (Digest / Browse views)
  • deploy/Caddyfile, docker-compose.yml — prod-shaped local stack

Run (dev mode, no docker)

make setup # npm install
make ingest # one-shot sync (LOOKBACK=7 to widen)
make api # FastAPI :8123
make web # Vite :5173, proxies /v1 -> :8123

Run (compose, prod-shaped)

make up # builds web/dist, then caddy :8080 -> api + worker
make down

Config

Copy .env.example to .env (compose reads it automatically). Without GITHUB_TOKEN, local dev falls back to gh auth token; without TOGETHER_API_KEY, classification is rules-only (no summaries, coarser tags). Re-tagging after enabling the LLM: make ingest LOOKBACK=3 reclassifies the window (existing rule-tagged rows are overwritten by the LLM verdicts only for PRs still inside it).

Productionizing

1. EC2 box (or any host) with Docker: docker compose up -d as-is; change deploy/Caddyfile :80 to the real domain for automatic TLS. 2. Point DNS at the host; done — this is the eval-api pattern. 3. Scale-up path: swap store.py to Mongo/DocumentDB, move the SQLite volume to the DB, add worker replicas if repo count grows.

Notability

notability 3.0/10

Routine new repo, no traction data.