signal-cli

signal-cli 为 Signal 信使提供了非官方的命令行、dbus 和 JSON-RPC 接口。「signal-cli provides an unofficial commandline, dbus and JSON-RPC interface for the Signal messenger.」

Github星跟蹤圖

signal-cli

signal-cli is a commandline interface for libsignal-service-java. It supports registering, verifying, sending and receiving messages.
To be able to link to an existing Signal-Android/signal-cli instance, signal-cli uses a patched libsignal-service-java, because libsignal-service-java does not yet support provisioning as a slave device.
For registering you need a phone number where you can receive SMS or incoming calls.
signal-cli is primarily intended to be used on servers to notify admins of important events. For this use-case, it has a dbus interface (man page), that can be used to send messages from any programming language that has dbus bindings.

Installation

You can build signal-cli yourself, or use the provided binary files, which should work on Linux, macOS and Windows. For Arch Linux there is also a package in AUR and there is a FreeBSD port available as well.

System requirements:

  • at least Java Runtime Environment (JRE) 11

  • native libraries: libzkgroup, libsignal-client

    Those are bundled for x86_64 Linux, for other systems/architectures see: Provide native lib for libsignal

Install system-wide on Linux

See latest version.

export VERSION=<latest version, format "x.y.z">
wget https://github.com/AsamK/signal-cli/releases/download/v"${VERSION}"/signal-cli-"${VERSION}".tar.gz
sudo tar xf signal-cli-"${VERSION}".tar.gz -C /opt
sudo ln -sf /opt/signal-cli-"${VERSION}"/bin/signal-cli /usr/local/bin/

You can find further instructions on the Wiki:

Usage

For a complete usage overview please read the man page and the wiki.

Important: The USERNAME is your phone number in international format and must include the country calling code. Hence it should start with a "+" sign. (See Wikipedia for a list of all country codes.)

  • Register a number (with SMS verification)

      signal-cli -u USERNAME register
    

    You can register Signal using a land line number. In this case you can skip SMS verification process and jump directly to the voice call verification by adding the --voice switch at the end of above register command.

  • Verify the number using the code received via SMS or voice, optionally add --pin PIN_CODE if you've added a pin code to your account

      signal-cli -u USERNAME verify CODE
    
  • Send a message

      signal-cli -u USERNAME send -m "This is a message" RECIPIENT
    
  • Pipe the message content from another process.

      uname -a, signal-cli -u USERNAME send RECIPIENT
    
  • Receive messages

      signal-cli -u USERNAME receive
    

Storage

The password and cryptographic keys are created when registering and stored in the current users home directory:

$XDG_DATA_HOME/signal-cli/data/ ($HOME/.local/share/signal-cli/data/)

For legacy users, the old config directories are used as a fallback:

    $HOME/.config/signal/data/

    $HOME/.config/textsecure/data/

Building

This project uses Gradle for building and maintaining
dependencies. If you have a recent gradle version installed, you can replace ./gradlew with gradle in the following steps.

  1. Checkout the source somewhere on your filesystem with

     git clone https://github.com/AsamK/signal-cli.git
    
  2. Execute Gradle:

     ./gradlew build
    
  3. Create shell wrapper in build/install/signal-cli/bin:

     ./gradlew installDist
    
  4. Create tar file in build/distributions:

     ./gradlew distTar
    

Building a native binary with GraalVM (EXPERIMENTAL)

It is possible to build a native binary with GraalVM.
This is still experimental and will not work in all situations.

  1. Install GraalVM and setup the enviroment

  2. Install prerequisites

  3. Execute Gradle:

     ./gradlew assembleNativeImage
    

    The binary is available at build/native-image/signal-cli

FAQ and Troubleshooting

For frequently asked questions and issues have a look at the wiki

License

This project uses libsignal-service-java from Open Whisper Systems:

https://github.com/WhisperSystems/libsignal-service-java

Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html

主要指標

概覽
名稱與所有者AsamK/signal-cli
主編程語言Java
編程語言Java (語言數: 5)
平台
許可證GNU General Public License v3.0
所有者活动
創建於2015-05-11 10:49:42
推送於2025-05-10 08:18:12
最后一次提交2025-05-10 10:18:03
發布數99
最新版本名稱v0.13.15 (發布於 2025-05-08 22:55:55)
第一版名稱v0.0.2 (發布於 2015-07-08 12:17:49)
用户参与
星數3.5k
關注者數64
派生數316
提交數2k
已啟用問題?
問題數1214
打開的問題數76
拉請求數116
打開的拉請求數1
關閉的拉請求數83
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?