// the find
TooTallNate/proxy-agents
Node.js HTTP Proxy Agents Monorepo
A monorepo of Node.js HTTP Agent implementations for routing requests through HTTP, HTTPS, SOCKS4/5, and PAC-file proxies. The top-level `proxy-agent` package auto-detects proxy type from a URL and dispatches to the right agent. Useful for any Node.js tool that needs to respect corporate or SOCKS proxies without reimplementing protocol handling.
The PAC file support is genuinely rare — most proxy libraries skip it entirely, and this one includes a full `pac-resolver` with all the standard PAC helper functions (`isInNet`, `dnsResolve`, `shExpMatch`, etc.) plus a `degenerator` that converts synchronous PAC scripts to async without eval tricks. The layered architecture is clean: `agent-base` defines the contract, each protocol package is independently installable, and `proxy-agent` just composes them. Active maintenance with a changeset-based release pipeline and CI on GitHub Actions. The SOCKS agent delegates to the well-tested `socks` library rather than rolling its own protocol implementation.
Kerberos/Negotiate auth (`packages/negotiate`) is essentially a stub — it declares types and references the `kerberos` native addon but the implementation is thin and the addon is a heavy optional peer dependency that frequently breaks on Node version bumps. The PAC resolver runs PAC scripts via QuickJS-wasm in a sandboxed environment, which is the right call security-wise, but the cold-start overhead of spinning up a WASM runtime on first resolution is not documented anywhere. No connection pooling or keep-alive awareness — agents create connections but the pooling question is entirely punted to whatever `http.Agent` subclass you wire up. Star count is modest for how foundational this package is in the ecosystem (npm downloads dwarf the GitHub presence), which means PRs and issues can sit for weeks.