Skip to content

Latest commit

Β 

History

312 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LabLink

Cloud-based virtual teaching lab accessible through Chrome browser.

Run a hands-on workshop without the install day. LabLink gives every participant their own cloud GPU desktop with your software already installed, reachable from a Chrome tab β€” no local install, no GPU on their laptop, no per-machine debugging.

PyPI - lablink-allocator-service PyPI - lablink-client-service PyPI - lablink-cli CI Documentation License

LabLink admin dashboard showing 30 healthy participant VMs

The admin dashboard: every participant VM, its health, and a one-click desktop link. See the Workshop Guide.


🧭 How It Works

flowchart LR
    You["You<br/>lablink CLI"] -->|deploy| Alloc
    subgraph Cloud["Your cloud account"]
        Alloc["Allocator<br/>web UI Β· API Β· Postgres"]
        Alloc -->|provisions| VM1["Client VM 1"]
        Alloc -->|provisions| VMN["Client VM N"]
    end
    P["Participants<br/>Chrome"] -->|claim a seat| Alloc
    P -.->|KasmVNC desktop| VM1
Loading

You deploy one allocator into your own cloud account. It provisions client VMs β€” one per participant β€” and hands each person a browser desktop when they claim a seat. Full detail: Architecture.


πŸ“¦ What's in This Repository

This repository contains the core LabLink packages, Docker images, and documentation:

Python Packages

Published to PyPI:

  • lablink-allocator - VM Allocator Service

    pip install lablink-allocator-service
  • lablink-client - Client Service

    pip install lablink-client-service
  • lablink-cli - Command-line tool to deploy and manage LabLink infrastructure

    uv tool install lablink-cli   # or: pip install lablink-cli

    The package is lablink-cli; the command it installs is lablink. To work on the CLI itself, install from source instead β€” see the Contributing Guide.

Docker Images (Published to GHCR)

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 release
  • linux-amd64-latest - Latest for specific platform
  • <sha> - Specific git commit
  • linux-amd64-test - Development/testing builds
  • <version> (e.g., 0.3.0) - Only published when a build is triggered manually

See Docker Image Tags for complete tagging strategy.

Documentation

  • LabLink Docs - Comprehensive documentation
    • Getting Started
    • Configuration
    • API Reference
    • Contributing Guide

πŸš€ Quick Start

Two Deployment Paths

Path A β€” CLI (recommended) Path B β€” Template fork
Install uv tool install lablink-cli Fork lablink-template
Configure Interactive TUI (lablink configure) Edit config/config.yaml by hand
Deploy lablink deploy terraform apply
Best for Most users Custom Terraform workflows

Either path ends at the same admin panel, where you create VMs before the session and share one link with the room:

LabLink admin panel

What your participants see: they open the link, enter their email, and land in a full desktop with your software running β€” nothing to install. Watch the 30-second demo.

Using the CLI

lablink configure β€” the interactive setup wizard

lablink configure walks the whole deployment: region, instance types, DNS & SSL, then writes ~/.lablink/config.yaml.

# Install from PyPI (see docs/cli/installation.md)
uv tool install lablink-cli

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

For Developers

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 dev

# Run a package's tests (terraform tests need AWS credentials, so skip them locally)
cd packages/allocator && PYTHONPATH=src uv run pytest --ignore=tests/terraform

See the Contributing Guide for detailed development instructions.


πŸ“š Documentation


πŸ—οΈ Repository Structure

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.


πŸ“¦ Package Versioning

LabLink uses independent versioning for its packages:

  • lablink-allocator-service: PyPI
  • lablink-client-service: PyPI
  • lablink-cli: PyPI

🀝 Contributing

We welcome contributions! Please see:


πŸ”— Related Repositories


πŸ“ License

BSD-2-Clause License


πŸ™ Acknowledgments

LabLink is developed by the Talmo Lab for the research community.


Questions? Check the FAQ or open an issue.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages