Cloud-based virtual teaching lab accessible through Chrome browser.
This repository contains the core LabLink packages, Docker images, and documentation:
Published to PyPI:
-
lablink-allocator - VM Allocator Service
pip install lablink-allocator-service
-
lablink-client - Client Service
pip install lablink-client-service
Not yet on PyPI β install from source:
- lablink-cli - Command-line tool to deploy and manage LabLink infrastructure
git clone https://github.com/talmolab/lablink.git cd lablink && uv sync --all-packages
Production images are built from the PyPI packages:
-
lablink-allocator-image - Allocator service container
docker pull ghcr.io/talmolab/lablink-allocator-image:latest
-
lablink-client-base-image - Client service container
docker pull ghcr.io/talmolab/lablink-client-base-image:latest
Available Tags:
latest- Latest stable releaselinux-amd64-latest- Latest for specific platform<sha>- Specific git commitlinux-amd64-test- Development/testing builds<version>(e.g.,0.1.2) - Only published when a build is triggered manually
See Docker Image Tags for complete tagging strategy.
- LabLink Docs - Comprehensive documentation
- Getting Started
- Configuration
- API Reference
- Contributing Guide
| Path A β CLI (recommended) | Path B β Template fork | |
|---|---|---|
| Install | uv sync --all-packages |
Fork lablink-template |
| Configure | Interactive TUI (lablink configure) |
Edit lablink.yaml by hand |
| Deploy | lablink deploy |
terraform apply |
| Best for | Most users | Custom Terraform workflows |
# Install from source (see docs/cli/installation.md)
git clone https://github.com/talmolab/lablink.git
cd lablink && uv sync --all-packages
source .venv/bin/activate
# Interactive configuration wizard (Textual TUI)
lablink configure
# Validate your environment
lablink doctor
# Deploy the allocator
lablink setup # S3 bucket + DynamoDB lock table for Terraform state (run by `configure`)
lablink deploy # provision the allocator
# Add clients
lablink client launch --num-vms 5 # AWS: allocator provisions client VMs
lablink client register # manual provider: register a bring-your-own box
# Monitor
lablink status # check running infrastructure
lablink logs # live log viewer (Textual TUI)Contributing to LabLink packages:
# Clone the repository
git clone https://github.com/talmolab/lablink.git
cd lablink
# Install uv (recommended Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install all three packages into one shared venv at the repo root.
uv sync --all-packages --extra devSee the Contributing Guide for detailed development instructions.
- Full Documentation - Complete guide
- Architecture - System design
- Configuration - Configuration options
- API Reference - Package APIs
- Contributing - Contribution guide
lablink/
βββ packages/
β βββ allocator/ # Allocator Python package
β β βββ src/lablink_allocator_service/ # Source code
β β β βββ terraform/ # Client VM Terraform (part of package)
β β βββ tests/ # Unit tests including Terraform tests
β β βββ Dockerfile # Production image (from PyPI)
β β βββ Dockerfile.dev # Development image (local code)
β βββ client/ # Client Python package
β β βββ src/lablink_client_service/ # Source code
β β βββ tests/ # Unit tests
β β βββ Dockerfile # Production image (from PyPI)
β β βββ Dockerfile.dev # Development image (local code)
β βββ cli/ # CLI Python package (Typer + Textual)
β βββ src/lablink_cli/ # Source code (commands, TUI, config)
β βββ tests/ # Unit tests
βββ docs/ # MkDocs documentation
βββ .github/workflows/ # CI/CD workflows
βββ ci.yml # Tests, linting, Docker builds
βββ publish-pip.yml # PyPI publishing
βββ lablink-images.yml # Docker image builds & pushes
βββ docs.yml # Documentation deployment
Note: Infrastructure deployment code (allocator EC2, DNS, etc.) has been moved to lablink-template.
LabLink uses independent versioning for its packages:
- lablink-allocator-service:
- lablink-client-service:
- lablink-cli: not yet published to PyPI (install from source)
We welcome contributions! Please see:
- Contributing Guide - How to contribute
- Developer Guide (CLAUDE.md) - Developer-focused overview
- Code of Conduct - Community guidelines
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make changes and add tests
- Run tests:
cd packages/allocator && uv run pytest - Commit:
git commit -m "feat: add my feature" - Push and open a Pull Request
- LabLink Template - Infrastructure deployment template using LabLink packages
LabLink is developed by the Talmo Lab for the research community.