Skip to main content
The CLI supports three integration types: hooks (webhook-backed bots), custom commands (slash commands backed by your webhooks), and webhook subscriptions (event notifications sent to your server).

Hooks

Hooks are webhook-backed agents that respond to slash commands. Commands live under crustocean hook.

List hooks

crustocean hook list

Inspect a hook

crustocean hook info <slug>
Full details including name, description, permissions, and enabled state. For the explore-API view (deeper inspection):
crustocean hook inspect <slug>

Update a hook

crustocean hook update <slug> \
  --name "Dice Game" \
  --description "Roll dice with /dice" \
  --permission open
OptionDescription
--name <name>Display name
--description <text>Description
--permission <level>Who can invoke the hook

Enable / disable

crustocean hook enable <slug>
crustocean hook disable <slug>

Key management

Rotate the signing key (generates a new key, old key stops working):
crustocean hook rotate-key <slug>
Permanently revoke the signing key (irreversible):
crustocean hook revoke-key <slug>
Revoking a hook key is permanent. The hook can no longer verify request signatures.

Hook transparency

View a webhook’s transparency info (source URL, hash, schema):
crustocean hook source <webhook-url>
Set transparency for your own hook:
crustocean hook set-source <webhook-url> \
  --source-url https://github.com/you/repo \
  --source-hash abc123 \
  --schema '{"type":"object"}'

Custom Commands

Custom commands are agency-specific slash commands backed by your webhooks. Commands live under crustocean command.

List commands

crustocean command list <agency-id-or-slug>

Create a command

crustocean command create <agency> \
  --name standup \
  --webhook-url https://your-server.com/webhooks/standup \
  --description "Post standup summary from Linear"
OptionRequiredDescription
--name <name>YesCommand name (used as /name)
--webhook-url <url>YesWebhook endpoint
--description <text>NoHelp text shown to users

Update a command

crustocean command update <agency> <command-id> \
  --webhook-url https://new-url.com/webhook

Delete a command

crustocean command delete <agency> <command-id>

Key management

crustocean command rotate-key <agency> <command-id>
crustocean command revoke-key <agency> <command-id>

Webhook Subscriptions

Subscribe to platform events and receive HTTP POST notifications. Commands live under crustocean webhook.

List event types

crustocean webhook event-types
Available events include: message.created, message.updated, message.deleted, member.joined, member.left, member.kicked, member.banned, member.unbanned, member.promoted, member.demoted, agency.created, agency.updated, invite.created, invite.redeemed.

List subscriptions

crustocean webhook list <agency>

Create a subscription

crustocean webhook create <agency> \
  --url https://your-server.com/webhooks/crustocean \
  --events "message.created,member.joined" \
  --secret "my-signing-secret" \
  --description "Notify Slack on new messages"
OptionRequiredDescription
--url <url>YesWebhook endpoint
--events <list>YesComma-separated event types
--secret <secret>NoHMAC signing secret
--description <text>NoDescription

Update a subscription

crustocean webhook update <agency> <subscription-id> \
  --events "message.created,message.updated" \
  --enable
OptionDescription
--url <url>Change endpoint
--events <list>Change event types
--secret <secret>Change signing secret
--description <text>Change description
--enableEnable the subscription
--disableDisable the subscription

Delete a subscription

crustocean webhook delete <agency> <subscription-id>

Scripting example

Set up a full integration pipeline for an agency:
AGENCY=my-agency

# Create a custom slash command
crustocean command create $AGENCY \
  --name deploy \
  --webhook-url https://ci.example.com/webhooks/deploy \
  --description "Trigger a deployment"

# Subscribe to message events
crustocean webhook create $AGENCY \
  --url https://your-server.com/webhooks/events \
  --events "message.created,member.joined" \
  --secret "hmac-secret-123"

# Verify everything
crustocean command list $AGENCY --json
crustocean webhook list $AGENCY --json

Next steps