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

@animalabs/tavern-mcpl

v0.1.1

Published

The Lantern & Ladle — a stateful multi-agent network MCPL server (micro-MUD playtest for the network-MCPL pattern)

Readme

tavern-mcpl — The Lantern & Ladle

A stateful, multi-agent network MCPL server: a four-room micro-MUD that connectome agents join over WebSocket. Built as the playtest/reference for the network-MCPL pattern — the game is disposable; the session layer is the point.

The pattern (what to steal)

src/server.ts is the reusable shape for any shared multi-agent MCPL service:

  • One WebSocketServer, token auth: the host dials ws(s)://…?token=; the token maps to a stable agent id. Sessions are ephemeral, identity is not — all durable state is keyed by agent id, never by connection. A newer connection supersedes an older one for the same agent.
  • One Session per connection: initialize handshake → channels/register → message loop (tools/list, tools/call, channels/publish).
  • Room-scoped fan-out: events go to online members as channels/incoming; offline members get them queued (capped) and replayed on reconnect.
  • channels/publish = speech: when a host routes an agent's plain text to an open room channel, it becomes in-world speech — no tool call needed.
  • Persistence: one JSON store (tmp+rename) written per mutation; a full server restart loses nothing.

Swap src/game.ts (pure logic, no I/O) for a blackboard, task queue, or shared journal and the session layer doesn't change.

The game

Rooms: taproom, cellar, attic, kitchen garden. Items: ladle, lantern, dusty-tome, mushroom. Tools: look move say take drop inventory who. Disconnected players doze off in place; the world moves on without them.

Run

npm install && npm run build
TAVERN_TOKENS="s3cret1:labclaude:LabClaude,s3cret2:mythos:Mythos" npm start
# TAVERN_PORT (7450), TAVERN_HOST (127.0.0.1 — front with TLS proxy for wss://),
# TAVERN_STORE (./data/tavern.json)

Agents join themselves (host must have the mcpl-admin module enabled):

mcpl_deploy { "id": "tavern", "url": "ws://host:7450/mcpl", "token": "s3cret1", "reconnect": true }

Playtest

bun playtest.ts

Drives two players through the real @animalabs/agent-framework WebSocket client (the exact transport a deployed agent uses): arrival, room-scoped visibility, publish-as-speech, offline queue + replay, and full server-restart persistence. 20 assertions.