{"id":13442861,"url":"https://github.com/ryukinix/lisp-chat","last_synced_at":"2026-03-14T05:15:24.397Z","repository":{"id":56223368,"uuid":"84357579","full_name":"ryukinix/lisp-chat","owner":"ryukinix","description":"An experimental minimal chat written in Common Lisp","archived":false,"fork":false,"pushed_at":"2026-02-02T13:44:02.000Z","size":760,"stargazers_count":185,"open_issues_count":1,"forks_count":15,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-02-02T23:51:32.318Z","etag":null,"topics":["chat","common-lisp","experimental","irc","lisp","minimalist","quicklisp","sbcl","sockets"],"latest_commit_sha":null,"homepage":"https://chat.manoel.dev","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryukinix.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":"2017-03-08T19:21:38.000Z","updated_at":"2026-02-02T10:31:30.000Z","dependencies_parsed_at":"2024-02-08T19:04:21.624Z","dependency_job_id":"6b60f517-33e2-4f8f-af5b-3ff4683e870a","html_url":"https://github.com/ryukinix/lisp-chat","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ryukinix/lisp-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Flisp-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Flisp-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Flisp-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Flisp-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryukinix","download_url":"https://codeload.github.com/ryukinix/lisp-chat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryukinix%2Flisp-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29179560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T22:12:24.066Z","status":"ssl_error","status_checked_at":"2026-02-06T22:12:09.859Z","response_time":59,"last_error":"SSL_read: 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":["chat","common-lisp","experimental","irc","lisp","minimalist","quicklisp","sbcl","sockets"],"created_at":"2024-07-31T03:01:52.291Z","updated_at":"2026-03-14T05:15:24.379Z","avatar_url":"https://github.com/ryukinix.png","language":"Common Lisp","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"logo/horizontal.png\" alt=\"lisp-chat\" height=\"150px\"\u003e\n\u003c/p\u003e\n\n\n[![Quicklisp dist](http://quickdocs.org/badge/lisp-chat.svg)](http://quickdocs.org/lisp-chat/)\n\n# Lisp Chat\n\nAn experimental chat irc-like written in Lisp.\n\n![lisp-chat-screenshot](lisp-chat.png)\n\n\n# Installation\nInstall [roswell][ros] and add `~/.roswell/bin/` to the `PATH` variable.\n\nAfter that just type:\n\n``` bash\nros install ryukinix/lisp-chat\n```\n\nLisp-chat it's on Quicklisp as well, tested on the following\nimplementations:\n\n* SBCL\n* CCL\n* ECL\n\n# Usage\n\n\nLoad the server\n```bash\n$ lisp-chat-server localhost\n```\n\nCreate a client\n```bash\n$ lisp-chat localhost\n```\n\nOnline version with connection through web sockets instead raw tcp sockets:\n\n```\n$ lisp-chat wss://chat.manoel.dev/ws\n```\n\n# Web Interface\n\nA web interface is now available! You can access the public instance at:\n[https://chat.manoel.dev](https://chat.manoel.dev)\n\nWhen running the server locally, the web interface is accessible at `http://localhost:5559`.\n\n![lisp-chat-web](lisp-chat-web.png)\n\n# Admin Tool\n\nA command-line tool for managing the chat history and users is available. You can use it to delete channels, rename users, and see statistics. By default, it operates on `messages.sexp`, but you can specify a different file using the global `--file` (or `-f`) option.\n\n```bash\n$ ros roswell/lisp-chat-admin.ros --file custom-messages.sexp stats\n$ ros roswell/lisp-chat-admin.ros history\n$ ros roswell/lisp-chat-admin.ros --help\n```\n\n# Alternative clients\n\nTo test this with alternative clients, you can use these options:\n\n* **Emacs client**: An ERC-like interface with colorized usernames, mentions, and WebSocket/TCP support. See [emacs/README.md](emacs/README.md) for details.\n* Terminal readline-based [python client](./bin/client.py)\n* Terminal ncurses [python client](./bin/client_curses.py)\n* Netcat client (wtf?)\n* [Lispinto Chat](https://github.com/mateusfccp/lispinto-chat): a Flutter client that runs on macOS, Android, iOS and [web](https://labs.mateusfccp.me/lispinto-chat).\n\nOn Python client, I wrote in a way only using ths stdlib avoiding pain\nto handle the dependency hell, so you can just call that:\n\n```bash\n$ python client.py\n```\n\nSo finally... netcat. Yes! You can even just use `netcat`! An user\ncalled `Chris` in past days just logged in the server with the\nfollowing message:\n\n```\n|16:30:37| [Chris]: Used netcad\n|16:30:41| [Chris]: netcat*\n|16:30:50| [Chris]: bye\n```\n\nSo you can type `netcat \u003cserver\u003e 5558` and go on! I tested on\nmy machine and works fine! The main reason is because the\ncommunication between server and client just use raw data. For better\nsynchronization with text data from server while you typing, I suggest\nyou to use a readline wrapper like\n[`rlwrap`](https://github.com/hanslub42/rlwrap) calling as `rlwrap\nnetcat \u003cserver\u003e 5558`.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://chat.manoel.dev\"\u003e\n    \u003cimg src=\"http://www.lisperati.com/lisplogo_warning2_256.png\" width=\"128\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":["Common Lisp","Applications"],"sub_categories":["Chat"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryukinix%2Flisp-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryukinix%2Flisp-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryukinix%2Flisp-chat/lists"}