HKUDS/Vibe-Trading · critical · ConnectionRefusedError
signal-cli daemon not responding: {e}
Error message
signal-cli daemon not responding: {e} What it means
Generic wrapper raised when the connection check to signal-cli raises any exception (connection refused, timeout, DNS failure); the original error is included in the message.
Source
Thrown at agent/src/channels/signal.py:481
try:
self.logger.info("Connecting to signal-cli daemon at {}...", base_url)
# Create HTTP client
self._http = httpx.AsyncClient(
timeout=self._HTTP_TIMEOUT_SECONDS, base_url=base_url
)
# Test connection
try:
response = await self._http.get("/api/v1/check")
if response.status_code == 200:
self.logger.info("Connected to signal-cli daemon")
else:
raise ConnectionRefusedError(
f"signal-cli daemon check returned status {response.status_code}"
)
except Exception as e:
raise ConnectionRefusedError(f"signal-cli daemon not responding: {e}")
# Reset reconnect delay after successful connection check.
reconnect_delay_s = 1.0
# Ensure account-level typing indicators are enabled.
await self._ensure_typing_indicators_enabled()
# Start SSE receiver and supervise it. If it exits while we're still
# running, treat it as a disconnect and reconnect.
self._sse_task = asyncio.create_task(self._sse_receive_loop())
await self._sse_task
if self._running:
raise ConnectionError("Signal SSE stream ended unexpectedly")
except asyncio.CancelledError:
break
except ConnectionRefusedError as e:
self.logger.error(View on GitHub (pinned to 80ffdda44c)
Solutions
- Start signal-cli in REST mode and confirm the port
- Fix signal_endpoint URL/port in config
- Check firewall/container network rules allowing the connection
Defensive patterns
Strategy: retry
Validate before calling
import socket, httpx # fail fast if TCP is unreachable socket.create_connection((host, port), timeout=3).close()
Try / catch
except ConnectionRefusedError as e:
if 'not responding' in str(e):
await asyncio.sleep(min(backoff, 60)); backoff *= 2; retry_start() Prevention
- Health-check signal-cli before starting the channel
- Watch container exit/restart of the signal-cli service
When it happens
Trigger: start() in HTTP mode when /api/v1/check cannot be reached at all: daemon not running, wrong port, firewall, or TLS failure.
Common situations: signal-cli daemon not started, container networking misconfiguration, or signal_endpoint typo.
Related errors
- signal-cli daemon check returned status {response.status_cod
- Signal SSE stream ended unexpectedly
- SSE connection failed with status {response.status_code}
- {exc}
- group_message_buffer_size must be > 0
AI-assisted analysis of HKUDS/Vibe-Trading@80ffdda44c (2026-08-28).
Data as JSON: /api/errors/b18ff5ea9b811523.
Report an issue: GitHub.