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

seatalk-relay

v0.1.1

Published

SeaTalk webhook relay service for OpenClaw SeaTalk plugin

Downloads

208

Readme

seatalk-relay

Lightweight relay service that receives SeaTalk webhooks and forwards events to openclaw-seatalk plugin clients via WebSocket.

SeaTalk API --HTTP POST-> seatalk-relay <-WebSocket-- openclaw-seatalk (relay mode)

Installation

From npm

npm install -g seatalk-relay
seatalk-relay --port 8001

Or run without installing:

npx seatalk-relay --port 8001

From source

git clone https://github.com/lf4096/seatalk-relay.git
cd seatalk-relay
npm install
npm run build
node dist/seatalk-relay.js

For development (auto-loads TypeScript via tsx):

npm run dev

Configuration

| CLI arg | Env var | Default | Description | |---|---|---|---| | --port | PORT | 8080 | Listen port | | --callback-path | CALLBACK_PATH | /callback | Webhook endpoint path | | --ws-path | WS_PATH | /ws | WebSocket endpoint path |

seatalk-relay --port 8001 --callback-path /seatalk/callback --ws-path /seatalk/ws

# Or use a .env file (Node.js v20.6+)
node --env-file=.env $(which seatalk-relay)

How It Works

  1. Plugin connects via WebSocket and sends { type: "auth", appId, appSecret, signingSecret }
  2. Relay validates credentials against SeaTalk token API
  3. SeaTalk webhooks arrive at the callback path; relay verifies signature using the client's signingSecret
  4. Verified events are forwarded to the matching client connection
  5. If no client is connected, events are buffered for up to 5 minutes and delivered when the client reconnects
  6. event_verification challenges are handled directly by the relay

Duplicate appId Policy

If a new client connects with an appId that already has an active connection, the old connection receives { type: "replaced" } and is closed.

SeaTalk Setup

Set the Event Callback URL in SeaTalk Open Platform to:

https://<your-domain>:<port>/callback

Multiple Bot Apps can share the same callback URL — routing is done by app_id in the webhook body.