Skills
Messaging Official
Google Chat
Add Google Chat as a messaging channel. Works in spaces and direct messages via a Google Cloud service account.
What it does
- Connects NanoClaw to Google Chat via Chat SDK
- Spaces (group conversations) and direct messages
- Threaded replies
- Service account authentication — no per-user OAuth
- HTTP endpoint or pub/sub event delivery
What you'll need
- NanoClaw installed and running
- A Google Cloud project with the Google Chat API enabled
- A service account with the Chat Bot role
- A publicly reachable HTTPS endpoint for the webhook
Install
/add-gchat How it works
The /add-gchat skill connects NanoClaw to Google Chat via the Chat SDK bridge. Events are delivered to NanoClaw’s webhook server, and the bot replies through the Chat API authenticated as a service account.
The skill copies the Google Chat adapter from the channels branch and installs @chat-adapter/gchat.
Setup
In Google Cloud Console:
- Create or select a project.
- Enable the Google Chat API.
- Open the Chat API’s Configuration tab and set:
- App name and description
- Connection settings → HTTP endpoint URL =
https://your-domain/webhook/gchat
- Create a service account in IAM & Admin → Service Accounts with the Chat Bot role.
- Generate a JSON key and download it.
The whole JSON blob goes into a single .env line:
GCHAT_CREDENTIALS={"type":"service_account","project_id":"...","private_key":"...","client_email":"..."}
What you get
- Spaces — group conversations where you can @-mention the bot.
- Direct messages with the bot as a 1:1 conversation.
- Threaded replies — Google Chat threads are native, and the bot keeps replies in-thread.
- Service account auth — no per-user OAuth flow. The bot acts as itself, not as you.
Tips
- The
https://your-domain/webhook/gchatendpoint must be publicly reachable from Google’s servers. For local dev, usengrok http 3000and point the connection settings at the ngrok URL. - The service account JSON contains a private key. Don’t commit it. NanoClaw stores it in
.env, which is gitignored, and syncs it todata/env/envfor the container. - Google Chat space IDs look like
spaces/AAAA...— find them in the URL when the space is open in your browser. - For team spaces, prefer a separate agent group per space if different teams should have isolated context.