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

@looki-ai/openclaw-looki

v0.2.2

Published

Looki -> OpenClaw one-way event channel (getupdates long-poll, inbound-only)

Readme

@looki-ai/openclaw-looki

An OpenClaw channel plugin for Looki, with a built-in looki-memory skill.

Features

  • Long-polls Looki's /getupdates and delivers events to your OpenClaw agent
  • Optionally forwards the agent's output in parallel to WhatsApp / Telegram / Discord / Lark / WeChat / QQ Bot (each target is isolated — one failure does not block the others)
  • Ships a looki_memory tool and matching skill so the agent can read Looki memory directly (profile, calendar, day timeline, moment detail & files, semantic search, For You highlights)

Install

Recommended:

npx -y @looki-ai/openclaw-looki-cli@latest install

Manually:

openclaw plugins install @looki-ai/openclaw-looki

Then add the configuration to ~/.openclaw/openclaw.json and run openclaw gateway restart.

Configuration

Add this to ~/.openclaw/openclaw.json:

{
  "channels": {
    "openclaw-looki": {
      "enabled": true,
      "baseUrl": "https://open.looki.ai",
      "apiKey": "lk-xxxxxxxx...",
      "pollTimeoutMs": 30000,
      "maxEvents": 10,
      "forwardTo": [
        { "channel": "telegram",        "accountId": "default",           "to": "123456789" },
        { "channel": "discord",         "accountId": "default",           "to": "channel_id" },
        { "channel": "feishu",          "accountId": "default",           "to": "ou_xxx" }
      ]
    }
  }
}

Fields:

| Field | Required | Default | Notes | | --------------- | -------- | ----------------------- | ---------------------------------------------------------------------- | | enabled | no | true | Whether the plugin is enabled | | baseUrl | yes | https://open.looki.ai | | | apiKey | yes | — | Looki user API key (lk-...). | | accountId | no | "default" | Identifier for the OpenClaw session/conversation | | pollTimeoutMs | no | 30000 | Long-poll timeout (ms). Server caps at 30s | | maxEvents | no | 10 | Max events pulled per poll, 1–100 | | forwardTo | no | — | Array of {channel, accountId?, to} for fan-out of the agent's reply |

Structural config errors (unknown fields, wrong types, out-of-range values) cause the channel to throw on startup instead of silently falling back, so typos surface early.

Forwarding (forwardTo)

forwardTo goes through OpenClaw's runtime outbound adapter, so each target channel's plugin has to be installed, configured, and the gateway restarted first.

| channel | Plugin | to format | | ----------------- | --------------------------------- | -------------------------------------------------------------- | | whatsapp | @openclaw/whatsapp | WhatsApp JID or phone number | | telegram | @openclaw/telegram | Telegram chat id (topic per Telegram plugin format) | | discord | @openclaw/discord | Discord channel id / DM / thread id | | feishu | @larksuite/openclaw-lark | Lark open_id / chat_id etc. | | openclaw-weixin | @tencent-weixin/openclaw-weixin | WeChat user id — recipient should have messaged the bot first | | qqbot | @openclaw/qqbot | qqbot:c2c:<openid> / qqbot:group:<groupid> |

Common installs:

openclaw plugins install @openclaw/whatsapp
openclaw plugins install @openclaw/telegram
openclaw plugins install @openclaw/discord
openclaw plugins install @larksuite/openclaw-lark
openclaw plugins install @tencent-weixin/openclaw-weixin
openclaw plugins install @openclaw/qqbot

Notes:

  • Every downstream plugin must be configured in advance, and the downstream app must send a message to OpenClaw at least once before the installer can discover candidate targets

  • Provide accountId if the downstream plugin has multiple accounts, else OpenClaw falls back to default

  • to must be a real channel-side id, not a display name

  • Each target is try/catch isolated; one failing downstream will not block others

  • Only the agent's final reply is forwarded — streaming block fragments are dropped

Looki Memory skill / tool

Installing the plugin automatically registers a tool called looki_memory and a skill looki-memory that uses it. The agent can call it directly:

looki_memory(action="me")
looki_memory(action="calendar", start_date="2026-04-01", end_date="2026-04-30")
looki_memory(action="day", on_date="2026-04-29")
looki_memory(action="moment", moment_id="mmt_xxx")
looki_memory(action="moment_files", moment_id="mmt_xxx", highlight=true, limit=20)
looki_memory(action="search", query="met Alice", page=1, page_size=20)
looki_memory(action="for_you", group="vlog", liked=true, limit=20)

Every action reuses channels.openclaw-looki.baseUrl / apiKey, so no separate credentials are needed. Full parameter shape lives in src/tools/memory-tool.ts (LOOKI_MEMORY_TOOL_PARAMETERS).

The fetch has a 30s timeout, and responses are safe-stringified and truncated to 200 KB before being handed to the agent, to keep its context sane.