> ## Documentation Index
> Fetch the complete documentation index at: https://docs.argentos.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Signal

> Connect ArgentOS to Signal using signal-cli.

## Overview

ArgentOS connects to Signal through **signal-cli**, a command-line client for the Signal messenger. The channel driver communicates with signal-cli over its D-Bus or JSON-RPC interface.

<Warning>
  Signal setup is more involved than other channels. You need signal-cli installed and registered as a linked device.
</Warning>

## Prerequisites

* `signal-cli` installed ([installation guide](https://github.com/AsamK/signal-cli))
* Java 21+ runtime (required by signal-cli)
* A phone with Signal installed
* ArgentOS gateway running

## Setup

<Steps>
  <Step title="Install signal-cli">
    <CodeGroup>
      ```bash macOS theme={null}
      brew install signal-cli
      ```

      ```bash Linux (manual) theme={null}
      wget https://github.com/AsamK/signal-cli/releases/latest/download/signal-cli-0.x.x.tar.gz
      tar xf signal-cli-*.tar.gz -C /opt/
      ln -s /opt/signal-cli-*/bin/signal-cli /usr/local/bin/signal-cli
      ```
    </CodeGroup>
  </Step>

  <Step title="Link as a Device">
    ```bash theme={null}
    signal-cli link -n "ArgentOS Agent"
    ```

    This outputs a `tsdevice:` URI. Convert it to a QR code:

    ```bash theme={null}
    signal-cli link -n "ArgentOS Agent" | qrencode -t ANSI
    ```

    Scan the QR code in Signal: **Settings > Linked Devices > Link New Device**.
  </Step>

  <Step title="Verify the Link">
    ```bash theme={null}
    signal-cli -a +1YOUR_PHONE_NUMBER receive
    ```

    You should see recent messages. This confirms signal-cli is connected.
  </Step>

  <Step title="Add the Channel">
    ```bash theme={null}
    argent channels add signal
    ```
  </Step>
</Steps>

## Configuration

```json theme={null}
{
  "channels": {
    "signal": {
      "enabled": true,
      "account": "+15551234567",
      "signalCliPath": "/usr/local/bin/signal-cli",
      "mode": "json-rpc",
      "allowedNumbers": []
    }
  }
}
```

## Running signal-cli as a Daemon

<Info>
  For production use, run signal-cli in daemon mode so ArgentOS can communicate with it over JSON-RPC.
</Info>

```bash theme={null}
signal-cli -a +1YOUR_NUMBER daemon --socket /tmp/signal-cli.sock
```

## Supported Features

| Feature           | Supported |
| ----------------- | --------- |
| Text messages     | Yes       |
| Images            | Yes       |
| Files             | Yes       |
| Group messages    | Partial   |
| Reactions         | No        |
| Voice/video calls | No        |

## Known Limitations

<AccordionGroup>
  <Accordion title="Daemon requirement">
    signal-cli must be running as a daemon for the channel to work.
  </Accordion>

  <Accordion title="Protocol updates">
    Signal's protocol updates may require updating signal-cli periodically.
  </Accordion>

  <Accordion title="Group message limitations">
    Group message support is limited to receiving; sending to groups is experimental.
  </Accordion>
</AccordionGroup>
