Files
aitbc/apps/api-gateway
aitbc 0784080465
Some checks failed
CLI Tests / test-cli (push) Failing after 4s
Cross-Node Transaction Testing / transaction-test (push) Successful in 10s
Deploy to Testnet / deploy-testnet (push) Successful in 1m8s
Deploy to Testnet / notify-deployment (push) Has been cancelled
Multi-Node Stress Testing / stress-test (push) Has been cancelled
Node Failover Simulation / failover-test (push) Has been cancelled
Integration Tests / test-service-integration (push) Successful in 2m7s
Python Tests / test-python (push) Successful in 15s
Security Scanning / security-scan (push) Has been cancelled
fix: address post-push review issues - security, resilience, and code quality
- Fix hardcoded DATABASE_URL in 4 new microservices (gpu-service, governance-service, trading-service, marketplace-service) - now use os.getenv() with SQLite fallback
- Move httpx.AsyncClient to API gateway lifespan for connection pooling
- Add 30-second timeout to API gateway proxy calls
- Move hardcoded service URLs to environment variables in API gateway (GPU_SERVICE_URL, MARKETPLACE_SERVICE_URL, etc.)
- Add cli/build/ and cli/dist/ to .gitignore and remove 42 stale build artifacts from git
- Fix version pinning conflicts in 4 new service pyproject.toml files (align with root: fastapi >=0.115.6, sqlmodel >=0.0.38, pytest >=9.0.3)
- Fix 18 remaining datetime.utcnow() calls in monitoring-service and ai-service (replace with datetime.now(timezone.utc))
- Add retries (3 attempts), authentication (Bearer token), rate limiting (100/min via slowapi), and circuit breaker to API gateway
- Add /ready and /live endpoints to 4 new microservices for production readiness/liveness probes
- Audit debug logging - confirmed no sensitive data (passwords, keys, secrets, tokens) is logged; cache keys and masked API keys are safe
2026-05-02 14:51:13 +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.