DEV Community

Haseeb Kaloya
Haseeb Kaloya

Posted on

DevOps GUI Tool: Bulk GitHub Repos & Tailscale Mesh with Python

Automate GitHub Repositories & Tailscale Security: A PyQt5 GUI Guide

GitHub Banner

Managing GitHub repositories and Tailscale networks manually can be tedious. I built a professional desktop GUI using PyQt5 to automate bulk repository creation, encrypted secret management, and secure mesh networkingβ€”here’s how you can too.


πŸš€ What This Tool Does

  • Bulk GitHub repo creation with consistent naming and visibility
  • Encrypted secret management for GitHub Actions and environments
  • Tailscale auth key generation (reusable or ephemeral)
  • Workflow triggers and file uploads across repos
  • System diagnostics and real-time status dashboard

Built with PyQt5, PyGithub, and Tailscale API, all wrapped in a clean Windows executable.


πŸ› οΈ Tech Stack

  • Python 3.10+ with PyQt5 for the GUI
  • PyGithub for GitHub API interactions
  • Tailscale API for mesh networking
  • PyNaCl for local secret encryption
  • PyInstaller for standalone Windows builds

πŸ“‚ Project Structure

Github-Tailscale-Automation/
β”œβ”€β”€ core/           # Main application logic
β”œβ”€β”€ gui/            # PyQt5 UI components
β”œβ”€β”€ api/            # GitHub/Tailscale API clients
β”œβ”€β”€ utils/          # Helpers, logging, paths
β”œβ”€β”€ resources/      # Icons and assets
β”œβ”€β”€ docs/           # Screenshots and guides
└── main.py         # Entry point
Enter fullscreen mode Exit fullscreen mode

πŸ”‘ Key Features in Action

Bulk Repository Creation

# Simplified example
from github import Github

g = Github(token)
org = g.get_organization("myorg")

for i in range(5):
    repo = org.create_repo(
        f"project-{i+1}",
        private=True,
        auto_init=True
    )
Enter fullscreen mode Exit fullscreen mode

Encrypted Secret Storage

  • Secrets are encrypted locally using PyNaCl
  • Only decrypted in memory when needed
  • Never stored in plaintext or git history

Tailscale Key Generation

  • Generate reusable or ephemeral auth keys
  • Set expiration and ACL rules
  • One-click copy to clipboard

πŸ“¦ Building the Executable

Using PyInstaller with a custom spec:

pyinstaller Github_Tailscale_Automation.spec
Enter fullscreen mode Exit fullscreen mode

Key .spec settings:

  • Bundle as one folder for reliability
  • Include resources/ and icon
  • Hidden imports for PyQt5 modules

πŸ›‘οΈ Security Practices

  • Local encryption for all credentials
  • HTTPS-only API communication
  • No cloud storage of tokens
  • Git exclusion of sensitive configs
  • Fine-grained GitHub token scopes

πŸ“Š Real-World Benefits

  • Time savings: Create 50 repos in minutes, not hours
  • Consistency: Uniform naming, permissions, and files
  • Security: Encrypted secrets, minimal exposure
  • Usability: GUI for non-CLI users

🎯 Who This Is For

  • DevOps engineers managing multiple repos
  • Security teams automating mesh networking
  • Developers wanting GUI-based automation
  • Teams standardizing repo creation workflows

πŸš€ Getting Started

  1. Clone the repo
   git clone https://github.com/haseebkaloya/Github-Tailscale-Automation
   cd Github-Tailscale-Automation
Enter fullscreen mode Exit fullscreen mode
  1. Install dependencies
   pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode
  1. Run the app
   python main.py
Enter fullscreen mode Exit fullscreen mode

Or download the Windows executable from the Releases page.


🀝 Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.


πŸ”— Links


Tags: #python #pyqt #github #tailscale #devops #automation #security #gui #pyinstaller


What automation challenges are you solving? Share in the comments!

Top comments (0)