Google Workspace CLI를 만들고 해고된 개발자 — gws 이야기
이번 포스트는 Google Workspace CLI(gws)라는 도구와, 그걸 만든 개발자가 해고된 사건에 관한 것이다.
도구 자체도 흥미롭지만, 사실 더 눈에 띈 건 만든 사람의 결말이었다. 사내 디렉터들이 "이 도구에서 뭘 배울 수 있냐"고 물어볼 만큼 화제가 된 프로젝트인데, 정작 만든 본인은 약 두 달 뒤 회사에서 잘렸다.
사건: 바이럴 직후 해고
gws를 만든 사람은 Justin Poehnelt, Google Workspace DevRel(개발자 관계) 팀에서 7년 가까이 일한 엔지니어다. API 위에 추상화 레이어를 얹는 오픈소스 작업은 이 팀이 원래 하던 일이었다.
문제는 도구가 너무 잘 됐다는 거다. 2026년 3월 초에 공개되자마자 Hacker News 1위에 올랐고, 며칠 만에 깃헙 스타 수천 개와 실사용자 수천 명을 모았다.
근데 그 직후 흐름이 이상하게 흘러갔다.
이슈: 한쪽에서는 리더들이 "여기서 뭘 배울까"를 묻는 동안, 다른 쪽에서는 법무팀이 "Google 로고랑 브랜드 컬러가 왜 이 저장소에 들어가 있냐"며 그를 압박했다. 그리고 해고 이틀 전, Google은 Google Cloud Next 2026에서 자체 Workspace CLI를 발표했다.
본인은 원인을 이렇게 본다. CLI 그 자체가 아니라, "에이전트가 Workspace에 의미하는 바"에 대한 조직적 두려움이 진짜 이유였다는 것이다. 도구 하나가 무서웠던 게 아니라, 그 도구가 가리키는 방향이 무서웠다는 얘기다.
도구: Workspace 전체를 명령어 하나로
그래서 gws가 대체 뭐냐. 한 줄로 말하면 Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin 같은 Google Workspace API 전부를 하나의 명령어 인터페이스로 묶은 CLI다. Rust로 작성됐고 Apache-2.0 라이선스다.
설치는 여러 경로를 지원한다. npm 기준은 다음과 같다.
npm install -g @googleworkspace/cli
Homebrew, Cargo, Nix, 그리고 미리 빌드된 바이너리도 받을 수 있다. npm 경로는 Node.js 18 이상이 필요하다.
인증은 대화형 OAuth로 시작한다.
gws auth setup
gws auth login
본인 Google Cloud 프로젝트에서 OAuth 자격 증명을 발급받아야 하고, 자격 증명 우선순위는 access token → credentials file → encrypted credentials → plaintext credentials 순이다. 서비스 계정과 CI/헤드리스 환경도 지원한다.
실제 API 호출은 gws <api> <resource> <method> 형태로 일관된다.
# Drive 파일 5개 조회
gws drive files list --params '{"pageSize": 5}'
# 스프레드시트 생성
gws sheets spreadsheets create --json '{"properties": {"title": "Q1 Budget"}}'
# 보내지 않고 요청만 미리보기
gws gmail messages list --dry-run
자주 쓰는 묶음 작업은 +를 붙인 헬퍼 명령으로 줄일 수 있다.
gws gmail +send --to user@example.com --subject "Hello"
gws calendar +agenda
핵심: 명령어를 런타임에 만들어낸다
gws에서 가장 영리한 부분은 따로 있다. 보통 CLI는 지원하는 명령어 목록을 코드에 박아둔다. gws는 그러지 않는다.
대신 Google의 Discovery Service를 런타임에 읽어서 명령어 표면 전체를 동적으로 생성한다. Google이 API 엔드포인트를 추가하거나 바꾸면, gws는 새 릴리스 없이도 그걸 자동으로 따라간다.
덕분에 도구가 API 변경을 쫓아다니며 수동으로 업데이트할 필요가 없다. 대신 단점도 있다 — 명령어 집합이 고정이 아니라서, 오래 유지할 스크립트에서 모든 플래그가 영원히 같을 거라고 가정하면 안 된다.
진짜 노림수: 에이전트
gws의 슬로건은 "built for humans and agents"다. 사람만 쓰라고 만든 게 아니라는 뜻이고, 실제로 AI 에이전트 지원이 1급 기능이다.
모든 응답이 구조화된 JSON으로 나오고, MCP(Model Context Protocol) 서버를 내장한다. 아래 한 줄이면 Drive·Gmail·Calendar를 stdio 위의 로컬 MCP 서버로 띄운다.
gws mcp -s drive,gmail,calendar
이렇게 띄우면 Claude Code, Gemini CLI, VS Code, Cursor 같은 클라이언트가 별도 연동 코드 없이 붙는다. 여기에 더해 SKILL.md 형태로 패키징된 100개 이상의 에이전트 스킬이 함께 제공된다.
npx skills add https://github.com/googleworkspace/cli
이쯤 되면 앞의 "에이전트에 대한 두려움"이라는 말이 좀 더 와닿는다. gws는 결국 Workspace 전체를 에이전트가 직접 조작할 수 있는 표면으로 펼쳐 놓은 도구다. 누군가에게는 그게 미래였고, 누군가에게는 그게 위협이었던 셈이다.
주의: 저장소에는 "이것은 공식 지원 제품이 아니다(not an officially supported Google product)"라는 면책 문구가 명시돼 있다. googleworkspace 조직 아래 있긴 하지만 SLA가 보장되는 제품은 아니고, 아직 활발히 개발 중이라 깨지는 변경을 각오해야 한다. 그리고 Poehnelt가 만든 원래 gws와 Google이 발표한 공식 CLI는 얽혀 있어서, 어느 저장소·바이너리를 설치하는지 확인하는 게 좋다.
마무리: 도구보다 신호
마무리: gws는 기술적으로 깔끔한 도구다. Discovery Service 기반 동적 명령어 생성, JSON 출력, MCP 서버까지 — "에이전트가 클라우드 서비스를 다루는 시대"를 그대로 도구로 옮겨놓은 형태다.
배운 것은 두 가지다. 첫째, CLI를 만들 때 명령어를 박아두는 대신 API 스펙(Discovery Service)에서 끌어오면, 도구가 API 변화를 알아서 따라가게 만들 수 있다. 둘째, DevRel가 승인하고 권장하던 오픈소스라도 회사의 상표·브랜드 정책과는 별개로 충돌할 수 있다 — 잘 만든 것과 무사한 것은 다른 문제다.
결국 이 사건이 남긴 건 도구 하나가 아니라 신호였다. Workspace를 에이전트가 직접 조작하는 미래가 이미 도구 형태로 와 있다는 신호 말이다.
참고:
- Google Workspace CLI — 공식 GitHub 저장소
- Google Workspace CLI: Unified Command-Line Tool Built for Humans and AI Agents — InfoQ
- Justin Poehnelt on X — "Two months ago I was fired by Google for creating the Google Workspace CLI"
- Fired by Google for creating the Google Workspace CLI — Hacker News
- GeekNews 토픽