Web application for managing and visualizing Federated Learning experiments.
- Frontend (Vue + nginx): http://localhost:8080
- Backend API (Node/Express): http://localhost:3001
- t-SNE Service (FastAPI/Python): http://localhost:8001/health
- PostgreSQL: localhost:5432
- Akoflow API: http://localhost:8000
In this setup, Akoflow is a required part of the local environment for AWS provisioning and execution monitoring.
- Docker Desktop (or Docker Engine) running
- Docker Compose v2 (docker compose)
- Git
Use a single environment file at the project root:
- Copy the example file:
cp .env.example .envIn PowerShell:
Copy-Item .env.example .env- Update AWS and S3 values in the .env file:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_REGION
- AWS_VPC_ID
- AWS_SUBNET_ID
- AWS_AMI_ID
- AWS_SSH_KEY_NAME
- S3_FOLDER_KEY
Note: the startup scripts automatically create and set NVFLARE_WS_HOST_PATH to an absolute path that points to akoflow-aws-fedlearning-deployment/.nvflare_ws_shared.
Relevant default values:
- AKOFLOW_EXECUTE_REAL=true
- ENABLE_AWS_EXECUTION=true
- EXPERIMENT_AUTO_FINALIZE_DRY_RUN=false
./scripts/start-dev.ps1Foreground mode:
./scripts/start-dev.ps1 -Foregroundbash ./scripts/start-dev.shForeground mode:
bash ./scripts/start-dev.sh --foregrounddocker compose up -d --builddocker compose downTo remove volumes (warning: this deletes local PostgreSQL data):
docker compose down -vcurl http://localhost:3001/api/config/algorithms
curl http://localhost:8001/health
curl http://localhost:8000/healthCheck whether the daemon is running:
docker infoUsed ports: 8080, 3001, 8001, 5432, 8000.
Windows:
netstat -ano | findstr :3001Linux/macOS:
lsof -i :3001docker compose ps
docker compose logs -f backend postgresdocker compose ps backend
docker compose logs -f frontend backend- backend/: Node.js API and provenance services
- src/: Vue.js frontend
- akoflow-aws-fedlearning-deployment/: Akoflow service
- docker-compose.yml: local orchestration
- scripts/start-dev.ps1 and scripts/start-dev.sh: development bootstrap