google-agents-cli-scaffold
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
hetzner-cluster
Toolkit for creating and managing server clusters on Hetzner Cloud using Terraform. Use this skill when users request deploying VMs, creating test infrastructure, or setting up server clusters on Hetzner Cloud. The skill provides Terraform templates optimized for network testing with strict firew...
Full skill instructions
Create and manage VM clusters on Hetzner Cloud using Terraform templates optimized for hands-on testing and network experimentation. The skill provides pre-configured Terraform templates with secure networking (public + private interfaces), strict firewall rules (SSH, HTTPS, ZeroTier), automatic ZeroTier network creation and node provisioning, and support for multiple datacenters. Each cluster automatically creates its own isolated ZeroTier network with unique subnets to avoid conflicts between deployments.
Use this skill when users request:
To deploy a cluster with automatic ZeroTier network setup:
envrc.example to .envrc and add your API tokens:
cp envrc.example .envrc
# Edit .envrc with your tokens:
# - Hetzner Cloud API token (from https://console.hetzner.cloud/)
# - ZeroTier Central API token (from https://my.zerotier.com/account)
direnv allow # Load the environment variables
mkdir -p clusters/<cluster-name> (e.g., clusters/demo-cluster)assets/terraform-hetzner-cluster/ to the cluster directory~/.ssh/id_ed25519)scripts/deploy_cluster.shterraform init, terraform plan, and terraform applyThe deployment automatically:
The Terraform templates support flexible cluster configurations:
Server Types (CCX Line):
ccx13: 2 vCPU, 8GB RAM, 80GB NVMe (~$8.90/month)ccx23: 4 vCPU, 16GB RAM, 160GB NVMe (~$17.80/month)ccx33: 8 vCPU, 32GB RAM, 240GB NVMe (~$35.60/month)Datacenters:
hillsboro: Hillsboro, OR, USA (hil-dc1) - Defaultsingapore: Singapore (sin-dc1)germany: Falkenstein, Germany (fsn1-dc14)Node Count:
Example Configuration:
cluster_name = "test-cluster"
node_count = 3
server_type = "ccx13"
datacenter = "hillsboro"
Each cluster includes:
Public Interface:
Private Network:
Firewall Rules:
Refer to references/network-config.md for detailed network specifications.
Each cluster deployment automatically creates and configures a ZeroTier software-defined network:
Automatic Network Creation:
Automatic Node Provisioning:
Network Isolation:
Integration Benefits:
Example Outputs:
zerotier_network_id = "1c33c1ced02a5a44"
zerotier_network_subnet = "10.147.0.0/24"
zerotier_node_ids = {
"happy-turtle-01" = "a1b2c3d4e5"
"happy-turtle-02" = "f6g7h8i9j0"
"happy-turtle-03" = "k1l2m3n4o5"
}
zerotier_member_ips = {
"happy-turtle-01" = ["10.147.0.1"]
"happy-turtle-02" = ["10.147.0.2"]
"happy-turtle-03" = ["10.147.0.3"]
}
Method A: Using the Helper Script (Recommended)
The scripts/deploy_cluster.sh script automates the entire deployment process:
# Set required API tokens
export HCLOUD_TOKEN='your-hetzner-api-token'
export ZEROTIER_API_TOKEN='your-zerotier-api-token'
# Optional: Set SSH key path (defaults to ~/.ssh/id_ed25519)
export SSH_KEY_PATH="$HOME/.ssh/id_ed25519"
# Create cluster directory and copy script
mkdir -p clusters/my-cluster
cd clusters/my-cluster
cp ../../scripts/deploy_cluster.sh .
chmod +x deploy_cluster.sh
# Deploy with defaults (3 nodes, ccx13, hillsboro)
./deploy_cluster.sh
# Or deploy with custom configuration
./deploy_cluster.sh 5 ccx23 singapore
The script will:
terraform.tfvars with all configurationMethod B: Manual Deployment
For more control or customization:
Create cluster directory and copy templates:
mkdir -p clusters/<cluster-name>
cp -r assets/terraform-hetzner-cluster/* clusters/<cluster-name>/
cd clusters/<cluster-name>
Create terraform.tfvars:
hcloud_token = "your-hetzner-api-token"
zerotier_api_token = "your-zerotier-api-token"
cluster_name = "" # Leave empty for random name
node_count = 3
server_type = "ccx13"
datacenter = "hillsboro"
ssh_private_key_path = "~/.ssh/id_ed25519"
Deploy:
terraform init
terraform plan
terraform apply
View outputs including ZeroTier network info:
terraform output
terraform output zerotier_network_id
terraform output zerotier_member_ips
After deployment, Terraform outputs provide connection details for both direct SSH and ZeroTier access:
View all outputs:
terraform output
Get SSH commands:
terraform output -json ssh_commands | jq -r '.[]'
Example output:
ssh root@<public-ip-1>
ssh root@<public-ip-2>
ssh root@<public-ip-3>
View IP addresses:
# Public IPs
terraform output public_ips
# Private IPs (Hetzner private network)
terraform output private_ips
# ZeroTier IPs
terraform output zerotier_member_ips
ZeroTier Network Access:
# Get ZeroTier network ID
terraform output zerotier_network_id
# Get join command for other devices
terraform output -raw zerotier_join_command
# View ZeroTier node IDs
terraform output zerotier_node_ids
Example: SSH via ZeroTier IP:
# After nodes are authorized and have ZeroTier IPs
ssh [email protected] # Replace with actual ZeroTier IP from output
View cluster status:
terraform show
Modify cluster:
terraform.tfvars (e.g., change node_count)terraform plan to preview changesterraform apply to apply changesDestroy cluster:
terraform destroy
Note:
User request: "Create a 3-node test cluster on Hetzner with ZeroTier networking"
envrc.example to .envrc and add API tokensmkdir -p clusters/demo-clusterscripts/deploy_cluster.sh with defaults or create terraform.tfvars manuallyterraform applyUser request: "Set up clusters in both Singapore and Germany for latency testing"
clusters/singapore/, clusters/germany/)clusters/singapore/terraform.tfvars: datacenter = "singapore"clusters/germany/terraform.tfvars: datacenter = "germany"User request: "I need a 5-node cluster with more powerful servers for performance testing"
mkdir -p clusters/performance-testnode_count = 5
server_type = "ccx23" # 4 vCPU, 16GB RAM
User request: "I want to join my laptop to the cluster's ZeroTier network for testing"
terraform output -raw zerotier_network_id
curl -s https://install.zerotier.com | bashzerotier-cli join <network-id>ping 10.X.0.1 (use actual ZeroTier IP from outputs)Detailed specifications and documentation are available in the references/ directory:
references/hetzner-specs.md: Complete server type specifications, datacenter details, and pricing informationreferences/network-config.md: Detailed network architecture, firewall rules, and connectivity optionsLoad these references when users need detailed information about:
SSH key pair not found:
~/.ssh/id_ed25519 and ~/.ssh/id_ed25519.pub existssh-keygen -t ed25519 -C "[email protected]"export SSH_KEY_PATH="/path/to/key"HCLOUD_TOKEN not set:
export HCLOUD_TOKEN='your-token'ZEROTIER_API_TOKEN not set:
export ZEROTIER_API_TOKEN='your-token'ZeroTier installation fails:
curl -I https://install.zerotier.comZeroTier nodes not joining network:
ssh root@<ip> 'systemctl status zerotier-one'ssh root@<ip> 'zerotier-cli listnetworks'ZeroTier members not authorized:
terraform show | grep zerotier_memberTerraform errors:
terraform init in the correct directoryInvalid datacenter/location:
Network zone mismatch:
Provisioner connection failures:
get_ssh_key.py: Finds and returns SSH public key from ~/.ssh/ (legacy, now optional)deploy_cluster.sh: Complete deployment automation script with ZeroTier integration, API token verification, and interactive promptshetzner-specs.md: Server specifications, datacenter locations, and pricingnetwork-config.md: Network architecture, firewall rules, and ZeroTier connectivity detailsterraform-hetzner-cluster/: Complete Terraform templates ready for deployment
main.tf: Core infrastructure (servers, networks, firewalls, ZeroTier network, provisioners)variables.tf: Input variables with validation and defaults (includes ZeroTier API token)outputs.tf: Connection information, cluster details, and ZeroTier network infoversions.tf: Terraform and provider version requirements (Hetzner, Random, ZeroTier)terraform.tfvars.example: Example configuration file with all required variablesProject scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.
Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.
Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.
Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.
Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.
Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.
Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.
Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.
Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.
Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".
Opus.ai: Revolutionize Your Web Experience
Build a no-code AI app in minutes.
An IDE for code migration from legacy to modern frameworks through coding agents.
Automate CGI animation in live-action scenes
Branded artistic QR-code concepts
Launch a website in seconds with AI.
Streamline Your Coding Experience with AI Code Helper
Convert any screenshot or design to clean code.