MADSci Squid (Lab Manager)
Central lab configuration manager and web dashboard provider for MADSci-powered laboratories.
Features
- Lab Management: Central configuration and coordination point for all lab services
- Web Dashboard: Vue-based interface for monitoring and controlling lab operations
- Service Discovery: Provides lab context and service URLs to other components
- Static File Serving: Hosts the dashboard UI and provides lab-wide file access
- CORS Support: Enables cross-origin requests from dashboard to services
Installation
See the main README for installation options. This package is available as:
- PyPI:
pip install madsci.squid - Docker: Use
ghcr.io/ad-sdl/madsci_dashboardfor complete setup with UI - Example configuration: See example_lab/managers/example_lab.manager.yaml
Usage
Quick Start
Use the example_lab as a starting point:
# Start complete lab with dashboard
docker compose up # From repo root
# Dashboard available at http://localhost:8000
# Or run standalone (without dashboard)
python -m madsci.squid.lab_server
Lab Manager Setup
Run the lab manager:
# With dashboard (requires built UI files)
python -m madsci.squid.lab_server --lab-dashboard-files-path ./ui/dist
# Without dashboard
python -m madsci.squid.lab_server --lab-dashboard-files-path None
Integration with MADSci Ecosystem
The Lab Manager provides centralized coordination:
# Lab Manager serves context to all services
# Available at http://localhost:8000/context
{
"lab_server_url": "http://localhost:8000",
"event_server_url": "http://localhost:8001",
"experiment_server_url": "http://localhost:8002",
"resource_server_url": "http://localhost:8003",
"data_server_url": "http://localhost:8004",
"workcell_server_url": "http://localhost:8005",
"location_server_url": "http://localhost:8006"
}
Dashboard Features
The web dashboard provides real-time lab monitoring and control:
Core Panels
- Workcells: Monitor workcell status, view running workflows, submit new workflows
- Workflows: Browse workflow history, view execution details, manage workflow lifecycle
- Resources: Explore resource inventory, view container hierarchies, track consumables
- Experiments: Monitor experimental campaigns, view experiment runs and status
Administrative Controls
- Node Management: View node status, send admin commands (pause, resume, safety stop)
- Workcell Controls: Pause/resume workcells, view current operations
- Resource Operations: Add new resources, update quantities, manage containers
- Real-time Updates: Live status updates across all lab components
Development
For dashboard development, see ui/README.md.
Configuration
Environment Variables
Lab Manager Settings (LAB_ prefix):
# Core Lab Manager Configuration
LAB_SERVER_URL=http://localhost:8000 # Lab manager server URL
LAB_DASHBOARD_FILES_PATH=./ui/dist # Path to dashboard static files (set to None to disable)
# Additional settings inherited from ManagerSettings:
LAB_VERBOSE=false # Enable verbose logging
LAB_LOG_LEVEL=INFO # Logging level
LAB_CORS_ALLOWED_ORIGINS=["*"] # CORS origins for dashboard
Service URLs (for context endpoint - other manager settings):
# Manager Service URLs (used by /context endpoint)
EVENT_SERVER_URL=http://localhost:8001 # Event manager
EXPERIMENT_SERVER_URL=http://localhost:8002 # Experiment manager
RESOURCE_SERVER_URL=http://localhost:8003 # Resource manager
DATA_SERVER_URL=http://localhost:8004 # Data manager
WORKCELL_SERVER_URL=http://localhost:8005 # Workcell manager
LOCATION_SERVER_URL=http://localhost:8006 # Location manager
Configuration Files (alternative to environment variables):
.envorlab.env- Environment variable filesettings.tomlorlab.settings.toml- TOML configurationsettings.yamlorlab.settings.yaml- YAML configurationsettings.jsonorlab.settings.json- JSON configuration
API Endpoints
The Lab Manager provides REST endpoints for lab coordination:
Core Endpoints
GET /context - Lab-wide service URLs and configuration
{
"lab_server_url": "http://localhost:8000",
"event_server_url": "http://localhost:8001",
"experiment_server_url": "http://localhost:8002",
"resource_server_url": "http://localhost:8003",
"data_server_url": "http://localhost:8004",
"workcell_server_url": "http://localhost:8005",
"location_server_url": "http://localhost:8006"
}
GET /health - Service health check
{
"healthy": true,
"description": "Lab Manager is running"
}
GET /lab_health - Comprehensive lab health status
{
"healthy": true,
"description": "5/6 managers are healthy",
"managers": {
"event_manager": {"healthy": true, "description": "Event Manager is running"},
"experiment_manager": {"healthy": true, "description": "Experiment Manager is running"},
"resource_manager": {"healthy": false, "description": "Failed to connect: Connection refused"},
"data_manager": {"healthy": true, "description": "Data Manager is running"},
"workcell_manager": {"healthy": true, "description": "Workcell Manager is running"},
"location_manager": {"healthy": true, "description": "Location Manager is running"}
},
"total_managers": 6,
"healthy_managers": 5
}
Static File Serving
- Dashboard files served at root
/whenLAB_DASHBOARD_FILES_PATHis configured - HTML fallback routing for SPA navigation
- API routes take precedence over static files
Health Check Details
- Lab Health Algorithm: Lab considered healthy if >50% of configured managers are healthy
- Timeout: 5-second timeout for health check requests to managers
- Error Handling: Failed managers marked with specific error descriptions
Full API documentation: Available at http://localhost:8000/docs when running
Examples: See example_lab/ for complete lab setup with dashboard integration.
Metadata
Release files for madsci.squid 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| madsci_squid-0.8.1.tar.gz | 6.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| madsci_squid-0.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.8 kB
Release files / madsci_squid-0.8.1.tar.gz
| Download URL | madsci_squid-0.8.1.tar.gz |
|---|---|
| Size | 6.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14da89fc512cd43f06c1bd6464b40692b1c009901971df66e53026c301d99b85
|
|
BLAKE2b-256 checksum How to use checksums |
839aebc827bec4ade3b1acba30433ed43bd2c36b10cc7d70936db45cda86a090
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
pdm/2.29.2 CPython/3.12.3 Linux/6.17.0-1022-azure
|
Release files / madsci_squid-0.8.1-py3-none-any.whl
| Download URL | madsci_squid-0.8.1-py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a27ff8814fa942e08641b71a90e577e047b420b06da75d379e7aedbf1e4929f
|
|
BLAKE2b-256 checksum How to use checksums |
cc3f3609f4f958ce35dbb29e6d13c67df8257e59cf3d0821092df8c7f08cef8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
pdm/2.29.2 CPython/3.12.3 Linux/6.17.0-1022-azure
|