Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

234 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LabLink

Cloud-based virtual teaching lab accessible through Chrome browser.

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


πŸ“¦ 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

Docker Images (Published to GHCR)

Production images are built from PyPI packages and tagged with specific versions:

  • lablink-allocator-image - Allocator service container

    docker pull ghcr.io/talmolab/lablink-allocator-image:0.0.2a0
    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:0.0.7a0
    docker pull ghcr.io/talmolab/lablink-client-base-image:latest

Available Tags:

  • <version> (e.g., 0.0.2a0) - Specific package version (recommended for production)
  • latest - Latest stable release
  • linux-amd64-latest - Latest for specific platform
  • <sha> - Specific git commit
  • linux-amd64-test - Development/testing builds

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 lablink.yaml by hand
Deploy lablink deploy terraform apply
Best for Most users Custom Terraform workflows

Using the CLI

# Install
uv tool install lablink-cli

# Interactive configuration wizard (Textual TUI)
lablink configure

# Validate your environment
lablink doctor

# Deploy infrastructure
lablink setup   # one-time GCP/Tailscale bootstrap
lablink deploy  # provision allocator + VMs

# 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

# Setup allocator service for development
cd packages/allocator
uv sync --extra dev

# Setup client service for development
cd ../client
uv sync --extra dev

See the Contributing Guide for detailed development instructions.


πŸ“š Documentation


πŸ—οΈ Repository Structure

lablink/
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ allocator/                   # Allocator Python package
β”‚   β”‚   β”œβ”€β”€ src/lablink_allocator/   # 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/      # 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

See the Release Process for how releases are managed.


🀝 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

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages