Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

249 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LabLink

Cloud-based virtual teaching lab accessible through Chrome browser.

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


πŸ“¦ What's in This Repository

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

Python Packages

Published to PyPI:

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

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.1.2) - 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 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

Using the CLI

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

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

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: not yet published to PyPI (install from source)

🀝 Contributing

We welcome contributions! Please see:

Quick Contributing Workflow

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Make changes and add tests
  4. Run tests: cd packages/allocator && uv run pytest
  5. Commit: git commit -m "feat: add my feature"
  6. Push and open a Pull Request

πŸ”— 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