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

caro-tournament

v1.2.5

Published

Caro (Gomoku) five-in-a-row with a local engine and AI tournament mode

Readme

Caro

Caro (Gomoku / five-in-a-row) on a 20×20 board, with a local engine you can play against or pit against itself.

Play against the computer, let the computer play first, or run a multi-board Tournament where every difficulty pairing races in parallel.

Tournament mode — several computer vs computer boards running at once

Quick start

npm install -g caro-tournament
caro-tournament

Or without a global install:

npx caro-tournament

This starts a local server at http://localhost:2026 and opens it in your browser. Game data is stored under ~/.caro-tournament/.

Useful flags:

caro-tournament --port 3000   # use a different port
caro-tournament --no-open     # start server without opening the browser

Tournament

Tournament mode matches the four difficulty levels against each other: easy, medium, hard, and expert.

  • Seat order matters. Hard going first against medium is a different match from medium going first against hard, because the opening move is an advantage.
  • You can run several boards at once so pairings play in parallel. The page stays responsive while games run.
  • When games finish, results are saved. Open Results to see wins, draws, and average move counts for each pairing and overall.

Entering Tournament sets up the boards but waits: pick how many boards to run, then click Start. Click the board tabs to watch each game, or the Results tab for the standings.

Practice

Practice mode looks like Tournament — computers play each other across parallel boards — but the goal is training, not standings.

  • Every board writes to a shared experience cache on disk, so the engine gets stronger the more it plays.
  • Results are not recorded; there is no Results tab.
  • A game restarts automatically once both players leave known experience, so practice explores more openings.

As with Tournament, pick how many boards to run and click Start, then click the tabs to watch individual games.

The engine

The engine is the computer opponent behind every computer-controlled seat. Strength is controlled by difficulty:

  • Easy: Shallow look-ahead, quick replies, more variety in play
  • Medium: Deeper search and recognition of common traps
  • Hard: Longer thinking time and full awareness of fork patterns
  • Expert: The strongest profile, with extra time and forced-line hunting

Higher levels think longer and see more of the board. Lower levels move faster and play with more unpredictability.

Develop from source

Requirements

  • Node.js 18+ (developed on Node 24)
  • npm (comes with Node)

Install

npm install

Build & start

npm start

# Custom port, no browser
npm start -- --port 3000 --no-open

This builds the app and starts the same local server (port 2026, opens the browser).

Useful scripts:

| Command | What it does | | ------------------- | ----------------------------------------------- | | npm start | Production build and serve on port 2026 | | npm run dev | Dev build (debug on) and serve on port 2026 | | npm run build | Build UI (dist/ui) and CLI | | npm run dev:ui | Vite HMR for the UI (proxy /api to port 2026) | | npm test | Run tests | | npm run typecheck | TypeScript check | | npm run lint | Lint |

Open the page, pick a mode (you first, computer first, or Tournament), choose difficulty or board count, and play - or watch the computers compete.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

You may use, modify, and share it, but if you distribute it or run a modified version as a network service, you must make the corresponding source available under the same license.