msg-gateway 0.3.0

Multi-protocol message gateway for AI agents — bridges Telegram, Discord, Slack, Email to Pipelit and other backends
Documentation
{
  "gateway": {
    "listen": "127.0.0.1:8080",
    "admin_token": "${GATEWAY_ADMIN_TOKEN}",
    "default_backend": "pipelit",
    "adapters_dir": "./adapters",
    "adapter_port_range": [9000, 9100],
    "guardrails_dir": "./guardrails",
    "backends_dir": "./backends",
    "backend_port_range": [9200, 9300]
  },
  "backends": {
    "pipelit": {
      "protocol": "pipelit",
      "inbound_url": "http://localhost:8000/api/v1/inbound",
      "token": "${PIPELIT_API_TOKEN}",
      "active": true
    },
    "opencode": {
      "protocol": "external",
      "adapter_dir": "./backends/opencode",
      "token": "${OPENCODE_BACKEND_TOKEN}",
      "active": true,
      "config": {
        "base_url": "http://127.0.0.1:4096",
        "token": "${OPENCODE_API_TOKEN}",
        "model": {
          "providerID": "anthropic",
          "modelID": "claude-sonnet-4-5"
        }
      }
    }
  },
  "auth": {
    "send_token": "${GATEWAY_SEND_TOKEN}"
  },
  "health_checks": {
    "pipelit": {
      "url": "http://localhost:8000/health",
      "interval_seconds": 30,
      "alert_after_failures": 3,
      "notify_credentials": ["yao_telegram"]
    }
  },
  "credentials": {
    "generic_chat": {
      "adapter": "generic",
      "backend": "pipelit",
      "token": "${GENERIC_CHAT_TOKEN}",
      "active": true,
      "emergency": false,
      "route": {
        "workflow_slug": "my-workflow",
        "trigger_node_id": "node_chat_trigger"
      }
    },
    "yao_telegram": {
      "adapter": "telegram",
      "backend": "pipelit",
      "token": "${YAO_TELEGRAM_TOKEN}",
      "active": false,
      "emergency": true,
      "config": {
        "poll_timeout": 30
      },
      "route": {
        "workflow_slug": "my-workflow",
        "trigger_node_id": "node_telegram_trigger"
      }
    },
    "dev_opencode": {
      "adapter": "generic",
      "backend": "opencode",
      "token": "${DEV_OPENCODE_TOKEN}",
      "active": false,
      "emergency": false,
      "route": {
        "agent": "coder"
      }
    }
  }
}