<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/i-got-tired-of-copying-vm-names-and-zones-in-gcp-so-i-built-a-fast-cli-wrapper-rfizk8teq" -->

---
title: I got tired of copying VM names and zones in GCP, so I...
description: Discussion about &quot;I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper&quot; on daily.dev - join the developer community
canonical: https://daily.dev/posts/i-got-tired-of-copying-vm-names-and-zones-in-gcp-so-i-built-a-fast-cli-wrapper-rfizk8teq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper | daily.dev
og:description: Discussion about &quot;I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper&quot; on daily.dev - join the developer community
og:url: https://daily.dev/posts/i-got-tired-of-copying-vm-names-and-zones-in-gcp-so-i-built-a-fast-cli-wrapper-rfizk8teq
og:image: https://api.daily.dev/og/posts/rfiZK8tEq.png
og:image:alt: I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper

**[Luan Schons](https://daily.dev/sources/r9euoeqqh9viy9facwtls)** · [@luanschons](https://daily.dev/luanschons) · 0 upvotes · 0 comments

## Content

![demo.gif](https://media.daily.dev/image/upload/s--nma9Nj0B--/f_auto/v1788184269/ugc/content_273cd3c2-2105-4b26-9e7b-df31521a5f1a?_a=BAMAMicg0)

If you frequently manage and connect to Google Cloud Compute Engine instances, you've probably encountered this frustrating daily routine:

1. Running `gcloud compute instances list` just to recall an instance name.
2. Manually copying both the name and its zone (`us-central1-a`, `us-central1-f`...).
3. Attempting to SSH only to realize the VM was stopped (requiring another command to boot it).
4. Dealing with similar project names (`my-app-staging` vs `my-app-prod`), hoping you didn't accidentally paste commands into production.

To solve this friction, I built `gcvm` — a single-file Bash CLI tool designed to make connecting to Google Cloud VMs fast, intuitive, and safe.

---

### ✨ What makes it useful?

- 🔍 **Interactive Fuzzy Finder (**`fzf`**)**: Lists all VMs in real time. Pick your target with arrow keys or fuzzy search, press `Enter`, and you're connected — zone resolution is completely automatic.
- 🛡️ **Color-Coded Environment Badges**: Displays prominent `[PROD]`, `[STAGING]`, `[QA]`, or `[DEV]` tags in prompts and headers so you always know where you are.
- ⚡ **Smart Auto-Boot for Stopped Instances**: If a VM is `TERMINATED` or `STOPPED`, `gcvm` asks if you want to start it, waits until it reaches `RUNNING`, and connects immediately.
- 🌐 **Instant IP Extraction**: `gcvm --ip <name>` prints clean IP addresses directly to stdout, ready to pipe into `scp`, `rsync`, or automation scripts.
- 🔌 **Seamless Port Forwarding**: Pass-through arguments make tunnels trivial:

`gcvm db-postgres -- -L 5432:localhost:5432`

- 🔒 **Zero Hardcoded Secrets**: Fully configurable via environment variables (`GCVM_*`).

---

### ⚡ Quick Start

```
# 1. Clone the repository
    git clone https://github.com/Luan1Schons/google-cloud-vm-essentials-cli/tree/main ~/src/gcvm

    # 2. Link it to your PATH
    ln -s ~/src/gcvm/gcvm ~/.local/bin/gcvm

    # 3. Launch the interactive picker
    gcvm
  ──────
  The project is 100% open-source under the MIT License, with zero heavy runtime dependencies beyond the gcloud CLI.

  Check out the interactive demo GIF and full documentation on GitHub:
  👉 Repository: https://github.com/Luan1Schons/google-cloud-vm-essentials-cli

  I'd love to hear your thoughts and feedback! If you find it helpful for your workflow, please consider dropping a ⭐ on GitHub to support the project!
```

#devops #productivity #opensource #bash #cli #gcp #intra

## Similar posts on daily.dev

- [Don’t just attend KubeCon \+ CloudNativeCon, Merge Forward your experience\!](https://daily.dev/posts/don-t-just-attend-kubecon-cloudnativecon-merge-forward-your-experience--l0rpp73x8) · CNCF · 1 upvotes · 0 comments
- [Announcing H2 2026 KCDs](https://daily.dev/posts/announcing-h2-2026-kcds-m96goajm1) · CNCF · 1 upvotes · 0 comments
- [Two months of Open Community Groups](https://daily.dev/posts/two-months-of-open-community-groups-asf52zhbs) · CNCF · 0 upvotes · 0 comments

---

[View this post on daily.dev](https://daily.dev/posts/i-got-tired-of-copying-vm-names-and-zones-in-gcp-so-i-built-a-fast-cli-wrapper-rfizk8teq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/i-got-tired-of-copying-vm-names-and-zones-in-gcp-so-i-built-a-fast-cli-wrapper-rfizk8teq","headline":"I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper","text":"Discussion about \"I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper\" on daily.dev - join the developer community","url":"https://daily.dev/posts/i-got-tired-of-copying-vm-names-and-zones-in-gcp-so-i-built-a-fast-cli-wrapper-rfizk8teq","datePublished":"2026-08-31T13:53:45.162Z","dateModified":"2026-08-31T13:53:45.162Z","author":{"@type":"Person","name":"Luan Schons","url":"https://daily.dev/luanschons","image":"https://lh3.googleusercontent.com/a/ACg8ocImkpdLP0W7D-4NFydOGHlT1HaX7xwO2edNfB2Oq7dHh_r83ck=s96-c","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":50}},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/r9euoeqqh9viy9facwtls","name":"Luan Schons"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Luan Schons","item":"https://daily.dev/sources/r9euoeqqh9viy9facwtls"},{"@type":"ListItem","position":3,"name":"I got tired of copying VM names and zones in GCP, so I built a fast CLI wrapper"}]}
```

