Google Classroom CLI built in Go, packaged for npm/bun so users can run gc-cli (or gc) directly.
npm install -g google-classroom-clibun add -g google-classroom-cliThen run:
gc-cli auth login
gc-cli classes listgc is also installed as an alias.
The binary ships with a default OAuth Desktop client configuration, so users can run gc-cli auth login without manual config.
Optional overrides:
export GC_OAUTH_CLIENT_ID="..."
export GC_OAUTH_CLIENT_SECRET="..."gc-cli # show command help
gc-cli auth login|status|logout
gc-cli classes|courses list|show|get|create|add|update|edit|archive|restore|delete|rm
gc-cli stream|announcements list|ls|post|add|edit|update|delete|rm
gc-cli classwork|coursework|cw list|ls|create|add|edit|update|publish|schedule|delete|rm
gc-cli submissions|subs list|ls|show|get|turn-in|submit|unsubmit|grade|return|reclaim
gc-cli people|roster list|ls|invite|add|remove|rm
gc-cli grades|gradebook list|ls|set-draft|draft|set-assigned|assigned|return
gc-cli topics|topic list|ls|create|add|edit|update|delete|rm|move
gc-cli to-do|todo [list]
gc-cli calendar open
gc-cli handoff|web open <feature> [course_id]Use --json with any command for machine-readable output.
Positional ID shortcuts are supported for common commands (flags still work):
gc-cli classes show <course_id>
gc-cli classwork publish <course_id> <course_work_id>
gc-cli submissions turn-in <course_id> <course_work_id> <submission_id>
gc-cli people invite <course_id> <user_id_or_email> --role studentCommon short flags for quicker usage:
-c # --course
-w # --course-work
-s # --submission
-u # --userBuild npm dist binaries:
npm run build:distIf your OAuth Desktop client requires a secret for token exchange, inject it at build time:
GC_CLI_DEFAULT_OAUTH_CLIENT_SECRET="..." npm run build:distCreate package tarball:
npm packPublish (after npm login):
npm publish --access publicgo test ./...See parity details in docs/parity-matrix.md.