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

@inline-openclaw/inline

v0.0.13

Published

OpenClaw channel plugin for interacting with an OpenClaw agent via **Inline**.

Readme

@inline-openclaw/inline

OpenClaw channel plugin for interacting with an OpenClaw agent via Inline.

Status: beta (solid foundation; expect iteration).

Quick setup guide: docs/openclaw-setup.md. Create bot/token guide: docs/create-inline-bot.md.

Supports:

  • Inline DMs (ChatType=direct)
  • Inline chats (including top-level thread-style chats) as conversations (ChatType=group)
  • Message replies: OpenClaw replyToId is mapped to Inline replyToMsgId (message id).
  • Native media upload/send for images, videos, and documents from mediaUrl payloads.
  • Emoji reactions via message tool actions (react, reactions).
  • Reaction events on bot-authored messages are surfaced back to the agent as inbound context.

Non-goals (for now):

  • Subthreads: Inline “replyTo” is a message reply, not a thread identifier. We do not expose OpenClaw subthread mode yet (capabilities.threads=false).

Install

Requires OpenClaw 2026.2.9 or newer.

From npm (once published):

openclaw plugins install @inline-openclaw/inline

If the plugin is already installed, update in place:

openclaw config set plugins.installs.inline.spec '"@inline-openclaw/inline@latest"'
openclaw plugins update inline

From a local checkout (dev):

cd /path/to/inline/packages/openclaw-inline
bun run build
openclaw plugins install --link /path/to/inline/packages/openclaw-inline

Configure

Channel config lives under channels.inline (supports account settings, block streaming/chunking, and group tool policy).

Plugin id is inline (for plugins.entries.*). If you enable explicitly, use:

plugins:
  entries:
    inline:
      enabled: true

Minimal setup (token field only):

channels:
  inline:
    enabled: true
    token: "<INLINE_BOT_TOKEN>"

baseUrl defaults to https://api.inline.chat. dmPolicy defaults to pairing (recommended starting point). requireMention defaults to false for groups (set true to require explicit mentions).

Example:

channels:
  inline:
    enabled: true
    baseUrl: "https://api.inline.chat"
    token: "<INLINE_BOT_TOKEN>"

    # DMs:
    dmPolicy: "pairing" # pairing|open|disabled
    allowFrom:
      - "inline:123" # or "user:123" or just "123"

    # Group threads/chats:
    groupPolicy: "allowlist" # allowlist|open|disabled
    groupAllowFrom:
      - "inline:123" # or "user:123" or just "123"
    requireMention: true # optional: default is false
    replyToBotWithoutMention: true # if true, replies to bot messages can bypass mention requirement

    # Inbound context history (used to build richer thread context for the agent):
    historyLimit: 12      # group chats
    dmHistoryLimit: 6     # direct messages

    # Streaming + chunking:
    mediaMaxMb: 20
    blockStreaming: true
    chunkMode: "newline" # length|newline
    blockStreamingCoalesce:
      minChars: 600
      idleMs: 700
      maxChars: 2200

    # Group-level tool policy (for agent tool access in group sessions):
    groups:
      "88":
        requireMention: false
        tools:
          allow: ["message", "web.search"]
        toolsBySender:
          "42":
            allow: ["message"]

If you set dmPolicy: "open", set allowFrom: ["*"].

Outbound Target Semantics

For message send/plugin outbound sends:

  • chat:<id> targets a chat id.
  • user:<id> targets a user id (DM peer).
  • inline:user:<id> and inline:chat:<id> are accepted and normalized.
  • User directory IDs and channels resolve --kind user outputs are returned as user:<id> to keep DM targets explicit.
  • Bare numeric ids are disambiguated against Inline directory data:
    • matches chat only -> sent as chat id
    • matches user only -> sent as user id
    • matches both -> rejected (use explicit chat: or user:)
    • matches neither -> treated as chat id (legacy behavior)

Message Tool RPC Actions

The plugin exposes Inline RPC-backed actions through OpenClaw's message tool. Inline RPC-backed actions use a numeric chat id via to, chatId, or channelId.

  • Replying: reply, thread-reply
  • Reactions: react, reactions
  • Reading/searching: read, search
  • Editing: edit
  • Channels/threads: channel-info, channel-edit, channel-list, channel-create, channel-delete, channel-move, thread-list, thread-create
  • Participants: addParticipant, removeParticipant, leaveGroup, member-info
  • Message lifecycle: delete, unsend
  • Pins: pin, unpin, list-pins
  • Space permissions: permissions

You can gate action groups from config:

channels:
  inline:
    actions:
      reply: true
      reactions: true
      read: true
      search: true
      edit: true
      channels: true
      participants: true
      delete: true
      pins: true
      permissions: true

Multi-account:

channels:
  inline:
    accounts:
      default:
        baseUrl: "https://api.inline.chat"
        token: "<BOT_TOKEN_A>"
      work:
        baseUrl: "https://api.inline.chat"
        token: "<BOT_TOKEN_B>"

Quick Troubleshooting

  • plugin not found: inline / plugins.entries.inline: plugin not found: inline
    • Ensure the plugin is installed and discovered (openclaw plugins list).
  • doctor --fix suggests Inline changes even though channel is healthy
    • Plugin entry id should be inline.
  • Inline: SETUP / no token
    • Ensure channels.inline.token is set and plugin is updated (openclaw plugins update inline).
    • If using dmPolicy: "open", ensure allowFrom: ["*"].