# WIP.md ## Current focus Google Workspace + n8n integration ## Goal Use OpenClaw as the brain, n8n as the orchestration layer, and Google Workspace as a real execution surface for Gmail/Calendar workflows. ## Current status Status: `in-progress` Owner: `zap` Started: `2026-03-12` ### Architecture decision - Keep `openclaw-action` as the narrow authenticated ingress into n8n. - Keep approval/state/logging in n8n. - Use host-side `gog` execution for Google Workspace actions for now. - Attach execution results back into n8n history so approval items become auditable records. - Prefer this over broad n8n Google credential sprawl unless a later need clearly justifies it. ## What is already done ### n8n action bus - [x] Live `openclaw-action` workflow exists and is active. - [x] Core actions verified live: - `append_log` - `get_logs` - `notify` - `approval_queue_add` - `approval_queue_list` - `approval_queue_resolve` - `fetch_and_normalize_url` - `inbound_event_filter` - [x] Approval-gated notification execution works live: - `send_notification_draft` - approve → real `notify` ### Google access - [x] `gog` installed and authenticated for: - Gmail - Calendar - Drive - Contacts - Docs - Sheets - [x] Local-only Gog automation env stored outside git at: - `/home/openclaw/.openclaw/credentials/gog.env` - [x] Host bridge implemented: - `skills/n8n-webhook/scripts/resolve-approval-with-gog.py` - [x] n8n history patch action implemented: - `approval_history_attach_execution` - [x] Dry-run end-to-end bridge tests succeeded for: - Gmail draft creation - Calendar event creation - [x] Headless non-interactive Gog execution works via the stored local env. - [x] Direct real Gmail draft create test succeeded. - [x] Direct real Gmail draft delete test succeeded. ## What is left ### Highest priority: prove the bridge with real Google writes - [ ] Real end-to-end Gmail draft via n8n path: 1. queue `send_email_draft` 2. approve via `resolve-approval-with-gog.py` 3. verify draft exists in Gmail 4. delete the test draft - [ ] Real end-to-end Calendar event via n8n path: 1. queue `create_calendar_event` 2. approve via bridge 3. verify event exists in Calendar 4. delete the test event ### Then expand useful Google actions - [ ] Add `delete_email_draft` - [ ] Add `list_email_drafts` - [ ] Add `send_gmail_draft` / send-approved-email path - [ ] Add `update_calendar_event` - [ ] Add `delete_calendar_event` - [ ] Add `list_upcoming_events` - [ ] Decide whether Drive/Docs/Sheets need action-bus verbs next or can stay direct-tool only for now ### Then polish the operator experience - [ ] Add a compact operator command/reference section for common approval flows - [ ] Add one or two canned test payloads for real bridge verification flows - [ ] Decide whether some Google actions should stay approval-gated by default - [ ] Add low-noise reporting so history clearly shows: - queued - approved/rejected - executed - execution result id / draft id / event id ## Nice-to-have / future - [ ] Evaluate whether native n8n Google nodes are worth adding later - [ ] If useful, sync this work into the LAN Gitea repo for safer backup/review and easier long-lived tracking ## Current recommendation Next action should be: 1. real n8n-routed Gmail draft test 2. real n8n-routed Calendar event test 3. add delete/update/list verbs after those pass ## Relevant files - `skills/n8n-webhook/assets/openclaw-action.workflow.json` - `skills/n8n-webhook/scripts/call-action.sh` - `skills/n8n-webhook/scripts/resolve-approval-with-gog.py` - `skills/n8n-webhook/references/openclaw-action.md` - `memory/2026-03-12.md` - `/home/openclaw/.openclaw/credentials/gog.env` (local-only, not for git) ## Current branch / checkpoints - branch: `feat/n8n-action-bus-v2` - key commits: - `9dcc477` — expand action bus starter workflow - `dc990a1` — deploy and verify expanded action bus - `1eabaeb` — add approval-gated notification executor - `afa48a3` — bridge approvals to gog executors - `044e36f` — auto-load local gog automation env