Weekly installs — googleworkspace/cli8 weekly install buckets for googleworkspace/cli, ending 646 below where it began. Highest week 8K, lowest 6K.445.8Kinstalls
Weekly installs — googleworkspace/cli. 8 weekly install buckets for googleworkspace/cli, ending 646 below where it began. Highest week 8K, lowest 6K.
Week
Installs
Week 1
6,637
Week 2
7,814
Week 3
6,705
Week 4
7,966
Week 5
6,850
Week 6
6,389
Week 7
6,506
Week 8
5,991
Front matter
From the README
One CLI for all of Google Workspace — built for humans and AI agents.
Drive, Gmail, Calendar, and every Workspace API. Zero boilerplate. Structured JSON output. 40+ agent skills included.
[!NOTE]
This is not an officially supported Google product.
gws doesn’t ship a static list of commands. It reads Google’s own Discovery Service (opens in a new tab) at runtime and builds its entire command surface dynamically. When Google Workspace adds an API endpoint or method, gws picks it up automatically.
[!IMPORTANT]
This project is under active development. Expect breaking changes as we march toward v1.0.
The recommended way to install gws is to download the pre-built binary for your OS and architecture from the GitHub Releases (opens in a new tab) page. Extract the archive and place the gws binary in your $PATH.
For convenience, you can also use npm to automate downloading the appropriate binary from GitHub Releases:
Credentials are encrypted at rest (AES-256-GCM) with the key stored in your OS keyring (or ~/.config/gws/.encryption_key when GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file).
bash
gws auth setup # one-time: creates a Cloud project, enables APIs, logs you ingws auth login # subsequent scope selection and login
[!WARNING]
Scope limits in testing mode: If your OAuth app is unverified (testing mode),
Google limits consent to ~25 scopes. The recommended scope preset includes 85+
scopes and will fail for unverified apps (especially for @gmail.com accounts).
Choose individual services instead to filter the scope picker:
[!IMPORTANT]
You must add yourself as a test user. In the OAuth consent screen, click
Test users → Add users and enter your Google account email. Without this,
login will fail with a generic “Access blocked” error.
The repo ships 100+ Agent Skills (SKILL.md files) — one for every supported API, plus higher-level helpers for common workflows and 50 curated recipes for Gmail, Drive, Docs, Calendar, and Sheets. See the full Skills Index (opens in a new tab) for the complete list.
bash
# Install all skills at oncenpx skills add https://github.com/googleworkspace/cli# Or pick only what you neednpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-drivenpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail
bash
# Symlink all skills (stays in sync with repo)ln -s $(pwd)/skills/gws-* ~/.openclaw/skills/# Or copy specific skillscp -r skills/gws-drive skills/gws-gmail ~/.openclaw/skills/
The gws-shared skill includes an install block so OpenClaw auto-installs the CLI via npm if gws isn’t on PATH.
Installing this extension gives your Gemini CLI agent direct access to all gws commands and Google Workspace agent skills. Because gws handles its own authentication securely, you simply need to authenticate your terminal once prior to using the agent, and the extension will automatically inherit your credentials.
Some services ship hand-crafted helper commands alongside the auto-generated Discovery surface. Helper commands are prefixed with + so they are visually distinct and never collide with Discovery-generated method names.
Time-aware helpers (+agenda, +standup-report, +weekly-digest, +meeting-prep) automatically use your Google account timezone (fetched from Calendar Settings API and cached for 24 hours). Override with --timezone/--tz on +agenda, or set the --timezone flag for explicit control.
Run gws <service> --help to see both Discovery methods and helper commands together.
Expected when your app is in testing mode. Click Advanced → Go to <app name> (unsafe) to proceed. This is safe for personal use; verification is only required to publish the app to other users.
The OAuth client was not created as a Desktop app type. In the Credentials (opens in a new tab) page, delete the existing client, create a new one with type Desktop app, and download the new JSON.
If a required Google API is not enabled for your GCP project, you will see a
403 error with reason accessNotConfigured:
json
{ "error": { "code": 403, "message": "Gmail API has not been used in project 549352339482 ...", "reason": "accessNotConfigured", "enable_url": "https://console.developers.google.com/apis/api/gmail.googleapis.com/overview?project=549352339482" }}
gws also prints an actionable hint to stderr:
💡 API not enabled for your GCP project. Enable it at: https://console.developers.google.com/apis/api/gmail.googleapis.com/overview?project=549352339482 After enabling, wait a few seconds and retry your command.
Steps to fix:
Click the enable_url link (or copy it from the enable_url JSON field).
In the GCP Console, click Enable.
Wait ~10 seconds, then retry your gws command.
[!TIP]
You can also run gws auth setup which walks you through enabling all required
APIs for your project automatically.
Apache-2.0 — the text of every skill is reproduced unmodified, frontmatter included, under the upstream licence.
Discovery
95 skills found by walking the repository tree for SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.
Issue colours
Resolved from a deterministic hash of the owner name. Two accent tones are generated per issue and each is proven against its own ground before it ships: a single accent that passes AA on both light and dark paper is arithmetically impossible.
Heading repairs
None needed in the front matter: the outline was already valid.
Images inside a skill come from the upstream repository. Where the author gave no alternative text we mark the image decorative rather than inventing a description — a plausible caption we made up is worse than none for the reader who depends on it.
Signal
Install counts come from skills.sh. They measure downloads, not quality, and an unranked repository is not an unread one.
Agent surfaces
The whole issue is available as one markdown document at /googleworkspace/cli.md, and each skill at its own .md URL.
Publication
Set by Skills Docs from the source repository. Body text is Literata at the reader’s chosen size and measure; code is Geist Mono. Nothing on this page was written by us except this paragraph.