Skip to main content

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:

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):

  • .env or lab.env - Environment variable file
  • settings.toml or lab.settings.toml - TOML configuration
  • settings.yaml or lab.settings.yaml - YAML configuration
  • settings.json or lab.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 / when LAB_DASHBOARD_FILES_PATH is 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)

Source distribution for madsci.squid 0.8.1
File Size Uploaded
madsci_squid-0.8.1.tar.gz 6.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for madsci.squid 0.8.1
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page