Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion backends/advanced/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ services:



# Use tailscale instead
# Use tailscale instead
# UNCOMMENT OUT FOR LOCAL DEMO - EXPOSES to internet
# ngrok:
# image: ngrok/ngrok:latest
Expand All @@ -211,6 +211,10 @@ services:
# - NGROK_AUTHTOKEN=${NGROK_AUTHTOKEN}
# command: "http proxy:80 --url=${NGROK_URL} --basic-auth=${NGROK_BASIC_AUTH}"

# Shared network for cross-project communication
networks:
default:
name: friend-network

# Question: These are named volumes, but they are not being used, right? Can we remove them?
# volumes:
Expand Down
5 changes: 5 additions & 0 deletions extras/speaker-recognition/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,8 @@ services:
interval: 30s
timeout: 10s
retries: 3

# Shared network for cross-project communication
networks:
default:
name: friend-network
Comment on lines +106 to +110

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

LGTM! Shared network enables cross-project service communication.

The friend-network configuration allows the backend service to communicate with speaker-recognition services across Docker Compose projects. Since services.py manages both projects together, network lifecycle is handled appropriately.

Verify whether asr-services and openmemory-mcp should also use the shared network for consistency:


🏁 Script executed:

#!/bin/bash
# Check if other services have docker-compose files and whether they might need the shared network

echo "=== Checking asr-services docker-compose.yml ==="
if [ -f "extras/asr-services/docker-compose.yml" ]; then
    echo "File exists. Checking for network configuration:"
    grep -A 5 "^networks:" extras/asr-services/docker-compose.yml || echo "No networks block found"
else
    echo "File not found"
fi

echo -e "\n=== Checking openmemory-mcp docker-compose.yml ==="
if [ -f "extras/openmemory-mcp/docker-compose.yml" ]; then
    echo "File exists. Checking for network configuration:"
    grep -A 5 "^networks:" extras/openmemory-mcp/docker-compose.yml || echo "No networks block found"
else
    echo "File not found"
fi

echo -e "\n=== Checking if backend references these services ==="
grep -E "ASR|OPENMEMORY|asr-service|openmemory" backends/advanced/docker-compose.yml || echo "No direct references found in backend docker-compose"

Length of output: 352


I need to check how OFFLINE_ASR_TCP_URI is configured and whether asr-services actually runs services that need cross-project network access.

Now I need to verify what OFFLINE_ASR_TCP_URI is configured to and whether asr-services runs services that need the shared network:The web search didn't provide clarity on the specific codebase's asr-services. Let me check the actual configuration files directly:

Based on the verification results and Docker Compose networking documentation, I have enough information to generate the rewritten review comment. The key findings are:

  1. Script output shows asr-services and openmemory-mcp have NO networks block (isolated networks)
  2. Backend references OFFLINE_ASR_TCP_URI (suggesting potential cross-project communication need)
  3. Docker Compose documentation confirms: by default, docker-compose projects run in separate networks; by creating an external network and declaring it in every project, containers from different projects can talk with each other
  4. The speaker-recognition service is now configured with friend-network, enabling backend communication

However, the key insight is that asr-services and openmemory-mcp are not explicitly configured to use the shared network, yet the backend references ASR services. This represents a potential missing configuration issue that requires the developer to verify whether these services need the shared network.

Configuration inconsistency: asr-services and openmemory-mcp should also use friend-network for cross-project communication.

The backend service references OFFLINE_ASR_TCP_URI, indicating a need for cross-project communication with services managed through services.py. Currently, only speaker-recognition uses the friend-network, but asr-services and openmemory-mcp have no explicit network configuration, leaving them in isolated project-specific networks. By default, docker-compose projects run in separate networks; however, by creating an external network and declaring it in every project, containers from different projects can talk with each other.

Add network configuration to asr-services and openmemory-mcp docker-compose files:

  • Add networks block with name: friend-network (matching speaker-recognition)
  • This ensures consistent cross-project communication setup across all services managed by services.py
🤖 Prompt for AI Agents
extras/speaker-recognition/docker-compose.yml lines 106-110: The compose file
creates an external network named friend-network for speaker-recognition, but as
noted OFFLINE_ASR_TCP_URI and backend code imply cross-project ASR
communication; inspect the asr-services and openmemory-mcp docker-compose files
and, if those services must be reachable across projects, add a networks block
pointing to the same external friend-network (matching name and external: true)
so containers live on the shared network; also verify OFFLINE_ASR_TCP_URI
resolves to the service hostname on that network and update compose/service
names or the URI accordingly.

3 changes: 2 additions & 1 deletion services.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,8 @@ def main():

elif args.command == 'stop':
if args.all:
services = list(SERVICES.keys())
# Only stop configured services (like start --all does)
services = [s for s in SERVICES.keys() if check_service_configured(s)]
elif args.services:
# Validate service names
invalid_services = [s for s in args.services if s not in SERVICES]
Expand Down