الأكاديمية ← قنوات المراسلةتوثيق رسمي · إرشاد عربي

قناة Signal

Signal

متوسط8 دقائق قراءةالدرس 85 أسئلة✓ 2026-08-18
قبل أن تقرأ

ما هذه الصفحة، وماذا تحتوي.

بوابة المراسلة: الوصلة التي تجعلك تكلّم Hermes من تطبيق تستعمله أصلًا، مثل Telegram أو WhatsApp، بدل الطرفية. الوكيل الذي تصله من هاتفك تستعمله فعلًا. الذي يحتاج فتح الحاسوب تنساه بعد أسبوع. الصفحة فيها تحذير من المصدر، و8 دقائق قراءة. انتبه: افتح القناة لنفسك فقط في البداية عبر قائمة سماح. القناة المفتوحة تعني أن أي شخص يراسل وكيلك.

9أقسام
7أمثلة برمجية
3جداول
3أوامر
1,349كلمة من المصدر
الوصف الرسمي في سطر

Set up Hermes Agent as a Signal messenger bot via signal-cli daemon

ماذا ستستطيع بعدها

نتائج مأخوذة من هذه الصفحة، لا من قالب.

  • تعرف ما بوابة المراسلة ولماذا قد تحتاجه.
  • تنفّذ hermes gateway install وhermes gateway وتفهم ما يحدث بعدها.
  • تقرأ الجدول وتأخذ منه السطر الذي يخصّك فقط.
  • تضبط SIGNAL_HTTP_URL في المكان الصحيح.
ما ستقابله من أسماء

كما تظهر تمامًا داخل Hermes.

الأوامر
  • hermes gateway install
  • hermes gateway
  • hermes gateway setup
متغيرات البيئة
  • SIGNAL_HTTP_URL
  • SIGNAL_ACCOUNT
  • SIGNAL_ALLOWED_USERS
  • SIGNAL_GROUP_ALLOWED_USERS
  • SIGNAL_HOME_CHANNEL
خريطة الصفحة

انتقل مباشرة إلى ما تحتاجه.

  1. 01Prerequisites
  2. 02Step 1: Link Your Signal Account
  3. 03Step 2: Start the signal-cli Daemon
  4. 04Step 3: Configure Hermes
  5. 05Access Control
  6. 06Features
  7. 07Troubleshooting
  8. 08Security
  9. 09Environment Variables Reference
الصفحة الرسمية كاملة

بلا اختصار أو حذف.

النص أدناه منقول من المصدر الرسمي بالإنجليزية حتى تبقى الأوامر والأسماء دقيقة كما هي. قبل كل قسم شرح عربي يوضّح ما بداخله.

Hermes connects to Signal through the signal-cli ↗ daemon running in HTTP mode. The adapter streams messages in real-time via SSE (Server-Sent Events) and sends responses via JSON-RPC.

Signal is the most privacy-focused mainstream messenger — end-to-end encrypted by default, open-source protocol, minimal metadata collection. This makes it ideal for security-sensitive agent workflows.

---

Prerequisites

فيه تحذير مهم. اقرأه قبل أن تنفّذ أي شيء من هذا القسم. نصّ التحذير من المصدر مذكور أسفل هذا الشرح.

  • signal-cli — Java-based Signal client (GitHub ↗)
  • Java 17+ runtime — required by signal-cli
  • A phone number with Signal installed (for linking as a secondary device)

Installing signal-cli

Shell9 أسطر
# macOS
brew install signal-cli

