Files
aitbc/apps/api-gateway
aitbc 745f791eda refactor: improve error handling and remove hardcoded credentials
- Changed bare except clauses to specific exception types in web3_utils.py, testing.py, messages.py, and message_storage.py
- Replaced print() calls with logger in testing.py, agent_discovery.py, compliance_agent.py, coordinator.py, trading_agent.py, keys.py, escrow.py, persistent_spending_tracker.py, sync_cli.py, and client.py
- Added logger initialization using get_logger(__name__) in compliance_agent.py, coordinator.py, trading_agent.py, keys.py, escrow.py, persistent_spending_tracker.py, and client.py
- Removed hardcoded secret
2026-05-12 17:01:57 +02:00
..

AITBC API Gateway

Routes requests to AITBC microservices.

Service Registry

The gateway routes requests to the following services:

  • GPU Service (port 8101): /gpu/* → GPU resource management
  • Marketplace Service (port 8102): /marketplace/* → GPU marketplace
  • Agent Service (port 8103): /agent/* → Agent operations
  • Trading Service (port 8104): /trading/* → Trading operations
  • Governance Service (port 8105): /governance/* → Governance operations
  • Coordinator API (port 8000): /coordinator/* → Coordinator API (default)

Installation

cd /opt/aitbc
poetry install --with api-gateway

Running

# Development
python -m api_gateway.main

# Production (systemd)
sudo systemctl start api-gateway
sudo systemctl enable api-gateway

Testing

Prerequisites

  • All microservices installed via Poetry
  • At least one microservice running (e.g., GPU service)
  • Microservice database created (if testing that service)

Start Gateway (Development)

python -m api_gateway.main

Health Check

curl http://localhost:8080/health

Expected response:

{"status": "healthy", "service": "api-gateway"}

Service Registry

curl http://localhost:8080/services

Expected response:

{
  "services": [
    {
      "name": "gpu",
      "url": "http://localhost:8101",
      "health_check": "/health",
      "routes": ["/gpu/*"]
    },
    {
      "name": "marketplace",
      "url": "http://localhost:8102",
      "health_check": "/health",
      "routes": ["/marketplace/*"]
    },
    {
      "name": "trading",
      "url": "http://localhost:8104",
      "health_check": "/health",
      "routes": ["/trading/*"]
    },
    {
      "name": "governance",
      "url": "http://localhost:8105",
      "health_check": "/health",
      "routes": ["/governance/*"]
    }
  ]
}

Test Routing to GPU Service

  1. Start GPU service in another terminal:

    python -m gpu_service.main
    
  2. Test through gateway:

    curl http://localhost:8080/gpu/health
    

Expected response:

{"status": "healthy", "service": "gpu-service"}

Test Routing to Marketplace Service

  1. Start Marketplace service in another terminal:

    python -m marketplace_service.main
    
  2. Test through gateway:

    curl http://localhost:8080/marketplace/health
    

Expected response:

{"status": "healthy", "service": "marketplace-service"}

Test Routing to Trading Service

  1. Start Trading service in another terminal:

    python -m trading_service.main
    
  2. Test through gateway:

    curl http://localhost:8080/trading/health
    

Expected response:

{"status": "healthy", "service": "trading-service"}

Test Routing to Governance Service

  1. Start Governance service in another terminal:

    python -m governance_service.main
    
  2. Test through gateway:

    curl http://localhost:8080/governance/health
    

Expected response:

{"status": "healthy", "service": "governance-service"}

For comprehensive testing procedures, see MICROSERVICES_TESTING_GUIDE.md.

Endpoints

  • GET /health - Health check
  • GET /services - List registered services
  • /* - Proxy all other requests to appropriate microservice

Configuration

Service URLs are configured in main.py under the SERVICES dictionary.