{"id":38357006,"url":"https://github.com/ircdocs/modern-irc","last_synced_at":"2026-01-17T03:16:50.804Z","repository":{"id":3090800,"uuid":"48411978","full_name":"ircdocs/modern-irc","owner":"ircdocs","description":"A useful overview and reference to the IRC client protocol as it is implemented today.","archived":false,"fork":false,"pushed_at":"2025-10-02T05:57:24.000Z","size":4661,"stargazers_count":214,"open_issues_count":45,"forks_count":38,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-10-02T07:23:27.420Z","etag":null,"topics":["ctcp","irc","irc-protocol"],"latest_commit_sha":null,"homepage":"http://modern.ircdocs.horse/","language":"Sass","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ircdocs.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-12-22T05:22:02.000Z","updated_at":"2025-10-02T05:57:29.000Z","dependencies_parsed_at":"2024-11-03T08:19:54.025Z","dependency_job_id":"8b164c9b-1de3-4b51-bffd-ffbe22893007","html_url":"https://github.com/ircdocs/modern-irc","commit_stats":{"total_commits":370,"total_committers":32,"mean_commits":11.5625,"dds":"0.31081081081081086","last_synced_commit":"e50a3b73feb63b57406f9036716e7c69599d1b2a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ircdocs/modern-irc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ircdocs%2Fmodern-irc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ircdocs%2Fmodern-irc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ircdocs%2Fmodern-irc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ircdocs%2Fmodern-irc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ircdocs","download_url":"https://codeload.github.com/ircdocs/modern-irc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ircdocs%2Fmodern-irc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28492626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T02:39:23.645Z","status":"ssl_error","status_checked_at":"2026-01-17T02:34:19.649Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["ctcp","irc","irc-protocol"],"created_at":"2026-01-17T03:16:50.130Z","updated_at":"2026-01-17T03:16:50.792Z","avatar_url":"https://github.com/ircdocs.png","language":"Sass","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Modern IRC Documents\n\nThis site contains documents describing the IRC protocol and related technologies. The documents hosted here are intended to be useful to software developers working with IRC.\n\n* [Modern IRC Client Protocol](http://modern.ircdocs.horse/) document\n* [IRC Formatting](http://modern.ircdocs.horse/formatting.html) document\n* [Client-to-Client Protocol (CTCP)](http://modern.ircdocs.horse/ctcp.html) document\n\nHave questions, suggestions, or want to contribute? Join us on IRC to discuss the project and documentation: #ircdocs on [Libera.Chat](https://libera.chat/).\n\nFor suggestions of other documents to create / maintain, please [create an issue](https://github.com/ircdocs/modern-irc/issues) or [send me an email](mailto:daniel@danieloaks.net)!\n\nThe behaviour and constants described in these documents SHOULD converge, and/or be interoperable with the majority of IRC software. These documents should allow a client or server author to build software which can communicate with almost any other piece of IRC software it interacts with.\n\nThese documents contain existing behaviour and what we consider best-practices for new software. Where external, up-to-date and authoritative specifications exist for commands/messages/behaviours, we prefer to link to those rather than needlessly rewrite them (see the Client Protocol's [`CAP`](http://modern.ircdocs.horse/#cap-message) message for an example of this).\n\nThese documents aren't RFCs. I can see the content from them being used in RFCs in the future, but right now I'm just concerned with creating good documents that help push IRC forward. If someone is making up a proper RFC, feel free to use anything from these documents -- Just respect the authors section at the top of the document if a decent amount of text/structure is used from it.\n\nIf something written in these documents isn't correct for or interoperable with an IRC client / server / network you know of, please open an issue or send me an [email](mailto:daniel@danieloaks.net). Pull requests are appreciated.\n\n---\n\n\n## Custom Liquid tags\n\nThese custom Liquid tags simplify referring to different parts of the IRC protocol, and can be used in the Modern doc:\n\n    {% commandheader WHO %} and {% messageheader WHO %}\n    - create the WHO message header, with an appropriate ID\n\n    {% command WHO %} and {% message WHO %}\n    - link to the WHO message\n\n    {% numericheader RPL_WELCOME %}\n    - create the `RPL_WELCOME` numeric header\n    - numeric data MUST exist in the `_data/modern.yml` file\n\n    {% numeric RPL_WELCOME %}\n    - link to the `RPL_WELCOME` numeric\n    - numeric data MUST exist in the `_data/modern.yml` file\n\n    {% isupportheader TARGMAX %}\n    - create the ISUPPORT TARGMAX parameter header\n\n    {% isupport TARGMAX %}\n    - link to the TARGMAX ISUPPORT parameter\n\n\n---\n\n\n## Modern IRC Client Protocol\n\nThis is an attempt to create an updated document about how the IRC client protocol works these days.\n\nWe specify commands, messages and numerics as SHOULD and MUST based on how much of the IRC software out there today uses them (as well as the guidance of the RFCs and common-sense). Someone writing a client or server based off this document SHOULD end up with an implementation that interacts nicely with most IRC software and networks out there today.\n\nThis ignores the S2S protocol. The reasons for this are discussed in the document. This document includes bits and pieces cherry-picked from the RFCs, [IRCv3](http://ircv3.net/), Internet-Drafts, and commands/replies that have generally been accepted by the IRC community.\n\n\n## IRC Formatting\n\nDescribes what I consider to be the formatting characters and methods understood by basically everything. This includes colors, bold, italics, formatting reset codes, etc.\n\nIn this document, I describe what I think is the most sane way to interpret them. This includes the edge-cases that aren't normally explored in similar documents, based on what clients tend to do today.\n\n\n## Client-to-Client Protocol (CTCP)\n\nDescribes a subset of CTCP that is sane and lets software interoperate with most of the other IRC software out there today. Leaves out quoting mechanisms defined by earlier specifications that have not been widely implemented nor followed today, and defines the messages that most clients implementing CTCP should be aware of.\n\n## Building\n\nInstall dependencies:\n\n```\nbundle config set --local path 'vendor/bundle'\nbundle install\n```\n\nThen, either:\n\n* `bundle exec jekyll build` to write locally in `_site/`\n* `bundle exec jekyll serve --incremental` to start a webserver\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fircdocs%2Fmodern-irc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fircdocs%2Fmodern-irc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fircdocs%2Fmodern-irc/lists"}