# Linux (download latest release)
VERSION=$(curl -Ls -o /dev/null -w %{url_effective} \
  https://github.com/AsamK/signal-cli/releases/latest | sed 's/^.*\/v//')
curl -L -O "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/

---

Step 2: Start the signal-cli Daemon

خطوات عملية بالترتيب. نفّذ خطوة وتأكد أنها نجحت قبل الانتقال للتالية.

Shellسطران
# Replace +1234567890 with your Signal phone number (E.164 format)
signal-cli --account +1234567890 daemon --http 127.0.0.1:8080

Verify it's running:

Shellسطران
curl http://127.0.0.1:8080/api/v1/check
# Should return: {"versions":{"signal-cli":...}}

---

Step 3: Configure Hermes

خطوات عملية بالترتيب. نفّذ خطوة وتأكد أنها نجحت قبل الانتقال للتالية. الأوامر هنا: hermes gateway، hermes gateway install.

The easiest way:

Shellسطر واحد
hermes gateway setup

Select Signal from the platform menu. The wizard will:

  1. Check if signal-cli is installed
  2. Prompt for the HTTP URL (default: http://127.0.0.1:8080)
  3. Test connectivity to the daemon
  4. Ask for your account phone number
  5. Configure allowed users and access policies

Manual Configuration

Add to ~/.hermes/.env:

Shell10 أسطر
# Required
SIGNAL_HTTP_URL=http://127.0.0.1:8080
SIGNAL_ACCOUNT=+1234567890

# Security (recommended)
SIGNAL_ALLOWED_USERS=+1234567890,+0987654321    # Comma-separated E.164 numbers or UUIDs

# Optional
SIGNAL_GROUP_ALLOWED_USERS=groupId1,groupId2     # Enable groups (omit to disable, * for all)
SIGNAL_HOME_CHANNEL=+1234567890                  # Default delivery target for cron jobs

Then start the gateway:

Shell3 أسطر
hermes gateway              # Foreground
hermes gateway install      # Install as a user service
sudo hermes gateway install --system   # Linux only: boot-time system service

---

Access Control

إعدادات تضبطها مرة وتنساها. غيّر واحدًا في كل مرة حتى تعرف أثر كل تغيير. تضبط SIGNAL_ALLOWED_USERS، SIGNAL_GROUP_ALLOWED_USERS خارج المحادثة، في بيئة التشغيل.

DM Access

DM access follows the same pattern as all other Hermes platforms:

  1. SIGNAL_ALLOWED_USERS set → only those users can message
  2. No allowlist set → unknown users get a DM pairing code (approve via hermes pairing approve signal CODE)
  3. SIGNAL_ALLOW_ALL_USERS=true → anyone can message (use with caution)

Group Access

Group access is controlled by the SIGNAL_GROUP_ALLOWED_USERS env var:

ConfigurationBehavior
Not set (default)All group messages are ignored. The bot only responds to DMs.
Set with group IDsOnly listed groups are monitored (e.g., groupId1,groupId2).
Set to *The bot responds in any group it's a member of.

---

Features

فيه تحذير مهم. اقرأه قبل أن تنفّذ أي شيء من هذا القسم. نصّ التحذير من المصدر مذكور أسفل هذا الشرح.

Attachments

The adapter supports sending and receiving media in both directions.

Incoming (user → agent):

  • Images — PNG, JPEG, GIF, WebP (auto-detected via magic bytes)
  • Audio — MP3, OGG, WAV, M4A (voice messages transcribed if Whisper is configured)
  • Documents — PDF, ZIP, and other file types

Outgoing (agent → user):

The agent can send media files via MEDIA: tags in responses. The following delivery methods are supported:

  • Images — send_multiple_images and send_image_file send PNG, JPEG, GIF, WebP as native Signal attachments
  • Voice — send_voice sends audio files (OGG, MP3, WAV, M4A, AAC) as attachments
  • Video — send_video sends MP4 video files
  • Documents — send_document sends any file type (PDF, ZIP, etc.)

All outgoing media goes through Signal's standard attachment API. Unlike some platforms, Signal does not distinguish between voice messages and file attachments at the protocol level.

Attachment size limit: 100 MB (both directions).

Native Formatting, Reply Quotes, and Reactions

Signal messages render with native formatting instead of literal markdown characters. The adapter converts markdown (**bold**, *italic*, ` code , ~~strike~~, ||spoiler||, headings) into Signal bodyRanges so the text shows up with real styling on the recipient's client rather than as visible ** / `` characters.

Reply quotes. When Hermes replies to a specific message, it now posts a native reply that quotes the original — same UI affordance Signal users see when they use "Reply" themselves. This is automatic for replies generated in response to an inbound message.

Reactions. The agent can react to messages via the standard reaction API; reactions surface in Signal as emoji reactions on the referenced message rather than as extra text.

None of this requires additional config — it ships on by default in recent signal-cli builds. If your signal-cli version is too old, Hermes falls back to plaintext delivery and logs a one-time warning.

Typing Indicators

The bot sends typing indicators while processing messages, refreshing every 8 seconds.

Tool Progress Display

Signal does not support editing already-sent messages. Hermes therefore suppresses gateway tool-progress bubbles on Signal, even when /verbose is enabled and saves a non-off mode for the platform.

You can still see tool activity in the CLI, and final Signal replies can include normal assistant output. If you need live per-tool progress in chat, use a messaging platform with message editing support.

Phone Number Redaction

All phone numbers are automatically redacted in logs:

  • +15551234567 → +155****4567
  • This applies to both Hermes gateway logs and the global redaction system

Note to Self (Single-Number Setup)

If you run signal-cli as a linked secondary device on your own phone number (rather than a separate bot number), you can interact with Hermes through Signal's "Note to Self" feature.

Just send a message to yourself from your phone — signal-cli picks it up and Hermes responds in the same conversation.

How it works:

  • "Note to Self" messages arrive as syncMessage.sentMessage envelopes
  • The adapter detects when these are addressed to the bot's own account and processes them as regular inbound messages
  • Echo-back protection (sent-timestamp tracking) prevents infinite loops — the bot's own replies are filtered out automatically

No extra configuration needed. This works automatically as long as SIGNAL_ACCOUNT matches your phone number.

Health Monitoring

The adapter monitors the SSE connection and automatically reconnects if:

  • The connection drops (with exponential backoff: 2s → 60s)
  • No activity is detected for 120 seconds (pings signal-cli to verify)

---

Troubleshooting

قسم لحل المشكلات. ابحث فيه عن العطل الذي يشبه حالتك بدل قراءته كاملًا.

ProblemSolution
"Cannot reach signal-cli" during setupEnsure signal-cli daemon is running: signal-cli --account +YOUR_NUMBER daemon --http 127.0.0.1:8080
Messages not receivedCheck that SIGNAL_ALLOWED_USERS includes the sender's number in E.164 format (with + prefix)
"signal-cli not found on PATH"Install signal-cli and ensure it's in your PATH, or use Docker
Connection keeps droppingCheck signal-cli logs for errors. Ensure Java 17+ is installed.
Group messages ignoredConfigure SIGNAL_GROUP_ALLOWED_USERS with specific group IDs, or * to allow all groups.
Bot responds to no oneConfigure SIGNAL_ALLOWED_USERS, use DM pairing, or explicitly allow all users through gateway policy if you want broader access.
Duplicate messagesEnsure only one signal-cli instance is listening on your phone number

---

Security

فيه تحذير مهم. اقرأه قبل أن تنفّذ أي شيء من هذا القسم. نصّ التحذير من المصدر مذكور أسفل هذا الشرح.

  • Phone numbers are redacted in all log output
  • Use DM pairing or explicit allowlists for safe onboarding of new users
  • Keep groups disabled unless you specifically need group support, or allowlist only the groups you trust
  • Signal's end-to-end encryption protects message content in transit
  • The signal-cli session data in ~/.local/share/signal-cli/ contains account credentials — protect it like a password

---

Environment Variables Reference

جدول مرجعي. لا تقرأه كله، ابحث عن السطر الذي يخصّك فقط.

VariableRequiredDefaultDescription
SIGNAL_HTTP_URLYes—signal-cli HTTP endpoint
SIGNAL_ACCOUNTYes—Bot phone number (E.164)
SIGNAL_ALLOWED_USERSNo—Comma-separated phone numbers/UUIDs
SIGNAL_GROUP_ALLOWED_USERSNo—Group IDs to monitor, or * for all (omit to disable groups)
SIGNAL_ALLOW_ALL_USERSNofalseAllow any user to interact (skip allowlist)
SIGNAL_HOME_CHANNELNo—Default delivery target for cron jobs
اختبار الفهم

5 أسئلة إجاباتها كلها في هذه الصفحة.

كل خيار اسم حقيقي من توثيق Hermes. حتى الخيارات الخاطئة حقيقية، لكنها من صفحات أخرى.

1. بحسب هذا الدرس، أي أمر يقوم بـ«Foreground»؟
2. بحسب هذا الدرس، أي أمر يقوم بـ«Install as a user service»؟
3. في جدول هذا الدرس، ما «Behavior» المقابل لـ«Not set (default)»؟
4. أي متغير بيئة من التالي يظهر فعليًا في هذا الدرس؟
5. ما التحذير الذي يذكره المصدر في هذا الدرس؟