{"id":21197774,"url":"https://github.com/piyushjajoo/go-chat","last_synced_at":"2026-02-05T10:31:31.714Z","repository":{"id":57640899,"uuid":"434464284","full_name":"piyushjajoo/go-chat","owner":"piyushjajoo","description":"go-chat is a gRPC based chat CLI written in golang for command line lovers","archived":false,"fork":false,"pushed_at":"2022-02-10T20:06:13.000Z","size":75,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-03T07:26:03.823Z","etag":null,"topics":["chat-application","cli","cobra-cli","golang","grpc","grpc-go"],"latest_commit_sha":null,"homepage":"https://medium.com/@piyush.jajoo1991/grpc-based-cli-chat-application-in-golang-3a09026bf1d5","language":"Go","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/piyushjajoo.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}},"created_at":"2021-12-03T04:20:54.000Z","updated_at":"2024-03-27T12:34:37.000Z","dependencies_parsed_at":"2022-09-07T06:02:47.968Z","dependency_job_id":null,"html_url":"https://github.com/piyushjajoo/go-chat","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/piyushjajoo/go-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyushjajoo%2Fgo-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyushjajoo%2Fgo-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyushjajoo%2Fgo-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyushjajoo%2Fgo-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/piyushjajoo","download_url":"https://codeload.github.com/piyushjajoo/go-chat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyushjajoo%2Fgo-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29119232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T09:40:36.738Z","status":"ssl_error","status_checked_at":"2026-02-05T09:36:49.977Z","response_time":65,"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-application","cli","cobra-cli","golang","grpc","grpc-go"],"created_at":"2024-11-20T19:46:23.463Z","updated_at":"2026-02-05T10:31:31.697Z","avatar_url":"https://github.com/piyushjajoo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-chat\ngo-chat is a gRPC based chat CLI written in golang for command line lovers. This CLI allows you to chat\nwith your friends without leaving the command line.\n\n## Installation\n\nThis CLI was built with go 1.17.\n```shell\ngo install github.com/piyushjajoo/go-chat@latest\n```\n\nIf you have an older version of go, go install might not work. Try following command -\n```shell\nexport GO111MODULE=on\ngo get github.com/piyushjajoo/go-chat@latest\ngo install github.com/piyushjajoo/go-chat\nexport PATH=$PATH:$GOPATH/bin\n```\n\n### Go chat help\n```\n$ go-chat \ngo-chat is an interactive gRPC based command line chat application. This application\nallows you to chat with anyone in the world securely through command line, so you never have to leave\nyour terminal.\n\nNOTE: this doesn't persist any messages, so feel free to be anonymous.'\n\nUsage:\n  go-chat [command]\n\nAvailable Commands:\n  completion  generate the autocompletion script for the specified shell\n  help        Help about any command\n  server      server starts the chat server for you\n  with        with sub-command let's you specify who you want to chat with\n\nFlags:\n      --config string   config file (default is $HOME/.go-chat.yaml)\n  -h, --help            help for go-chat\n\nUse \"go-chat [command] --help\" for more information about a command.\n```\n\n## Start the server\n```shell\ngo-chat server --port 8080\n```\n\n### Go chat `server` sub-command help\n\n```\n$ go-chat server --help\nserver allows you to start your own chat server and that way you can allow others to chat with you.\nThe server doesn't store any messages so never worry while using this in your terminal'\n\nUsage:\n  go-chat server [flags]\n\nFlags:\n  -h, --help          help for server\n  -p, --port string   Port on which you want to start the server, default 8080 (default \"8080\")\n\nGlobal Flags:\n      --config string   config file (default is $HOME/.go-chat.yaml)\n\n```\n\n## Connect clients and chat\n```shell\ngo-chat with --remove-server-host localhost:8080 --name Piyush --chatting-with Jon,Jim\n```\n\n### Go chat `with` sub-command help\n\n```\n$ go-chat with --help\nwith sub-command let's you specify who you chat with\n\nUsage:\n  go-chat with [flags]\n\nFlags:\n  -c, --chatting-with string        comma separated list of users names on the remote host you want to chat with e.g. A,B,C, default is you can chat with all (default \"all\")\n  -h, --help                        help for with\n  -n, --name string                 your display name you want users to see e.g. Piyush\n  -s, --remove-server-host string   Remote server host where you want to join chat e.g 10.11.12.13:8080, default is localhost (default \"localhost:8080\")\n\nGlobal Flags:\n      --config string   config file (default is $HOME/.go-chat.yaml)\n```\n\n## How it works\n\n* server sub-command starts the grpc server on the provided port and accepts connections from everywhere.\n* with sub-command starts the grpc stub/client and tries to connect to the provided remote host.\n* once the client establishes the connection with remote server, client will be able to broadcast \n  messages to all (by default) or selected users.\n* server makes sure that only those users receive/send the messages who are allowed by client while connecting.\n\n![](go-chat.png)\n\n## Further improvements\n1. Allow secure communication between client and server.\n2. Provide an option to back up chat messages.\n3. Improve command line user experience.\n4. Allow multiple users with same name.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiyushjajoo%2Fgo-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpiyushjajoo%2Fgo-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiyushjajoo%2Fgo-chat/lists"}