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

@open-ic/openchat_openclaw

v0.1.5

Published

OpenClaw OpenChat channel plugin

Readme

openchat-openclaw

An OpenClaw plugin that adds OpenChat as a channel. Users interact with the AI agent by sending a /prompt command to a bot in OpenChat.

Prerequisites

  • OpenClaw gateway running and accessible from the internet (OpenChat needs to reach your /bot_definition and /execute_command endpoints)
  • openssl on your PATH (for key generation)
  • Node 22+

Installation

openclaw plugins install @open-ic/openchat_openclaw

Setup

1. Generate a bot identity

npx --package @open-ic/openchat_openclaw generate-key

This generates a secp256k1 private key, writes it to ~/.openclaw/openchat-bot.pem (mode 600), and prints the corresponding Internet Computer principal. Save the principal — you'll need it when registering the bot on OpenChat.

2. Supply required environment variables

The plugin requires two env vars that must be set before starting the gateway. Add them to ~/.openclaw/.env (or export them in your shell):

# OpenChat's ES256 public key — used to verify JWTs on incoming bot commands.
# Obtain from: https://oc.app/api
OC_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"

# User index canister ID — provided by OpenChat for your deployment.
OC_USER_INDEX_CANISTER="<canister-id>"

| Variable | Required | Default | Description | | --------------------------- | --------- | ----------------------------- | ---------------------------------------------------- | | OC_PUBLIC_KEY | Yes | — | OpenChat's ES256 public key for JWT verification | | OC_USER_INDEX_CANISTER | Yes | — | OpenChat user index canister ID | | OC_PRIVATE_KEY | See below | — | Bot private key PEM (alternative to config) | | OC_IC_HOST | No | https://icp-api.io | Internet Computer host (override for local replicas) | | OC_STORAGE_INDEX_CANISTER | No | nbpzs-kqaaa-aaaar-qaaua-cai | Storage index canister ID |

3. Configure the private key

The bot private key (from step 1) can be supplied in three ways, in priority order:

Option A — Key file (recommended):

The generate-key script writes the PEM to ~/.openclaw/openchat-bot.pem and prints the exact command to run:

openclaw config set channels.openchat.privateKeyFile ~/.openclaw/openchat-bot.pem

Option B — Env var:

# In ~/.openclaw/.env or your shell:
OC_PRIVATE_KEY="-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----"

Option C — Inline config (not recommended for production):

openclaw config set channels.openchat.privateKey "-----BEGIN EC PRIVATE KEY-----\n..."

4. Start the gateway

openclaw gateway run

5. Register the bot on OpenChat

Once the gateway is running and reachable from the browser, go to oc.app, run the /register_bot command from any chat. To register the bot you can give it the name and avatar of your choice and you will also need the following two details.

  • Gateway endpoint origin: https://<your-gateway-host>:<gateway-port>
  • Principal: the value printed in step 1

OpenChat will call GET /bot_definition to verify your endpoint is reachable before completing registration, and POST /execute_command each time a user sends /prompt.

6. Install the bot as a direct chat.

Search for the bot you registered as if searching for a user. Install the bot as a direct chat (which involves accepting the required permissions). Start talking to the bot! Congratulations, you are now talking to OpenClaw directly from OpenChat.

Current limitations

At the moment this plugin uses a /prompt command and can only interact with OpenChat using the command's jwt. This means that we can only current do request -> response interactions and not autonomous interactions e.g. Heartbeat. I will be giving some thought to how that autonomous interaction scenario can be best supported.