The Modular Autonomous Discovery for Science (MADSci) Control Server and Scheduler, aka Squid.
Project description
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
Create a lab definition file:
# lab.yaml
name: My_Lab
description: My MADSci-powered laboratory
manager_type: lab_manager
manager_id: 01JVDFED2K18FVF0E7JM7SX09F # Generate with ulid
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
Lab Definition
name: Production_Lab
description: Production MADSci Laboratory
manager_type: lab_manager
manager_id: 01JVDFED2K18FVF0E7JM7SX09F
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)
LAB_MANAGER_DEFINITION=lab.manager.yaml # Path to lab definition file
# 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
}
GET /definition - Lab definition and metadata
{
"name": "Example_Lab_Manager",
"description": "A simple example of a lab manager definition",
"manager_id": "01JVDFED2K18FVF0E7JM7SX09F",
"manager_type": "lab_manager"
}
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file madsci_squid-0.7.0.tar.gz.
File metadata
- Download URL: madsci_squid-0.7.0.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.26.6 CPython/3.12.3 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c8d7e10b45039ea111c3b1778f80cab9f44ad74443a7f13fb5109592ea4add9
|
|
| MD5 |
d0207ab25b577528bbd8042bdfdd1422
|
|
| BLAKE2b-256 |
11750a21f2a52770d7abfa17d013ea899e64ebe334ab1529c163b1f5793cde02
|
File details
Details for the file madsci_squid-0.7.0-py3-none-any.whl.
File metadata
- Download URL: madsci_squid-0.7.0-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.26.6 CPython/3.12.3 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91d6a70d049f63cdc0528ec24565aa94edb888d84173e568b5e01ff73abbd686
|
|
| MD5 |
d5d355e320ff4e1d04e90c36c55c00f0
|
|
| BLAKE2b-256 |
0184d35ab03b144a5deab11e7ff6504705e8f56ed55b9b2ff54136811ffdde81
|