- STATUS.md: last_updated 2026-07-06, status flipped to production-ready, recent activity logs which phase 0 commits were cherry-picked/skipped and why - AGENTS.md: last_updated 2026-07-06 + phase_0_hardening_complete flag; Components section lists routers/, pry_mcp/, pry_x402/, pry_<name>.py added in the dedup refactor; Dependencies lists the 5 newly-wired libs (cloudscraper, aiohttp-socks, pyjwt, apify, playwright-stealth) - CONTRIBUTING.md: 'Working with Archived Work' rewritten with a table showing the per-commit cherry-pick decisions and reasoning (subsumed / conflicts / wrong-target / cherry-picked)
3.4 KiB
3.4 KiB
//: # (Copyright (c) 2026 Rug Munch Media LLC)
AGENTS.md — PryScraper
AI agent contract. Read this before touching anything in this repo.
Status
canonical · owner=crmuncher · last_updated=2026-07-06 · phase_0_hardening_complete
What This Repo Is
Multi-source crypto intelligence crawler (munchcrawl). Scraper, extractor, parser, automator, job queue. CLI + MCP server + SDK. License: Dual -- MIT (core) + BSL 1.1 (stealth/anti-detection subset). See LICENSE and LICENSE-BSL-STEALTH.
Type
backend · language=Python 3.12 + FastAPI
Where It Lives
- Source:
https://git.rugmunch.io/RugMunchMedia/pryscraper - Deployed: Docker on Talos (/srv/pry/)
- Port: 8005
Built With
- Standards: git.rugmunch.io/RugMunchMedia/standards
- Toolchain: TOOLCHAIN.md
- Conventions: CONVENTIONS.md
Components
/srv/pry/*.py: 83 Python modules (api.py, extractor.py, parser.py, etc.)browser-extension/: Chrome/Firefox extensionrouters/: FastAPI routers split fromapi.py(scraping, templates, health, auth, captcha, …)pry_mcp/: MCP sub-package (split frommcp_production.py2026-07-06)pry_x402/: x402 constants + enums (split fromx402.py2026-07-06)pry_<name>.py: 19 root modules renamed to removerouters/collision (2026-07-06)
Dependencies
- postgresql (job storage)
- redis (cache)
- flaresolverr (Cloudflare bypass, on Hydra)
- playwright (browser automation)
- cloudscraper (Cloudflare bypass tier)
- aiohttp-socks + aiohttp (SOCKS5 proxy support, async HTTP)
- pyjwt (JWT auth signing)
- apify (Apify actor SDK)
- playwright-stealth (anti-detection)
🚨 CRITICAL RULES
- No nested repos. Don't commit other complete project trees inside this one.
- No secrets. Never commit
.secrets/,.env,*.pem,*.key,*.crt. Use gopass. - No data blobs. Don't commit
*.zip,*.parquet, model weights, sqlite files. - No broken files. Shell heredoc accidents must be caught before commit.
- No duplicate scaffolds. If a
backend/orfrontend/subdir exists at root, it's either THE app or bloat. - Update STATUS.md before committing. Builders must know where we are.
- Read DECISIONS.md before architectural changes. Don't repeat rejected designs.
- Respect dual licensing. When contributing, the core/ files are MIT (any PR welcome). The stealth/ files (listed in LICENSE-BSL-STEALTH) are BSL 1.1 -- only Rug Munch Media LLC can modify them. PRs touching BSL files will be rejected.
Commands
make install # install deps
make dev # dev server
make test # tests
make lint # ruff + format check
make typecheck # mypy strict
make security # bandit + gitleaks
make ci # full pipeline
make commit # conventional commit
make clean # remove build artifacts
Architecture
See ARCHITECTURE.md. Update it when components change.
Plan
PLAN.md shows current sprint. Update weekly.
Status
STATUS.md shows where we are RIGHT NOW. Update before each commit.
Owners
- Primary: crmuncher
- Backup: TBD