p2p chat in the terminal

Kira Oakley 08b0b765a0 Fix DNS --seed key resolution to prevent crashing 2 weeks ago
.github 9807d7047e Create FUNDING.yml 6 months ago
test 12713c24c3 add unit tests and Mocha test-runner 9 months ago
.cabal.yml-example 366d6e7c13 Add frontend configuration 3 months ago
.gitignore 8c093fb4d7 Add binary packaging (#115) 1 year ago
.npmignore 8e2b927e2d chore: npmignore 7 months ago
.travis.yml 8c093fb4d7 Add binary packaging (#115) 1 year ago
LICENSE 330eaa8724 Update LICENSE 11 months ago
README.md 575e6a5952 fix hotkey listing 3 weeks ago
cli-2019-04.png 99d4ccbbef add cli image 1 year ago
cli.js 08b0b765a0 Fix DNS --seed key resolution to prevent crashing 2 weeks ago
commands.js 22388696bf add ctrl-a to cycle to next unread channel 3 weeks ago
debug.js 9f762adc8a Lint w standard 3 months ago
markdown-shim.js 80061a56bf Update markdown-shim.js 11 months ago
neat-screen.js db4ed293f2 use ctrl-r instead of ctrl-a for reading unread channels 3 weeks ago
output.js 170a913fdf use patched output fot neat log 2 years ago
package-lock.json edc42a678a 13.1.6 3 weeks ago
package.json edc42a678a 13.1.6 3 weeks ago
package.sh 76ecd824c7 fix: fix utp-native bindings for native build 3 months ago
publish.sh 2351c5e1b3 remove first publish from publish.sh 2 months ago
util.js 11a33ccd0f sort hidden users to bottom of user pane, prefix with minus sign 1 month ago
views.js 632cb6c4e8 fix: channel truncation 3 weeks ago
welcome.txt 810cdfa382 add support for custom welcome message 6 months ago

README.md

cabal-cli

Terminal client for cabal, the p2p chat platform.

See cabal-core for the underlying database & api.

chat with us: npx cabal cabal://cabal.chat

Installation

$ npm install --global cabal
$ cabal --new

Usage

Start a new instance:

cabal --new

then copy the key and give it to someone else.

Connect to an existing instance:

cabal <key>

e.g.

cabal cabal://0201400f1aa2e3076a3f17f4521b2cc41e258c446cdaa44742afe6e1b9fd5f82

Remember cabals for auto-joining

save a cabal to the config

cabal --save <key>

then connect to all of your saved cabals, by simply running cabal:

cabal

show saved cabals with --cabals and remove a saved cabal with --forget

cabal --cabals
cabal --forget <key|alias>

Save an alias to a key

create a local name for a key.

cabal --alias <name> --key <key>
cabal <name>

Scan a QR code to join a cabal:

Cabal can use a webcam connected to your computer to read a cabal key from a QR code. For this to work, you'll need to install an additional system dependency:

  • Linux: sudo apt-get install fswebcam
  • MacOS: brew install imagesnap

    # Hold up your QR code in front of the webcam and then run:
    cabal --qr
    

Headless mode

This 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:

cabal <key> --seed

Commands

/add, /cabal
  add a cabal
/new
  create a new cabal
/nick, /n
  change your display name
/emote, /me
  write an old-school text emote
/names
  display the names of the currently online peers
/channels
  display the cabal's channels
/panes
  set pane to navigate up and down in panes: channels, cabals
/join, /j
  join a new channel
/leave, /l
  leave a channel
/clear
  clear the current backscroll
/help
  display this help message
/qr
  generate a qr code with the current cabal's address
/quit, /exit
  exit the cabal process
/topic, /motd
  set the topic/description/message of the day for a channel
/whoami, /key
  display your local user key
/whois
  display the public keys associated with the passed in nick

alt-n
  move between channels/cabals panes
ctrl-{n,p}
  move up/down channels/cabals

Hotkeys

ctrl-u
    clear input line
ctrl-w
    delete last word in input
up-arrow
    cycle through command history
down-arrow
    cycle through command history
home
    go to start of input line
end
    go to end of input line
ctrl-n
    go to next channel
ctrl-p
    go to previous channel
ctrl-a
    go to next unread channel
pageup
    scroll up through backlog
pagedown
    scroll down through backlog
shift-pageup
    scroll up through nicklist
shift-pagedown
    scroll down through nicklist
alt-[1,9]
    select channels 1-9
alt-n
    tab between the cabals & channels panes
alt-l
    tab toggle id suffixes on/off

Configuration

The message styling can be slightly tweaked.
Regarding the supported options, see .cabal.yml-example