Agent404 is a link verification toolkit for finding broken links without over-reporting provider-blocked URLs as failures.
It ships as an npm library and CLI. The core package is designed to be reused later by a web app, Codex plugin, GitHub Action, and browser extension.
npm install @heysalad/agent404npx @heysalad/agent404 scan https://developers.openai.com/community/meetupsJSON output:
npx @heysalad/agent404 scan https://developers.openai.com/community/meetups --jsonFail on broken links:
npx @heysalad/agent404 scan https://example.com --fail-on brokenAgent404 also includes a landing page and free scanner UI designed to run at a path such as:
https://heysalad.app/Agent404
Run locally:
npm run web:startThen open:
http://localhost:4174/Agent404
The browser UI calls a server-side endpoint at /Agent404/api/scan. The server endpoint is required because browsers cannot reliably fetch and inspect arbitrary third-party pages directly due to CORS.
Build only the static web assets:
npm run web:buildDeployment requirement: route both /Agent404/* static assets and /Agent404/api/scan to the Agent404 web server, or set window.AGENT404_API_BASE before loading the app if the scan API is hosted on a separate origin.
import { scanPage } from "@heysalad/agent404";
const report = await scanPage("https://developers.openai.com/community/meetups");
console.log(report.summary);
console.log(report.results.filter((result) => result.classification === "broken"));valid: Link resolved to a successful final target.broken: Link returned a strong dead-link signal such as404or410.blocked: Provider blocked automated verification, for example LinkedIn999,401,403, or429.timeout: Request exceeded the configured timeout.unknown: Verification produced an ambiguous result.
- Fetch one page.
- Extract HTTP(S) links from anchor tags.
- Deduplicate targets.
- Check each target with
HEAD, falling back toGETwhere needed. - Follow redirects.
- Classify results as valid, broken, blocked, timeout, or unknown.
- Return structured JSON suitable for CLI, web UI, GitHub Actions, and Codex plugin workflows.
This MVP is HTTP-based. Browser-rendered scanning with Playwright is planned for pages that inject links client-side or require click-level verification.