{"id":13554515,"url":"https://github.com/cabal-club/cabal-cli","last_synced_at":"2025-04-06T15:11:34.405Z","repository":{"id":34997792,"uuid":"134075618","full_name":"cabal-club/cabal-cli","owner":"cabal-club","description":"Terminal client for Cabal, the p2p chat platform.","archived":false,"fork":false,"pushed_at":"2024-09-22T21:55:07.000Z","size":1439,"stargazers_count":522,"open_issues_count":24,"forks_count":43,"subscribers_count":34,"default_branch":"master","last_synced_at":"2024-10-29T18:47:56.165Z","etag":null,"topics":["command-line","decentralized","instant-messaging","p2p","terminal"],"latest_commit_sha":null,"homepage":"https://cabal.chat","language":"JavaScript","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/cabal-club.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":null,"open_collective":"cabal-club","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2018-05-19T15:46:12.000Z","updated_at":"2024-10-08T09:32:28.000Z","dependencies_parsed_at":"2023-07-18T05:47:58.708Z","dependency_job_id":"72b1c54e-4a8b-4cc7-a896-c8b416437507","html_url":"https://github.com/cabal-club/cabal-cli","commit_stats":{"total_commits":667,"total_committers":31,"mean_commits":"21.516129032258064","dds":"0.45427286356821595","last_synced_commit":"d310fadd1209983f438e5a6b7f93b507c503781e"},"previous_names":["cabal-club/cabal"],"tags_count":132,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabal-club%2Fcabal-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabal-club%2Fcabal-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabal-club%2Fcabal-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabal-club%2Fcabal-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cabal-club","download_url":"https://codeload.github.com/cabal-club/cabal-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247465149,"owners_count":20943124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["command-line","decentralized","instant-messaging","p2p","terminal"],"created_at":"2024-08-01T12:02:49.398Z","updated_at":"2025-04-06T15:11:34.386Z","avatar_url":"https://github.com/cabal-club.png","language":"JavaScript","funding_links":["https://opencollective.com/cabal-club"],"categories":["JavaScript","terminal"],"sub_categories":[],"readme":"# cabal-cli\n\n\u003e Terminal client for cabal, the p2p chat platform.\n\nSee [cabal-core](https://github.com/cabal-club/cabal-core) for the underlying\ndatabase \u0026 api.\n\n![](cli-2019-04.png)\n\nchat with us:\n`npx cabal cabal://cabal.chat`\n\n## Installation\n\n```\n$ npm install --global cabal\n$ cabal --new\n```\nIf that fails the newest node is not yet supported by the stack. Try this:\n\nInstall [nvm](https://github.com/nvm-sh/nvm), open a new shell and run\n```\n$ nvm install 12\n$ npm install --global cabal\n$ cabal --new\n```\n\n## Usage\n#### Start a new instance:\n```\ncabal --new\n```\nthen copy the key and give it to someone else.\n\n#### Connect to an existing instance:\n```\ncabal \u003ckey\u003e\n```\ne.g.\n```\ncabal cabal://0201400f1aa2e3076a3f17f4521b2cc41e258c446cdaa44742afe6e1b9fd5f82\n```\n\n#### Remember cabals for auto-joining\nsave a cabal to the config\n\n```\ncabal --save \u003ckey\u003e\n```\n\nthen connect to all of your saved cabals, by simply running `cabal`:\n\n```\ncabal\n```\n\nshow saved cabals with `--cabals` and remove a saved cabal with `--forget`\n\n```\ncabal --cabals\ncabal --forget \u003ckey|alias\u003e\n```\n\n#### Save an alias to a key\n\ncreate a local name for a key.\n\n```\ncabal --alias \u003cname\u003e --key \u003ckey\u003e\ncabal \u003cname\u003e\n```\n\n#### Scan a QR code to join a cabal:\nCabal can use a webcam connected to your computer to read a cabal key from a QR code.\nFor this to work, you'll need to install an additional system dependency:\n- Linux: `sudo apt-get install fswebcam`\n- MacOS: `brew install imagesnap`\n```\n# Hold up your QR code in front of the webcam and then run:\ncabal --qr\n```\n\n#### Headless mode\n\nThis will run cabal without a UI. You can use this to seed a cabal (e.g. on a VPS) and make its data more available:\n```\ncabal \u003ckey\u003e --seed\n```\n\n#### Custom port\nIf you have a tightly configured firewall and need to port-forward a port, the default port Cabal uses is port `13331`.\nYou can change this with the `--port` flag, or setting `preferredPort` in your .cabal.yml config file.\n\n```\ncabal \u003ckey\u003e --seed --port 7331\n```\n\n## Commands\n```py\n/add, /cabal\n  add a cabal\n/new\n  create a new cabal\n/nick, /n\n  change your display name\n/emote, /me\n  write an old-school text emote\n/names\n  display the names of the currently online peers\n/channels\n  display the cabal's channels\n/panes\n  set pane to navigate up and down in panes: channels, cabals\n/join, /j\n  join a new channel\n/leave, /l\n  leave a channel\n/clear\n  clear the current backscroll\n/help\n  display this help message\n/qr\n  generate a qr code with the current cabal's address\n/quit, /exit\n  exit the cabal process\n/topic, /motd\n  set the topic/description/message of the day for a channel\n/whoami, /key\n  display your local user key\n/whois\n  display the public keys associated with the passed in nick\n\nalt-n\n  move between channels/cabals panes\nctrl-{n,p}\n  move up/down channels/cabals\n```\n\n## Hotkeys\n`ctrl-l`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;redraw the screen  \n`ctrl-u`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;clear input line  \n`ctrl-w`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;delete last word in input  \n`up-arrow`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;cycle through command history  \n`down-arrow`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;cycle through command history  \n`home`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;go to start of input line  \n`end`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;go to end of input line  \n`ctrl-n`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;go to next channel  \n`ctrl-p`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;go to previous channel  \n`ctrl-a`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;go to next unread channel  \n`pageup`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;scroll up through backlog  \n`pagedown`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;scroll down through backlog  \n`shift-pageup`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;scroll up through nicklist  \n`shift-pagedown`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;scroll down through nicklist  \n`alt-[1,9]`   \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;select channels  1-9  \n`alt-n`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;tab between the cabals \u0026 channels panes   \n`alt-l`  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;tab toggle id suffixes on/off  \n\n#### Configuration\n\nThe message styling can be [slightly tweaked](https://github.com/cabal-club/cabal-cli/pull/151#issuecomment-602599840).  \nRegarding the supported options, see [`.cabal.yml-example`](.cabal.yml-example)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcabal-club%2Fcabal-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcabal-club%2Fcabal-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcabal-club%2Fcabal-cli/lists"}