npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@hasna/crawl

v0.4.16

Published

AI-powered web crawler — self-hosted Firecrawl alternative. Crawl, extract, render JS, search. CLI + MCP + REST API + Dashboard.

Downloads

1,417

Readme

@hasna/crawl

AI-powered web crawler — self-hosted Firecrawl alternative. Crawl, extract, render JS, search. CLI + MCP + REST API + Dashboard.

npm License

Install

npm install -g @hasna/crawl

CLI Usage

crawl --help
  • crawl crawl <url>
  • crawl list
  • crawl stats
  • crawl search <query>
  • crawl search-web <query> (Exa-backed web search; requires EXA_API_KEY)
  • crawl sitemap <url>
  • crawl map <url>
  • crawl export

MCP Server

crawl-mcp

30 tools available.

HTTP mode

Long-lived Streamable HTTP transport for shared agent sessions (binds 127.0.0.1 only):

crawl-mcp --http              # default port 8812
crawl-mcp --http --port 8812
MCP_HTTP=1 MCP_HTTP_PORT=8812 crawl-mcp
  • GET /health{"status":"ok","name":"crawl"}
  • POST /mcp — Streamable HTTP MCP endpoint (also mounted on crawl-serve)

Stdio remains the default transport for gradual rollout.

Exa Web Search

crawl search-web and the MCP search_web tool use Exa's Search API. They read EXA_API_KEY from the process environment and do not read local vaults directly. Inject secrets through your shell, process manager, or deployment secret provider.

export EXA_API_KEY=...
crawl doctor
crawl search-web "recent web crawling research" --limit 5

REST API

crawl-serve

Storage Sync

This package supports optional remote storage sync directly against a Postgres/RDS database. Local SQLite remains the default. Screenshot artifacts can optionally sync to S3 using Bun's native S3 client.

export HASNA_CRAWL_DATABASE_URL=postgres://...
export HASNA_CRAWL_S3_BUCKET=my-crawl-artifacts
export HASNA_CRAWL_S3_PREFIX=open-crawl/prod
export HASNA_CRAWL_AWS_REGION=us-east-1

crawl storage status
crawl storage push
crawl storage pull
crawl storage sync
crawl storage artifacts status
crawl storage artifacts upload
crawl storage artifacts download

MCP exposes the same flow through storage_status, storage_push, storage_pull, storage_sync, storage_artifacts_upload, and storage_artifacts_download.

Data Directory

Data is stored in ~/.hasna/crawl/.

License

Apache-2.0 -- see LICENSE