open-index/open-npm huggingface dataset:
npm package: @opin-cli/bluebubbles
Description: Opin BlueBubbles channel plugin
Latest version: 2026.2.10

# @opin-cli/bluebubbles

iMessage channel plugin for **Opin** via [BlueBubbles](https://bluebubbles.app).

Bring iMessage into your Opin gateway — receive and reply to iMessages, reactions, and attachments from any device using the BlueBubbles server running on a Mac.

## Install

```bash
opin plugins install @opin-cli/bluebubbles
```

Restart the gateway after install.

## Requirements

- A Mac running [BlueBubbles Server](https://bluebubbles.app/downloads/)
- BlueBubbles Server accessible from your Opin gateway (local network or via tunnel)

## Quick Setup

1. Open BlueBubbles Server → Settings → enable **Webhook notifications**
2. Note your server URL and password
3. Configure Opin:

```json
{
  "channels": {
    "bluebubbles": {
      "serverUrl": "http://your-mac-host:1234",
      "password": "your-server-password",
      "webhookPath": "/webhooks/bluebubbles"
    }
  }
}
```

4. Point BlueBubbles Server's webhook URL at your gateway:
   `http://your-gateway-host/webhooks/bluebubbles`

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `serverUrl` | string | required | BlueBubbles server base URL |
| `password` | string | required | Server password |
| `webhookPath` | string | `/webhooks/bluebubbles` | Gateway webhook path |
| `actions.reactions` | boolean | `true` | Enable tapback reactions |

## Features

- Receive iMessages, group chats, and attachments
- Send text replies and tapback reactions
- Media attachments via `<media:...>` placeholders
- Automatic chat GUID resolution from phone numbers

## CLI

```bash
opin message send --channel bluebubbles --to "+15551234567" "Hello from Opin"
```

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [BlueBubbles](https://bluebubbles.app)

## License

MIT
npm package: @opin-cli/diagnostics-otel
Description: Opin diagnostics OpenTelemetry exporter
Latest version: 2026.2.10

# @opin-cli/diagnostics-otel

OpenTelemetry diagnostics plugin for **Opin**.

Export traces, metrics, and logs from your Opin gateway to any OpenTelemetry-compatible backend — Grafana, Jaeger, Honeycomb, Datadog, and more.

## Install

```bash
opin plugins install @opin-cli/diagnostics-otel
```

Restart the gateway after install.

## Quick Setup

```json
{
  "plugins": {
    "entries": {
      "diagnostics-otel": {
        "config": {
          "endpoint": "http://localhost:4318",
          "serviceName": "opin-gateway"
        }
      }
    }
  }
}
```

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `endpoint` | string | `http://localhost:4318` | OTLP HTTP exporter endpoint |
| `serviceName` | string | `opin-gateway` | Service name in traces |
| `enabled` | boolean | `true` | Enable/disable the plugin |

## What gets traced

- Incoming messages per channel
- Agent tool invocations
- Gateway request lifecycle
- Plugin execution spans

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [OpenTelemetry](https://opentelemetry.io)

## License

MIT
npm package: @opin-cli/discord
Description: Opin Discord channel plugin
Latest version: 2026.2.10

# @opin-cli/discord

Discord channel plugin for **Opin**.

Connect your Opin gateway to Discord — respond to DMs and server messages, use slash commands, and run your AI agent inside any Discord server or thread.

## Install

```bash
opin plugins install @opin-cli/discord
```

Restart the gateway after install.

## Requirements

- A Discord bot token ([create one here](https://discord.com/developers/applications))
- Bot invited to your server with the `bot` and `applications.commands` scopes

## Quick Setup

1. Create a bot at [discord.com/developers](https://discord.com/developers/applications)
2. Copy the bot token
3. Configure Opin:

```json
{
  "channels": {
    "discord": {
      "token": "${DISCORD_BOT_TOKEN}"
    }
  }
}
```

4. Invite the bot to your server using the OAuth2 URL generator

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `token` | string | required | Discord bot token |
| `dmPolicy` | string | `"pairing"` | Access control for DMs |
| `allowedGuilds` | string[] | `[]` | Restrict to specific server IDs |

## Features

- Respond to DMs and server messages
- Slash command support
- Thread-aware conversations
- Pairing code access control

## CLI

```bash
opin message send --channel discord --to "username#0000" "Hello from Opin"
```

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Discord Developer Portal](https://discord.com/developers)

## License

MIT
npm package: @opin-cli/feishu
Description: Opin Feishu/Lark channel plugin (community maintained by @m1heng)
Latest version: 2026.2.10

# @opin-cli/feishu

Feishu / Lark channel plugin for **Opin**.

Connect your Opin gateway to Feishu (Lark) — receive and reply to messages in Feishu DMs, group chats, and bots using the Lark Open Platform API.

## Install

```bash
opin plugins install @opin-cli/feishu
```

Restart the gateway after install.

## Requirements

- A Feishu / Lark app ([create one here](https://open.feishu.cn/app))
- App ID and App Secret from the Lark Developer Console

## Quick Setup

1. Create an app at [open.feishu.cn](https://open.feishu.cn/app)
2. Enable **Bot** capability and subscribe to message events
3. Configure Opin:

```json
{
  "channels": {
    "feishu": {
      "appId": "${FEISHU_APP_ID}",
      "appSecret": "${FEISHU_APP_SECRET}"
    }
  }
}
```

4. Set the webhook URL in your app's Event Subscriptions to your gateway endpoint

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `appId` | string | required | Lark app ID |
| `appSecret` | string | required | Lark app secret |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Features

- Receive and reply to Feishu DMs and group messages
- Rich card message support
- Webhook-based event handling

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Feishu Open Platform](https://open.feishu.cn)

## License

MIT
npm package: @opin-cli/lobster
Description: Lobster workflow tool plugin (typed pipelines + resumable approvals)
Latest version: 2026.2.10

# @opin-cli/lobster

[Lobster](https://github.com/mariozechner/lobster) workflow plugin for **Opin**.

Adds the `lobster` tool to your Opin agent — enabling typed JSON-first pipelines, multi-step workflows, and human-in-the-loop approvals without changing core.

## Install

```bash
opin plugins install @opin-cli/lobster
```

Restart the gateway after install.

## What is Lobster?

Lobster is a standalone workflow shell with typed JSON pipelines and an approval/resume system. This plugin connects it to Opin so your agent can trigger and compose Lobster workflows as tools.

## Enable

The lobster tool is registered as `optional: true`. Enable it per-agent in your config:

```json
{
  "agents": {
    "list": [
      {
        "id": "main",
        "tools": {
          "allow": ["lobster"]
        }
      }
    ]
  }
}
```

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `lobsterPath` | string | auto-detected | Absolute path to the `lobster` binary |

Use an absolute `lobsterPath` in production to avoid PATH hijacking.

## Security

- Runs `lobster` as a local subprocess — scoped to your host only
- Tool policy applies: only allowed tools can be invoked via `opin.invoke`
- Use a tight `tools.allow` list to prevent arbitrary tool calls from workflows

## Using `opin.invoke` (Lobster → Opin tools)

Lobster pipelines can call back into Opin tools via an `opin.invoke` step (e.g. `gog`, `gh`, `message.send`). The gateway must be running and the target tool must be in the agent allowlist.

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Lobster](https://github.com/mariozechner/lobster)

## License

MIT
npm package: @opin-cli/matrix
Description: Opin Matrix channel plugin
Latest version: 2026.2.10

# @opin-cli/matrix

Matrix channel plugin for **Opin**.

Connect your Opin gateway to the [Matrix](https://matrix.org) network — receive and reply to encrypted DMs and room messages across any Matrix homeserver.

## Install

```bash
opin plugins install @opin-cli/matrix
```

Restart the gateway after install.

## Requirements

- A Matrix account for your bot (on any homeserver, e.g. `matrix.org`)
- Access token for the bot account

## Quick Setup

1. Register a bot account on your Matrix homeserver
2. Get the access token (`/_matrix/client/v3/login`)
3. Configure Opin:

```json
{
  "channels": {
    "matrix": {
      "homeserverUrl": "https://matrix.org",
      "accessToken": "${MATRIX_ACCESS_TOKEN}",
      "userId": "@yourbot:matrix.org"
    }
  }
}
```

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `homeserverUrl` | string | required | Matrix homeserver URL |
| `accessToken` | string | required | Bot access token |
| `userId` | string | required | Full Matrix user ID (`@bot:server`) |
| `dmPolicy` | string | `"pairing"` | Access control for DMs |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Features

- End-to-end encrypted DMs (via matrix-sdk-crypto)
- Room message support
- Pairing code access control
- Works with Element, Cinny, and any Matrix client

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Matrix.org](https://matrix.org)

## License

MIT
npm package: @opin-cli/msteams
Description: Opin Microsoft Teams channel plugin
Latest version: 2026.2.10

# @opin-cli/msteams

Microsoft Teams channel plugin for **Opin**.

Connect your Opin gateway to Microsoft Teams — respond to messages in chats, channels, and group conversations using the Bot Framework.

## Install

```bash
opin plugins install @opin-cli/msteams
```

Restart the gateway after install.

## Requirements

- A Microsoft Azure account
- A registered Bot Framework app with a Teams channel enabled

## Quick Setup

1. Register a bot at [dev.botframework.com](https://dev.botframework.com) or Azure Bot Service
2. Enable the **Microsoft Teams** channel
3. Note your App ID and App Password
4. Configure Opin:

```json
{
  "channels": {
    "msteams": {
      "appId": "${TEAMS_APP_ID}",
      "appPassword": "${TEAMS_APP_PASSWORD}"
    }
  }
}
```

5. Set your bot's messaging endpoint to:
   `https://your-gateway-host/webhooks/msteams`

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `appId` | string | required | Bot Framework App ID |
| `appPassword` | string | required | Bot Framework App Password |
| `dmPolicy` | string | `"pairing"` | Access control policy |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Features

- Personal chat (1:1) and group chat support
- Channel mention responses
- Adaptive card message formatting
- Secure webhook signature verification

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Azure Bot Service](https://azure.microsoft.com/products/bot-services)

## License

MIT
npm package: @opin-cli/nextcloud-talk
Description: Opin Nextcloud Talk channel plugin
Latest version: 2026.2.10

# @opin-cli/nextcloud-talk

Nextcloud Talk channel plugin for **Opin**.

Connect your Opin gateway to [Nextcloud Talk](https://nextcloud.com/talk/) — self-hosted, privacy-respecting messaging for teams. Run your AI agent inside any Nextcloud Talk conversation.

## Install

```bash
opin plugins install @opin-cli/nextcloud-talk
```

Restart the gateway after install.

## Requirements

- A running Nextcloud instance with the Talk app enabled
- A bot user account on your Nextcloud instance

## Quick Setup

1. Create a dedicated bot user on your Nextcloud instance
2. Generate an app password for the bot user (Settings → Security)
3. Configure Opin:

```json
{
  "channels": {
    "nextcloud-talk": {
      "serverUrl": "https://your-nextcloud.example.com",
      "username": "opin-bot",
      "password": "${NEXTCLOUD_APP_PASSWORD}"
    }
  }
}
```

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `serverUrl` | string | required | Nextcloud instance base URL |
| `username` | string | required | Bot account username |
| `password` | string | required | Bot account app password |
| `pollInterval` | number | `2000` | Message poll interval (ms) |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Features

- 1:1 and group conversation support
- Self-hosted — your data stays on your server
- Works with Nextcloud Talk desktop and mobile apps

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Nextcloud Talk](https://nextcloud.com/talk/)

## License

MIT
npm package: @opin-cli/nostr
Description: Opin Nostr channel plugin for NIP-04 encrypted DMs
Latest version: 2026.2.10

# @opin-cli/nostr

Nostr channel plugin for **Opin**.

Connect your Opin gateway to the [Nostr](https://nostr.com) decentralized network — receive and reply to NIP-04 encrypted direct messages from any Nostr client (Damus, Amethyst, etc.).

## Install

```bash
opin plugins install @opin-cli/nostr
```

Restart the gateway after install.

## Quick Setup

1. Generate a Nostr keypair (if you don't have one):

   ```bash
   # Using nak CLI
   nak key generate
   ```

2. Configure Opin:

   ```json
   {
     "channels": {
       "nostr": {
         "privateKey": "${NOSTR_PRIVATE_KEY}",
         "relays": ["wss://relay.damus.io", "wss://nos.lol"]
       }
     }
   }
   ```

3. Set the environment variable:

   ```bash
   export NOSTR_PRIVATE_KEY="nsec1..."
   ```

4. Restart the gateway — your bot is now reachable on Nostr

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `privateKey` | string | required | Bot's private key (nsec or hex) |
| `relays` | string[] | `["wss://relay.damus.io", "wss://nos.lol"]` | WebSocket relay URLs |
| `dmPolicy` | string | `"pairing"` | Access control: `pairing`, `allowlist`, `open`, `disabled` |
| `allowFrom` | string[] | `[]` | Allowed sender pubkeys (npub or hex) |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Access Control

- **pairing** (default): Unknown senders receive a pairing code to request access
- **allowlist**: Only pubkeys in `allowFrom` can message the bot
- **open**: Anyone can message the bot
- **disabled**: DMs are disabled

## Protocol Support

| NIP | Status | Notes |
|---|---|---|
| NIP-01 | Supported | Basic event structure |
| NIP-04 | Supported | Encrypted DMs (kind:4) |
| NIP-17 | Planned | Gift-wrapped DMs (v2) |

## Security Notes

- Private keys are never logged
- Event signatures are verified before processing
- Use environment variables for keys — never commit them to config files
- Use `allowlist` mode in production for controlled access

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Nostr.com](https://nostr.com)

## License

MIT
npm package: @opin-cli/voice-call
Description: Opin voice-call plugin
Latest version: 2026.2.10

# @opin-cli/voice-call

Voice call plugin for **Opin**.

Give your Opin agent a phone number. Make and receive AI-powered voice calls using Twilio, Telnyx, or Plivo — with real-time speech streaming and TTS.

## Install

```bash
opin plugins install @opin-cli/voice-call
```

Restart the gateway after install.

## Providers

| Provider | Notes |
|---|---|
| **Twilio** | Programmable Voice + Media Streams |
| **Telnyx** | Call Control v2 |
| **Plivo** | Voice API + XML |
| **Mock** | Local dev, no network |

## Quick Setup

```json5
{
  "plugins": {
    "entries": {
      "voice-call": {
        "config": {
          "provider": "twilio", // or "telnyx" | "plivo" | "mock"
          "fromNumber": "+15550001234",

          "twilio": {
            "accountSid": "ACxxxxxxxx",
            "authToken": "your_token"
          },

          // Expose the webhook (pick one):
          // "publicUrl": "https://example.ngrok.app/voice/webhook",
          // "tunnel": { "provider": "ngrok" },
          // "tailscale": { "mode": "funnel", "path": "/voice/webhook" }
        }
      }
    }
  }
}
```

## CLI

```bash
opin voicecall call --to "+15555550123" --message "Hello from Opin"
opin voicecall continue --call-id <id> --message "Any questions?"
opin voicecall speak --call-id <id> --message "One moment"
opin voicecall end --call-id <id>
opin voicecall status --call-id <id>
opin voicecall tail
opin voicecall expose --mode funnel
```

## Agent Tool

Tool name: `voice_call`

| Action | Parameters |
|---|---|
| `initiate_call` | `message`, `to?`, `mode?` |
| `continue_call` | `callId`, `message` |
| `speak_to_user` | `callId`, `message` |
| `end_call` | `callId` |
| `get_status` | `callId` |

## TTS

Voice calls use the core `messages.tts` config (OpenAI or ElevenLabs). Override per-plugin:

```json5
{
  "tts": {
    "provider": "openai",
    "openai": { "voice": "alloy" }
  }
}
```

## Notes

- Twilio/Telnyx/Plivo require a **publicly reachable** webhook URL
- `mock` provider works without any external account (dev only)
- Webhook signatures are verified for Twilio, Telnyx, and Plivo

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Twilio](https://twilio.com) · [Telnyx](https://telnyx.com) · [Plivo](https://plivo.com)

## License

MIT
npm package: @opin-cli/zalo
Description: Opin Zalo channel plugin
Latest version: 2026.2.10

# @opin-cli/zalo

Zalo channel plugin for **Opin** (Official Bot API).

Connect your Opin gateway to [Zalo](https://zalo.me) using the official Zalo Bot API — receive and reply to messages from Zalo users via your verified Zalo OA (Official Account).

## Install

```bash
opin plugins install @opin-cli/zalo
```

Restart the gateway after install.

## Requirements

- A [Zalo Official Account](https://oa.zalo.me) (OA)
- App ID and App Secret from the [Zalo Developer Portal](https://developers.zalo.me)

## Quick Setup

1. Create an app at [developers.zalo.me](https://developers.zalo.me)
2. Link it to your OA and enable messaging permissions
3. Configure Opin:

```json
{
  "channels": {
    "zalo": {
      "appId": "${ZALO_APP_ID}",
      "appSecret": "${ZALO_APP_SECRET}",
      "oaToken": "${ZALO_OA_ACCESS_TOKEN}"
    }
  }
}
```

4. Set your webhook URL in the Zalo Developer Portal to:
   `https://your-gateway-host/webhooks/zalo`

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `appId` | string | required | Zalo app ID |
| `appSecret` | string | required | Zalo app secret |
| `oaToken` | string | required | OA access token |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Features

- Receive and reply to Zalo user messages
- Official API — stable and policy-compliant
- Text, image, and file message support

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [Zalo Developer Portal](https://developers.zalo.me)

## License

MIT
npm package: @opin-cli/zalouser
Description: Opin Zalo Personal Account plugin via zca-cli
Latest version: 2026.2.10

# @opin-cli/zalouser

Zalo personal account plugin for **Opin** (via zca-cli).

Connect your Opin gateway to Zalo using a personal user account — receive and reply to messages from friends and groups without needing an Official Account.

> **Warning:** Automating personal Zalo accounts may violate Zalo's terms of service and can result in account suspension. Use at your own risk. This is an unofficial integration.

## Install

```bash
opin plugins install @opin-cli/zalouser
```

Restart the gateway after install.

## Requirements

- [zca-cli](https://zca-cli.dev) installed and authenticated on your host
- A personal Zalo account logged in via zca-cli

## Quick Setup

1. Install and log in to zca-cli:

   ```bash
   npm install -g zca-cli
   zca login
   ```

2. Configure Opin:

```json
{
  "channels": {
    "zalouser": {
      "zcaPath": "/usr/local/bin/zca",
      "enabled": true
    }
  }
}
```

## Configuration

| Key | Type | Default | Description |
|---|---|---|---|
| `zcaPath` | string | auto-detected | Absolute path to the `zca` binary |
| `dmPolicy` | string | `"pairing"` | Access control: `pairing`, `allowlist`, `open` |
| `allowFrom` | string[] | `[]` | Allowed Zalo user IDs |
| `enabled` | boolean | `true` | Enable/disable the channel |

## Features

- Send and receive Zalo personal messages
- Group chat support
- Pairing code access control
- Friend and group lookup

## Difference from `@opin-cli/zalo`

| | `@opin-cli/zalo` | `@opin-cli/zalouser` |
|---|---|---|
| Account type | Official Account (OA) | Personal account |
| API | Official Zalo Bot API | Unofficial (zca-cli) |
| Stability | High | Lower (may break on Zalo updates) |
| Risk | None | Account suspension risk |

## Links

- [Opin docs](https://docs.opin.squareexp.com)
- [zca-cli](https://zca-cli.dev)

## License

MIT
npm package: @opinel19/pixeleye
Description: CLI tool to analyze localized UI screenshots with Gemini or ChatGPT.
Latest version: 0.1.1

PixelEye is an intelligent command-line interface (CLI) designed to streamline the QA and localization process. By leveraging advanced Vision AI, it analyzes application screenshots to identify common UI friction points that traditional testing tools often miss.

Key Features:

Translation Integrity: Detects missing translations or placeholder strings.

Overflow Detection: Identifies text that breaks containers or gets clipped due to length.

Layout Quality: Flags poor readability, such as sub-optimal line wrapping (e.g., words split into 3+ lines).

Context-Aware Analysis: Understands the target language to ensure the UI adapts correctly to different script lengths.

## Quick Start

### Homebrew (macOS)

1. Install via Homebrew:
   ```bash
   brew install --formula https://raw.githubusercontent.com/opinel19/pixeleye/main/Formula/pixeleye.rb
   ```

2. Run the CLI:
   ```bash
   pixeleye
   ```

1. Install dependencies:
   ```bash
   npm install
   ```

2. Run the CLI:
   ```bash
   npm start
   ```

3. Follow the prompts to select provider, add API key, image paths, and languages.

## Notes

- Gemini and ChatGPT require valid API keys.
- Supported image types: PNG, JPG, JPEG, WEBP.