Channels

Linear

Inbound is a Linear webhook signed with Linear-Signature (HMAC-SHA256 hex of the body, no prefix). The adapter plans GraphQL commentCreate for Post and Reply. No media or buttons.

Linear webhooks also fire for comments the bot just posted. Echoing would loop. The example posts help on /help and ignores everything else.

Create a personal API key and a webhook for Comment events. Use the same signing secret Linear puts on Linear-Signature.

export LINEAR_API_KEY='…'
export LINEAR_WEBHOOK_SECRET='…'
export PORT=8080

api_key here is the Linear GraphQL token, not a Caspian API key. Self-host needs no CASPIAN_API_KEY.

cx = Caspian()
cx.channels.add(
    "linear",
    via="self-host",
    api_key=linear_api_key,
    webhook_secret=webhook_secret,
    bot_token="local",
)
const cx = new Caspian()
await cx.channels.add("linear", {
  via: "self-host",
  api_key: linearApiKey,
  webhook_secret,
  bot_token: "local",
})