
FAQ
Learn about Cipherchat. 👨💻👩💻
Get started using private and secure messaging on the worlds most powerful decentralized network.
-
Cipherchat is a private messaging web application powered by bitcoin's lightning network and can be self-hosted.
-
Users connect their lightning node to Cipherchat by using Lightning Node Connect (LNC) and entering a pairing phrase obtained through Lightning Terminal. This creates an end-to-end encrypted connection between your node running anywhere in the world and the web app. It works by having a LNC Mailbox relay proxy server facilitate the communication. The entire tech stack is open-source. Once connected, users use keysend payments attached with messages to communicate with eachother.
-
Yes. All messages that are sent and received can only be read by the sender and the recipient and cannot be intercepted by anyone along the route. Please read the Privacy page for more detailed information.
-
The protocols used are secure. When establishing your initial connection you will be asked to create a password. This will be used to secure the data stored locally on your device with encryption. Use a strong password for this purpose.
-
The easiest way to get started running your own lightning node is to use one of the many great plug-and-play solutions. For example: myNode, Start9 Embassy, or Umbrel. These come with app stores that you can install the other required software - Lightning Terminal. There are also options to host a node in the 'Cloud' like Voltage if you would prefer not to deal with hardware.
-
These steps may be different if you are running your node on a hosting provider such as Voltage or using the command line.
- Open the Lightning Terminal app that is connected to your lightning node. Navigate to the Lightning Node Connect tab in the menu.
- Next you create a new session. You must use the Admin permissions so that Cipherchat is able to Send and Receive payments, Sign and Verify messages, and Read data from your node and the network.
- If you would like to use your own LNC Mailbox instead of the default Lightning Labs option you will need to select Custom permissions from the dropdown menu. Then choose Admin and click Advanced Options to enter the domain and port. For example: cipherchatmailbox.net:443.
- You can also set an expiry for this pairing phrase if you would like in the Custom permissions view.
- Your pairing phrase will be generated and copied to the clipboard. You can now paste this information into Cipherchat. You do not need to store this phrase anywhere.
* IMPORTANT: This pairing phrase is sensitive information that could give others access to your node. It will expire if not used within 10 minutes. You can revoke these sessions at any time. Only one concurrent connection can be established for each pairing phrase. Treat this with the same care as other private node information such as a macaroon or seed phrase. Always make sure you are at the correct URL of the Cipherchat app which is https://cipherchat.app and nothing else. Install the app or bookmark the page to be sure.
-
On your mobile phone or any other device simply click Install if you are prompted by your browser. You can also go into your browser menu and click Install. This will add Cipherchat to your home screen and give you access to features like badge notifications just like a native app.
-
Cipherchat can be updated by simply refreshing the page which will download and install any new releases. After refreshing you will need to close any running instances of the app and relaunch in order for the installation to complete. You can view all historical versions here to review changelogs and any release notes. The latest version can be found here which you can compare to your current app version (found in the footer), to ensure that you are running the latest software. You can also check for updates in the Settings view.
-
Cipherchat requires the following browser features to be enabled in order to run the app. These features are standard across all major browsers. However, it is possible that they can be disabled in the browser settings. If you receive warnings about missing these features they will have to be adjusted to continue.
- Service Workers
- Web Assembly
- Local Storage
- IndexedDB
-
The only information needed to start a conversation is another node's pubkey.
-
You can use a lightning network explorer like amboss.space or mempool.space to discover node identities.
-
Cipherchat has built-in spam protection due to the 'proof-of-work' required to setup a lightning node and the cost of messages. It is also impossible to impersonate a nodes identity because each message is signed using the private / public key pair of the sender and verified by the receiver. If all of this is not enough, you have the ability to hide or 'block' unwanted conversations within the app.
-
For best performance, reliability, and to save on network fees it is recommended to open a channel directly with the peer you are chatting with. Each message will cost 1 sat (or 1 msat in the future), so you can think of this as your 'message quota'. If you and a peer are messaging back and forth it won't actually cost you anything because the sats will be flowing in each direction. The only fees you would pay are the on-chain fees to open and close the channel.
You can make an informed decision based on the type of conversation you plan on having whether it makes sense to open a channel. For example, if you only plan on sending one or a few messages then it wouldn't be necessary. You would be better off paying a few sats or zero sats (many nodes will route 1 sat payments for free) in routing fees. Alternatively, if you want to have a long conversation with a family member, friend, co-worker, or anyone then it would make sense to open a direct channel. This will guarantee your message speed and success. A single communication channel between two peers could remain open for years with no maintenance or rebalancing needed. And if the peer is trusted, you can push half the balance to the remote side to avoid needing a channel on each side or having to perform a loop to balance liquidiity.
Finally, it may make sense if you are opening a communication channel to either make it private or set a high routing fee to avoid having it be used by other nodes on the network and affecting your liquidity. -
Just like any lightning transaction a route must be found from your node to the destination in order for the payment (message) to be successful. This requires being well connected to the network. Sending requires having outbound liquidity and receiving requires having inbound liquidity (via lightning channels).
-
A default character limit of 300 is set for all conversations. This is to give your message the best chance of succeeding. The lightning network has technical constraints on the size of message that can be transmitted. As the payment route gets longer (number of hops to reach the destination), the contained message must be smaller. The character limit can be adjusted per conversation such that if you are connected directly with your chatting peer it can be raised.
-
Most node configs will already have this setup but if you can't receive messages and you have inbound liquidity then you can check your lnd.conf file and make sure it contains accept-keysend=true. You will need to restart your node if enabling this for the first time.
-
Check out the README on the Cipherchat GitHub repository for instructions.
-
I plan to release Cipherchat for these plug-and-play app stores.
-
Instructions on running your own relay proxy server can be found in the Builder's Guide. If you are looking for a hosted solution you can check out Render. There are many good options available that make the process of deploying a server fairly straight-forward.
-
Currently no. LNC is only implemented by LND at the moment.
-
Yes, if they follow the same specification. Cipherchat uses established standards from the TLV Record Registry. Users of Cipherchat could have conversations with other lightning apps if they follow the convention below for attaching dest_custom_records to keysend payments.
Cipherchat Keysend Custom Record Scheme Key Value Additional Info 5482373484 Keysend Preimage Preimage for the invoice. 34349334 Message Content The chat text, image, or a random UUID if 'PAYMENT' type. 34349343 Timestamp When the message was created measured in nanoseconds since the unix epoch. 34349337 Signature The output from signing the: (receiver pubkey + timestamp + message) using the private key counterpart of the public key attached. 34349339 Sender's Pubkey This identifies the node associated with the message. 34349345 Content Type Can be one of: 'TEXT', 'IMAGE', 'PAYMENT'. (Currently images are not yet implemented). -
The cipherchat.app web app is run by secondl1ght.
-
Cipherchat is developed by secondlght in his spare time.
-
Updates about the software and project will come from the X account. You can also subscribe to receive notifications on the GitHub repo about activity such as new releases.
-
I wrote a blog post for the launch of Cipherchat that you can read here.
-
If you are having issues getting started using Cipherchat or just want to find other users to connect with you can join our public Telegram room.
Thanks for taking the time to learn about Cipherchat!