{"id":48805572,"url":"https://github.com/spectra010s/gshell","last_synced_at":"2026-04-14T05:01:31.530Z","repository":{"id":349634832,"uuid":"1203220075","full_name":"Spectra010s/gshell","owner":"Spectra010s","description":"gcloud cloud-shell, but simpler.","archived":false,"fork":false,"pushed_at":"2026-04-06T20:58:08.000Z","size":6,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T22:24:44.379Z","etag":null,"topics":["bash","cli","devtools","gcloud","google-cloud","google-cloud-shell","gshell","shell","terminal-wrapper"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Spectra010s.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-06T20:53:44.000Z","updated_at":"2026-04-06T22:03:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Spectra010s/gshell","commit_stats":null,"previous_names":["spectra010s/gshell"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Spectra010s/gshell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spectra010s%2Fgshell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spectra010s%2Fgshell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spectra010s%2Fgshell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spectra010s%2Fgshell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Spectra010s","download_url":"https://codeload.github.com/Spectra010s/gshell/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spectra010s%2Fgshell/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31782740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cli","devtools","gcloud","google-cloud","google-cloud-shell","gshell","shell","terminal-wrapper"],"created_at":"2026-04-14T05:01:26.673Z","updated_at":"2026-04-14T05:01:31.524Z","avatar_url":"https://github.com/Spectra010s.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gshell\n\n\u003e A lightweight bash wrapper around `gcloud alpha cloud-shell` that makes working with Google Cloud Shell from your terminal feel natural.\n\nInstead of typing `gcloud alpha cloud-shell ssh --authorize-session` every time, you just type `gshell`.\n\n**Author**: [Adeloye Adetayo](https://spectra010s.vercel.app)\n\n---\n\n## Features\n\n- **Quick shell** — open an interactive Cloud Shell session (`gshell`)\n- **Send / Get** — upload or download files and folders (`gshell send`, `gshell get`)\n- **Sync** — upload only changed files, fast incremental sync (`gshell sync`)\n- **Run** — run arbitrary commands remotely (`gshell run`)\n- **Browser open** — open Cloud Shell in the browser (`gshell open`)\n- **Status** — show current gcloud account and project info (`gshell status`)\n\n---\n\n## Requirements\n\n- [Google Cloud SDK](https://cloud.google.com/sdk/docs/install) (`gcloud`)\n- `gcloud` alpha components — the installer will detect and offer to set this up for you\n\n---\n\n## Installation\n\n```bash\ngit clone https://github.com/Spectra010s/gshell.git\ncd gshell\nchmod +x install.sh\n./install.sh\n```\n\nThen reload your shell:\n\n```bash\nsource ~/.bashrc\n```\n\nThe installer will:\n- Check if `gcloud` is installed and offer to open the install page if not\n- Check if alpha components are available and offer to install them\n- Copy `gshell` to `$PREFIX/bin` (works on Termux and standard Linux)\n- Set up tab completion automatically\n\n### Manual installation\n\n- Copy `gshell` to a directory on your `PATH` and make it executable\n- Copy `gshell-completion.bash` into your Bash completion directory and source it\n\n---\n\n## Files\n\n- `gshell` — main script (CLI wrapper around Cloud Shell)\n- `install.sh` — installer that copies files and sets up completion\n- `gshell-completion.bash` — Bash tab completion for all subcommands\n\n---\n\n## Usage\n\n```bash\ngshell                           # Enter Cloud Shell (interactive SSH)\ngshell send [-r] \u003cfile|folder\u003e   # Upload file or folder to Cloud Shell\ngshell get  [-r] \u003cfile|folder\u003e   # Download file or folder from Cloud Shell\ngshell sync [-r] \u003cfile|folder\u003e   # Sync only changed files to Cloud Shell\ngshell run  \u003ccommand\u003e            # Run a command on Cloud Shell\ngshell open                      # Open Cloud Shell in browser\ngshell status                    # Show current gcloud project \u0026 account info\ngshell -v | --version            # Show version\ngshell -h | --help               # Show help\n```\n\n### Flags\n\n- `-r` — recursive, for folders on `send`, `get`, and `sync`\n- `-n` / `--dry-run` — preview what would be transferred without uploading or downloading (available on `send` and `get`)\n\n---\n\n## Examples\n\n```bash\n# Enter Cloud Shell\ngshell\n\n# Upload a single file\ngshell send index.html\n\n# Upload a folder\ngshell send -r myproject/\n\n# Preview what would be uploaded without transferring\ngshell send -n -r myproject/\n\n# Download a file from Cloud Shell\ngshell get config.json\n\n# Download a folder\ngshell get -r bd/\n\n# Sync a single changed file\ngshell sync bd/index.html\n\n# Sync an entire folder (only uploads changed files)\ngshell sync -r bd/\n\n# Run a command remotely\ngshell run ls ~\ngshell run \"cd myproject \u0026\u0026 git status\"\n\n# Check your active project and account\ngshell status\n\n# Open Cloud Shell in the browser\ngshell open\n```\n\n---\n\n## How sync works\n\n`gshell sync` compares local and remote files using checksums (`md5sum` or `md5` depending on your system, with a size/mtime fallback). Only files that have changed are uploaded — similar to `rsync` but built entirely on top of `gcloud scp`.\n\n---\n\n## Tab completion\n\nTab completion is set up automatically by the installer. After reloading your shell, type `gshell` and press Tab to see all available commands, flags, and file suggestions.\n\n---\n\n## Contributing\n\nPRs welcome. Keep changes small and focused. Update the README if you change CLI behavior.\n\n---\n\n## License\n\nMIT - see the [LICENSE](LICENSE) file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspectra010s%2Fgshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspectra010s%2Fgshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspectra010s%2Fgshell/lists"}