openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
771 lines (770 loc) • 22.6 kB
JSON
{
"id": "signal",
"activation": {
"onStartup": false
},
"channels": [
"signal"
],
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
},
"channelConfigs": {
"signal": {
"schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"capabilities": {
"type": "array",
"items": {
"type": "string"
}
},
"markdown": {
"type": "object",
"properties": {
"tables": {
"type": "string",
"enum": [
"off",
"bullets",
"code",
"block"
]
}
},
"additionalProperties": false
},
"enabled": {
"type": "boolean"
},
"configWrites": {
"type": "boolean"
},
"account": {
"type": "string"
},
"accountUuid": {
"type": "string"
},
"configPath": {
"type": "string"
},
"httpUrl": {
"type": "string"
},
"httpHost": {
"type": "string"
},
"httpPort": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"cliPath": {
"type": "string"
},
"autoStart": {
"type": "boolean"
},
"startupTimeoutMs": {
"type": "integer",
"minimum": 1000,
"maximum": 120000
},
"receiveMode": {
"anyOf": [
{
"type": "string",
"const": "on-start"
},
{
"type": "string",
"const": "manual"
}
]
},
"ignoreAttachments": {
"type": "boolean"
},
"ignoreStories": {
"type": "boolean"
},
"sendReadReceipts": {
"type": "boolean"
},
"dmPolicy": {
"default": "pairing",
"type": "string",
"enum": [
"pairing",
"allowlist",
"open",
"disabled"
]
},
"allowFrom": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"defaultTo": {
"type": "string"
},
"groupAllowFrom": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"groupPolicy": {
"default": "allowlist",
"type": "string",
"enum": [
"open",
"disabled",
"allowlist"
]
},
"contextVisibility": {
"type": "string",
"enum": [
"all",
"allowlist",
"allowlist_quote"
]
},
"groups": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"requireMention": {
"type": "boolean"
},
"ingest": {
"type": "boolean"
},
"tools": {
"type": "object",
"properties": {
"allow": {
"type": "array",
"items": {
"type": "string"
}
},
"alsoAllow": {
"type": "array",
"items": {
"type": "string"
}
},
"deny": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"toolsBySender": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"allow": {
"type": "array",
"items": {
"type": "string"
}
},
"alsoAllow": {
"type": "array",
"items": {
"type": "string"
}
},
"deny": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"historyLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"dmHistoryLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"dms": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"historyLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
}
},
"textChunkLimit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"chunkMode": {
"type": "string",
"enum": [
"length",
"newline"
]
},
"blockStreaming": {
"type": "boolean"
},
"blockStreamingCoalesce": {
"type": "object",
"properties": {
"minChars": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"maxChars": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"idleMs": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"mediaMaxMb": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"reactionNotifications": {
"type": "string",
"enum": [
"off",
"own",
"all",
"allowlist"
]
},
"reactionAllowlist": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"actions": {
"type": "object",
"properties": {
"reactions": {
"type": "boolean"
}
},
"additionalProperties": false
},
"reactionLevel": {
"type": "string",
"enum": [
"off",
"ack",
"minimal",
"extensive"
]
},
"heartbeat": {
"type": "object",
"properties": {
"showOk": {
"type": "boolean"
},
"showAlerts": {
"type": "boolean"
},
"useIndicator": {
"type": "boolean"
}
},
"additionalProperties": false
},
"healthMonitor": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"responsePrefix": {
"type": "string"
},
"apiMode": {
"type": "string",
"enum": [
"auto",
"native",
"container"
]
},
"accounts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"capabilities": {
"type": "array",
"items": {
"type": "string"
}
},
"markdown": {
"type": "object",
"properties": {
"tables": {
"type": "string",
"enum": [
"off",
"bullets",
"code",
"block"
]
}
},
"additionalProperties": false
},
"enabled": {
"type": "boolean"
},
"configWrites": {
"type": "boolean"
},
"account": {
"type": "string"
},
"accountUuid": {
"type": "string"
},
"configPath": {
"type": "string"
},
"httpUrl": {
"type": "string"
},
"httpHost": {
"type": "string"
},
"httpPort": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"cliPath": {
"type": "string"
},
"autoStart": {
"type": "boolean"
},
"startupTimeoutMs": {
"type": "integer",
"minimum": 1000,
"maximum": 120000
},
"receiveMode": {
"anyOf": [
{
"type": "string",
"const": "on-start"
},
{
"type": "string",
"const": "manual"
}
]
},
"ignoreAttachments": {
"type": "boolean"
},
"ignoreStories": {
"type": "boolean"
},
"sendReadReceipts": {
"type": "boolean"
},
"dmPolicy": {
"default": "pairing",
"type": "string",
"enum": [
"pairing",
"allowlist",
"open",
"disabled"
]
},
"allowFrom": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"defaultTo": {
"type": "string"
},
"groupAllowFrom": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"groupPolicy": {
"default": "allowlist",
"type": "string",
"enum": [
"open",
"disabled",
"allowlist"
]
},
"contextVisibility": {
"type": "string",
"enum": [
"all",
"allowlist",
"allowlist_quote"
]
},
"groups": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"requireMention": {
"type": "boolean"
},
"ingest": {
"type": "boolean"
},
"tools": {
"type": "object",
"properties": {
"allow": {
"type": "array",
"items": {
"type": "string"
}
},
"alsoAllow": {
"type": "array",
"items": {
"type": "string"
}
},
"deny": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"toolsBySender": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"allow": {
"type": "array",
"items": {
"type": "string"
}
},
"alsoAllow": {
"type": "array",
"items": {
"type": "string"
}
},
"deny": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"historyLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"dmHistoryLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"dms": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"historyLimit": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
}
},
"textChunkLimit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"chunkMode": {
"type": "string",
"enum": [
"length",
"newline"
]
},
"blockStreaming": {
"type": "boolean"
},
"blockStreamingCoalesce": {
"type": "object",
"properties": {
"minChars": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"maxChars": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"idleMs": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
},
"mediaMaxMb": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"reactionNotifications": {
"type": "string",
"enum": [
"off",
"own",
"all",
"allowlist"
]
},
"reactionAllowlist": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"actions": {
"type": "object",
"properties": {
"reactions": {
"type": "boolean"
}
},
"additionalProperties": false
},
"reactionLevel": {
"type": "string",
"enum": [
"off",
"ack",
"minimal",
"extensive"
]
},
"heartbeat": {
"type": "object",
"properties": {
"showOk": {
"type": "boolean"
},
"showAlerts": {
"type": "boolean"
},
"useIndicator": {
"type": "boolean"
}
},
"additionalProperties": false
},
"healthMonitor": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"responsePrefix": {
"type": "string"
}
},
"required": [
"dmPolicy",
"groupPolicy"
],
"additionalProperties": false
}
},
"defaultAccount": {
"type": "string"
}
},
"required": [
"dmPolicy",
"groupPolicy"
],
"additionalProperties": false
},
"label": "Signal",
"description": "signal-cli linked device; more setup (David Reagans: \"Hop on Discord.\").",
"uiHints": {
"": {
"label": "Signal",
"help": "Signal channel provider configuration including account identity and DM policy behavior. Keep account mapping explicit so routing remains stable across multi-device setups."
},
"dmPolicy": {
"label": "Signal DM Policy",
"help": "Direct message access control (\"pairing\" recommended). \"open\" requires channels.signal.allowFrom=[\"*\"]."
},
"configWrites": {
"label": "Signal Config Writes",
"help": "Allow Signal to write config in response to channel events/commands (default: true)."
},
"account": {
"label": "Signal Account",
"help": "Signal account identifier (phone/number handle) used to bind this channel config to a specific Signal identity. Keep this aligned with your linked device/session state."
},
"configPath": {
"label": "Signal CLI Config Path",
"help": "Optional directory passed to signal-cli via --config when the service needs a non-default signal-cli data path."
}
}
}
}
}