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 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
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
-
Start GPU service in another terminal:
python -m gpu_service.main -
Test through gateway:
curl http://localhost:8080/gpu/health
Expected response:
{"status": "healthy", "service": "gpu-service"}
Test Routing to Marketplace Service
-
Start Marketplace service in another terminal:
python -m marketplace_service.main -
Test through gateway:
curl http://localhost:8080/marketplace/health
Expected response:
{"status": "healthy", "service": "marketplace-service"}
Test Routing to Trading Service
-
Start Trading service in another terminal:
python -m trading_service.main -
Test through gateway:
curl http://localhost:8080/trading/health
Expected response:
{"status": "healthy", "service": "trading-service"}
Test Routing to Governance Service
-
Start Governance service in another terminal:
python -m governance_service.main -
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 checkGET /services- List registered services/*- Proxy all other requests to appropriate microservice
Configuration
Service URLs are configured in main.py under the SERVICES dictionary.