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
If that fails the newest node is not yet supported by the stack. Try this:
Install nvm, open a new shell and run
$ nvm install 12
$ 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
Custom port
If you have a tightly configured firewall and need to port-forward a port, the default port Cabal uses is port 13331
.
You can change this with the --port
flag, or setting preferredPort
in your .cabal.yml config file.
cabal <key> --seed --port 7331
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-l
    redraw the screen
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