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.
- Kubernetes-Native: Built using the Kopf framework for Python.
- Resource Templates:
DevServerFlavorCRDs define t-shirt sized resource configurations. - User Management:
DevServerUserCRDs for managing user access and SSH keys. - Lifecycle Management: Automatic shutdown and expiration.
- CLI Tool:
devctlfor easy interaction with DevServers. - SSH Agent Forwarding: Seamlessly forward your SSH agent to the DevServer.
- YAML Configuration: Configure
devctlusing~/.config/devctl/config.yaml. - Test-Driven Development: Comprehensive test suite using
pytestandk3d.
# Create a local k3d cluster
k3d cluster create devserver-cluster# Apply the Custom Resource Definitions and Flavors
make install-crds# Start the operator in development mode
make runIn 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 mydevFor more detailed documentation, please see the following README.md files:
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- Fork the repository.
- Create a feature branch.
- Make your changes with tests.
- Run the test suite:
make test - Submit a pull request.
This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.