Skip to main content

DevServer Operator

A Kubernetes-native operator for managing development servers, particularly designed for PyTorch and ML development workloads. This project provides both a Kubernetes operator and a CLI tool for creating, managing, and accessing development environments.

📍 Current Status: This project is under active development.

🚀 Features

  • Kubernetes-Native: Built using the Kopf framework for Python.
  • Resource Templates: DevServerFlavor CRDs define t-shirt sized resource configurations.
  • User Management: DevServerUser CRDs for managing user access and SSH keys.
  • Lifecycle Management: Automatic shutdown and expiration.
  • CLI Tool: devctl for easy interaction with DevServers.
  • SSH Agent Forwarding: Seamlessly forward your SSH agent to the DevServer.
  • YAML Configuration: Configure devctl using ~/.config/devctl/config.yaml.
  • Test-Driven Development: Comprehensive test suite using pytest and k3d.

📋 Prerequisites

  • Python 3.9+
  • Docker
  • uv
  • k3d
  • kubectl
  • A Kubernetes cluster (local k3d or remote)

🏃 Quick Start

1. Set Up Local Development Environment

# Create a local k3d cluster
k3d cluster create devserver-cluster

2. Deploy the CRDs and Flavors

# Apply the Custom Resource Definitions and Flavors
make install-crds

3. Run the Operator

# Start the operator in development mode
make run

4. Use the CLI

In a new terminal:

# Create a development server
uv run devctl create --name mydev --flavor cpu-small

# List your servers
uv run devctl list

# Add a user
uv run devctl user add --name test-user --public-key-file ~/.ssh/id_rsa.pub

# Create a server with GPU support (see dev/eks/README.md for setup)
uv run devctl create --name my-gpu-dev --flavor gpu-small --image fedora:latest

# Delete a server
uv run devctl delete mydev

📚 Documentation

For more detailed documentation, please see the following README.md files:

🤝 Contributing

Contributions are welcome! Please see the PROJECT.md for the development plan.

Before submitting a pull request, please run the pre-commit checks to ensure your changes adhere to the project's coding standards:

make pre-commit
  1. Fork the repository.
  2. Create a feature branch.
  3. Make your changes with tests.
  4. Run the test suite: make test
  5. Submit a pull request.

📄 License

This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.

Release files for devservers 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for devservers 0.0.1
File Interpreter ABI Platform
devservers-0.0.1-py3-none-any.whl Python 3 none any Details

Release files / devservers-0.0.1-py3-none-any.whl

Download URL devservers-0.0.1-py3-none-any.whl
Size 45.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4bc74ebf176467cdf23bd4583e356842884930d13d0ed7242d2afcc0f5bab457
BLAKE2b-256 checksum
How to use checksums
47fceac035d3dc0a81fa949f78ab0e54d46b25777e6e6f76af852199bfc758c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

0.0.1 This release

1 release file

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