{"id":14008172,"url":"https://github.com/irccloud/irccat","last_synced_at":"2026-01-14T13:44:42.618Z","repository":{"id":15793155,"uuid":"78742790","full_name":"irccloud/irccat","owner":"irccloud","description":"cat to IRC","archived":false,"fork":false,"pushed_at":"2025-07-07T17:42:27.000Z","size":248,"stargazers_count":121,"open_issues_count":9,"forks_count":27,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-11-22T16:00:03.569Z","etag":null,"topics":["go","irc","irc-bot","irccat","netcat","pipe","unix","webhook"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/irccloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-01-12T12:21:26.000Z","updated_at":"2025-09-25T20:32:17.000Z","dependencies_parsed_at":"2024-06-18T21:34:55.928Z","dependency_job_id":"43cb2f9d-96d3-40a7-b939-ed9dab2ca710","html_url":"https://github.com/irccloud/irccat","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/irccloud/irccat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irccloud%2Firccat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irccloud%2Firccat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irccloud%2Firccat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irccloud%2Firccat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/irccloud","download_url":"https://codeload.github.com/irccloud/irccat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irccloud%2Firccat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28421979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","irc","irc-bot","irccat","netcat","pipe","unix","webhook"],"created_at":"2024-08-10T11:01:21.713Z","updated_at":"2026-01-14T13:44:42.596Z","avatar_url":"https://github.com/irccloud.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# irccat\n\u003ca href=\"https://www.irccloud.com/invite?channel=%23irccat\u0026amp;hostname=irc.irccloud.com\u0026amp;port=6697\u0026amp;ssl=1\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/IRC-%23irccat-1e72ff.svg?style=flat\"  height=\"20\"\u003e\u003c/a\u003e\n\nA reimplementation of [irccat](https://github.com/RJ/irccat), the\noriginal ChatOps tool, in Go.\n\nirccat lets you easily send events to IRC channels from scripts and\nother applications.\n\n## Installation\n\nDownload the [latest\nrelease](https://github.com/irccloud/irccat/releases) from Github, put\nthe [example config](examples/irccat.json)\nin `/etc/irccat.json` or the local directory and customise it, and run!\n\nA Docker container is also [provided](https://github.com/irccloud/irccat/pkgs/container/irccat) at `ghcr.io/irccloud/irccat`.\n\n## TCP → IRC\n\nJust cat a string to the TCP port - it'll be sent to the first channel\ndefined in your channel list:\n\n    echo \"Hello world\" | nc irccat-host 12345\n\nOr specify a channel or nickname to send to:\n\n    echo \"#channel Hello world\" | nc irccat-host 12345\n    echo \"@nick Hello world\" | nc irccat-host 12345\n\nYou can also send to multiple recipients at once:\n\n    echo \"#channel,@nick Hello world | nc irccat-host 12345\n\nAnd set a channel topic:\n\n    echo \"%TOPIC #channel Channel topic\" | nc irccat-host 12345\n\nIRC formatting is supported (see a full [list of codes](dispatcher/colours.go#L5)):\n\n    echo \"Status is%GREEN OK %NORMAL\" | nc irccat-host 12345\n\n## HTTP → IRC\n\nHTTP listeners are configured by setting keys under `http.listeners`.\n\n### Generic HTTP Endpoint\n```json\n\"generic\": true\n```\n\nAn endpoint for sending messages similar to the TCP port. You can use curl in lieu\nof netcat, with `-d @-` to read POST data from stdin, like so:\n\n    echo \"Hello world\" | curl -d @- http://irccat-host/send\n\n### Generic HTTP Endpoint with authentication\n\n```json\n\"generic\": {\n    \"secret\": \"my_secret\"\n}\n```\n\nAdding an optional secret allows you to require a single secret token before sending\nmessages to the specified channels. (Using HTTPS is recommended to ensure key security)\n\n    echo \"Hello world\" | curl -H \"Authorization: Bearer my_secret\" -d @- http://irccat-host/send\n\n### Grafana Webhook\n```json\n\"grafana\": \"#channel\"\n```\n\nGrafana alerts can be sent to `/grafana`. They will be sent to the\nchannel defined in `http.listeners.grafana`. Note that this endpoint is currently\nunauthenticated.\n\n### GitHub Webhook\n```json\n\"github\": {\n\t\"secret\": \"my_secret\",\n\t\"default_channel\": \"#channel\",\n\t\"repositories\": {\n\t    \"irccat\": \"#irccat-dev\"\n\t}\n}\n```\n\nReceives GitHub webhooks at `/github`. Currently supports issues, issue comments,\npull requests, pushes, and releases. The webhook needs to be configured to post data\nas JSON, not as form-encoded.\n\nThe destination channel for notifications from each repository is set in\n`http.listeners.github.repositories.repo_name`, where `repo_name` is the name of the\nrepository, lowercased.\n\nIf `http.listeners.github.default_channel` is set, received notifications will be\nsent to this channel unless overridden in `http.listeners.github.repositories`. Otherwise,\nunrecognised repositories will be ignored.\n\nGitHub can be configured to deliver webhooks to irccat on an organisation level which, combined\nwith the `default_channel` setting, significantly reduces configuration effort compared to\nGitHub's old integrations system.\n\n### Prometheus Alertmanager Webhook\n```json\n\"prometheus\": \"#channel\"\n```\n\nReceives [Prometheus Alertmanager webhooks](https://prometheus.io/docs/alerting/configuration/#webhook_config) at `/prometheus`. They will be sent to the channel defined in `http.listeners.prometheus`. Note that this endpoint is unauthenticated.\n\n## IRC → Shell\nYou can use irccat to execute commands from IRC:\n\n    ?commandname string of arguments\n\nThis will call your `commands.handler` script, with the following\nenvironment variables:\n\n* `IRCCAT_COMMAND`: The name of the command, without the preceding `?`\n  (\"commandname\" in this example)\n* `IRCCAT_ARGS`: The arguments provided (\"string of arguments\" in this\n  example)\n* `IRCCAT_NICK`: Nickname of the calling user\n* `IRCCAT_USER`: Username of the calling user\n* `IRCCAT_HOST`: Hostname of the calling user\n* `IRCCAT_CHANNEL`: Channel the command was issued in (may be blank if\n  issued in PM)\n* `IRCCAT_RESPOND_TO`: The nick or channel that the STDOUT of the\n  command will be sent to\n* `IRCCAT_RAW`: The raw IRC line received\n\nThe command handler's STDOUT will be sent back to the nick or channel\nwhere the command was issued.\n\nAn example python command handler, which dispatches commands to\nindividual shell scripts, can be found in\n[examples/command_handler.py](examples/command_handler.py).\n\nirccat will only recognise commands from users in private message if\nthe user is joined to `commands.auth_channel` defined in the config.\n\n## Full list of differences from RJ/irccat\n* Supports TLS connections to IRC servers.\n* HTTP endpoint handlers.\n* Doesn't support !join, !part commands, but does automatically reload\n  the config and join new channels.\n* Arguments are passed as environment variables to the command handler\n  script, rather than as a single argument.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firccloud%2Firccat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firccloud%2Firccat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firccloud%2Firccat/lists"}