7.7k★by visionik
sog – OpenClaw Skill
sog is an OpenClaw Skills integration for coding workflows. Standards Ops Gadget — CLI for IMAP/SMTP/CalDAV/CardDAV/WebDAV. Open-standards alternative to gog (Google) and mog (Microsoft).
Skill Snapshot
| name | sog |
| description | Standards Ops Gadget — CLI for IMAP/SMTP/CalDAV/CardDAV/WebDAV. Open-standards alternative to gog (Google) and mog (Microsoft). OpenClaw Skills integration. |
| owner | visionik |
| repository | visionik/sogcli |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @visionik/sogcli |
| last updated | Feb 7, 2026 |
Maintainer

name: sog description: Standards Ops Gadget — CLI for IMAP/SMTP/CalDAV/CardDAV/WebDAV. Open-standards alternative to gog (Google) and mog (Microsoft). homepage: https://github.com/visionik/sogcli metadata: {"clawdbot":{"emoji":"📬","requires":{"bins":["sog"]},"install":[{"id":"go","kind":"go","package":"github.com/visionik/sogcli/cmd/sog@latest","bins":["sog"],"label":"Install sog (go install)"}]}}
sog — Standards Ops Gadget
CLI for IMAP/SMTP/CalDAV/CardDAV/WebDAV. Open-standards alternative to gog (Google) and mog (Microsoft).
Quick Start
sog auth add you@fastmail.com --discover
sog auth test
sog mail list
Global Flags
--account, -a Account email to use ($SOG_ACCOUNT)
--json JSON output (for scripting)
--plain TSV output (parseable)
--force Skip confirmations
--no-input Never prompt (CI mode)
--verbose, -v Debug logging
--ai-help Detailed help text
Authentication
sog auth add <email> [flags]
--discover Auto-discover servers from DNS
--imap-host IMAP server hostname
--imap-port IMAP port (default: 993)
--smtp-host SMTP server hostname
--smtp-port SMTP port (default: 587)
--caldav-url CalDAV server URL
--carddav-url CardDAV server URL
--webdav-url WebDAV server URL
--password Password (stored in keychain)
sog auth list # List accounts
sog auth test [email] # Test connection
sog auth remove <email> # Remove account
sog auth password <email> # Set protocol-specific passwords
--imap, --smtp, --caldav, --carddav, --webdav
Mail (IMAP/SMTP)
sog mail list [folder]
--max N Maximum messages (default: 20)
--unseen Only unread messages
sog mail get <uid>
--headers Headers only
--raw Raw RFC822 format
sog mail search <query>
# IMAP SEARCH syntax: FROM, TO, SUBJECT, SINCE, BEFORE, etc.
# Example: sog mail search "FROM john SINCE 1-Jan-2026"
sog mail send --to <email> --subject <text> [flags]
--to Recipient(s)
--cc CC recipient(s)
--bcc BCC recipient(s)
--subject Subject line
--body Message body
--body-file Read body from file (- for stdin)
--body-html HTML body content
sog mail reply <uid> --body <text>
sog mail forward <uid> --to <email>
sog mail move <uid> <folder>
sog mail copy <uid> <folder>
sog mail flag <uid> <flag> # Flags: seen, flagged, answered, deleted
sog mail unflag <uid> <flag>
sog mail delete <uid>
Folders
sog folders list
sog folders create <name>
sog folders delete <name>
sog folders rename <old> <new>
Drafts
sog drafts list
sog drafts create [flags] # Same flags as mail send
sog drafts send <uid>
sog drafts delete <uid>
Calendar (CalDAV)
sog cal list [calendar]
--from Start date (default: today)
--to End date (default: +30d)
--max Maximum events
sog cal get <uid>
sog cal search <query> # Search in title/description/location
sog cal today [calendar]
sog cal week [calendar]
sog cal create <title> --start <datetime> [flags]
--start Start time (YYYY-MM-DDTHH:MM or YYYY-MM-DD for all-day)
--end End time
--duration Duration (1h, 30m)
--location Location
--description Description
sog cal update <uid> [flags] # Same flags as create
sog cal delete <uid>
sog cal calendars # List calendars
Contacts (CardDAV)
sog contacts list [address-book]
--max Maximum contacts
sog contacts get <uid>
sog contacts search <query> # Search name/email/phone
sog contacts create <name> [flags]
-e, --email Email address(es)
-p, --phone Phone number(s)
--org Organization
--title Job title
--note Note
sog contacts update <uid> [flags] # Same flags as create
sog contacts delete <uid>
sog contacts books # List address books
Tasks (CalDAV VTODO)
sog tasks list [list]
--all Include completed tasks
sog tasks add <title> [flags]
--due Due date (YYYY-MM-DD)
-p, --priority Priority (1-9, 1=highest)
-d, --description Description
sog tasks get <uid>
sog tasks update <uid> [flags] # Same flags as add
sog tasks done <uid> # Mark complete
sog tasks undo <uid> # Mark incomplete
sog tasks delete <uid>
sog tasks clear # Delete all completed tasks
sog tasks due <date> # Tasks due by date
sog tasks overdue # Overdue tasks
sog tasks lists # List task lists
Files (WebDAV)
sog drive ls [path]
-l Long format with details
--all Show hidden files
sog drive get <path> # Get file metadata
sog drive download <remote> [local]
sog drive upload <local> [remote]
sog drive mkdir <path>
sog drive delete <path>
sog drive move <src> <dst>
sog drive copy <src> <dst>
sog drive cat <path> # Output file to stdout
Meeting Invites (iTIP/iMIP)
sog invite send <summary> <attendees>... --start <datetime> [flags]
--start Start time
--duration Duration (default: 1h)
--location Location
--description Description
sog invite reply <file> --status <accept|decline|tentative>
--comment Optional comment
sog invite cancel <uid> <attendees>...
sog invite parse <file> # Parse .ics file
sog invite preview <summary> <attendees>... --start <datetime>
IMAP IDLE
sog idle [folder] # Watch for new mail (push notifications)
--timeout Timeout in seconds
Output Formats
- Default: Human-readable colored output
--json: One JSON object per line (JSONL)--plain: Tab-separated values (TSV)
Examples
# List recent emails
sog mail list --max 10
# Send an email
sog mail send --to user@example.com --subject "Hello" --body "Hi there"
sog mail send --to user@example.com --subject "Report" --body-file report.md
cat draft.txt | sog mail send --to user@example.com --subject "Hi" --body-file -
# Today's calendar
sog cal today
# Create a meeting with invite
sog invite send "Team Sync" alice@example.com bob@example.com \
--start "2026-01-25T14:00" --duration 30m --location "Zoom"
# Add a task
sog tasks add "Review PR" --due 2026-01-26 -p 1
# Upload a file
sog drive upload report.pdf /documents/
# Search contacts
sog contacts search "John"
Tested Providers
- Fastmail ✅ (full support)
Other standards-compliant providers should work but have not been tested yet.
Credential Storage
Passwords are stored securely in the native system credential store:
| Platform | Backend |
|---|---|
| macOS | Keychain |
| Windows | Windows Credential Manager |
| Linux/BSD | D-Bus Secret Service (GNOME Keyring, KWallet) |
Supports separate passwords per protocol (IMAP, SMTP, CalDAV, CardDAV, WebDAV).
Notes
- Set
SOG_ACCOUNT=you@example.comto avoid repeating--account - Part of the Ops Gadget family: gog (Google), mog (Microsoft), sog (Standards)
📬 sog — Standards Ops Gadget
CLI for Open Standards — Mail, Calendar, Contacts, Tasks, Files via IMAP/SMTP/CalDAV/CardDAV/WebDAV
The open-standards counterpart to gog (Google) and mog (Microsoft). Same patterns, any provider.
✨ Features
| Module | Protocol | Description |
|---|---|---|
| IMAP/SMTP | Search, send, reply, forward, folders, drafts | |
| 📅 Calendar | CalDAV | Events, create, update, search, today, week |
| 👥 Contacts | CardDAV | List, search, create, update, delete |
| ✅ Tasks | CalDAV VTODO | Add, complete, due dates, priorities, clear |
| 📁 Files | WebDAV | List, upload, download, move, copy, delete |
| 📨 Invites | iTIP/iMIP | Send, reply, cancel meeting invitations |
Extras:
- 🤖 AI-friendly —
--ai-helpoutputs comprehensive docs for LLMs - 🔄 gog/mog-compatible — Same flags and patterns for muscle memory
- 🔐 Secure — Passwords stored in system keychain
🚀 Quick Start
# Install
go install github.com/visionik/sogcli/cmd/sog@latest
# Add account (auto-discovers servers)
sog auth add you@fastmail.com --discover
# Check mail
sog mail list --max 10
# Send email
sog mail send --to bob@example.com --subject "Hello" --body "Hi Bob!"
# Today's calendar
sog cal today
# Create event
sog cal create "Team Meeting" --start "2025-01-15T10:00" --duration 1h
# Add a task
sog tasks add "Review PR" --due 2025-01-16 -p 1
# Upload to WebDAV
sog drive upload ./report.pdf /documents/
# Send meeting invite
sog invite send "Project Kickoff" alice@example.com bob@example.com \
--start "2025-01-15T14:00" --duration 30m
📦 Installation
# Go install (recommended)
go install github.com/visionik/sogcli/cmd/sog@latest
# Or clone for development
git clone https://github.com/visionik/sogcli.git
cd sogcli
go build -o sog ./cmd/sog
⚙️ Setup
1. Add Account
# Auto-discover from DNS (recommended)
sog auth add you@fastmail.com --discover
# Or specify servers manually
sog auth add you@example.com \
--imap-host imap.example.com \
--smtp-host smtp.example.com \
--caldav-url https://caldav.example.com/ \
--carddav-url https://carddav.example.com/ \
--webdav-url https://webdav.example.com/
2. Verify
sog auth test
sog auth list
3. Protocol-Specific Passwords (if needed)
sog auth password you@example.com \
--imap "password1" \
--smtp "password2" \
--caldav "password3"
📖 Command Reference
Global Options
| Option | Description |
|---|---|
--account, -a | Account email to use |
--json | Output JSON (best for scripting) |
--plain | Stable text output (TSV, no colors) |
--verbose, -v | Show extra details |
--force | Skip confirmations |
--no-input | Never prompt (CI mode) |
--ai-help | Full docs for AI agents |
sog mail list [folder] # List messages
sog mail list --max 10 --unseen # Recent unread
sog mail get <uid> # Read a message
sog mail search "FROM john" # IMAP search syntax
sog mail send --to X --subject Y --body Z
sog mail send --to X --subject Y --body-file ./message.txt
sog mail reply <uid> --body "Thanks!"
sog mail forward <uid> --to bob@example.com
sog mail move <uid> Archive
sog mail flag <uid> flagged
sog mail delete <uid>
# Folders
sog folders list
sog folders create "Projects"
sog folders rename "Old" "New"
# Drafts
sog drafts list
sog drafts create --to X --subject Y --body Z
sog drafts send <uid>
Alias: sog m → sog mail
📅 Calendar
sog cal list # Upcoming events
sog cal list --from 2025-01-01 --to 2025-01-31
sog cal today # Today's events
sog cal week # This week
sog cal search "meeting" # Search events
sog cal create "Meeting" --start "2025-01-15T10:00" --duration 1h
sog cal create "All Day" --start "2025-01-15" # All-day event
sog cal get <uid>
sog cal update <uid> --title "New Title" --location "Zoom"
sog cal delete <uid>
sog cal calendars # List calendars
Alias: sog c → sog cal
📁 Files (WebDAV)
sog drive ls # Root folder
sog drive ls /Documents -l # Long format
sog drive get /file.pdf # File metadata
sog drive download /remote/file.pdf ./local.pdf
sog drive upload ./doc.pdf /remote/
sog drive cat /file.txt # Output to stdout
sog drive mkdir /New-Folder
sog drive move /old.pdf /new.pdf
sog drive copy /src.pdf /dst.pdf
sog drive delete /file.pdf
Alias: sog files → sog drive
✅ Tasks
sog tasks lists # List task lists
sog tasks list # Tasks in default list
sog tasks list --all # Include completed
sog tasks add "Buy milk"
sog tasks add "Review PR" --due 2025-01-16 -p 1
sog tasks add "Call mom" -d "Birthday reminder"
sog tasks get <uid>
sog tasks update <uid> --title "Updated" --due 2025-01-20
sog tasks done <uid>
sog tasks undo <uid>
sog tasks delete <uid>
sog tasks due tomorrow # Due by date
sog tasks overdue # Overdue tasks
sog tasks clear # Clear completed
Alias: sog t → sog tasks
👥 Contacts
sog contacts list
sog contacts search "john"
sog contacts get <uid>
sog contacts create "John Doe" -e john@example.com -p 555-1234
sog contacts update <uid> --email new@example.com
sog contacts delete <uid>
sog contacts books # List address books
Alias: sog con → sog contacts
📨 Meeting Invites
# Send invitation
sog invite send "Team Sync" alice@example.com bob@example.com \
--start "2025-01-15T14:00" --duration 30m --location "Zoom"
# Reply to invitation
sog invite reply ./invite.ics --status accept
sog invite reply ./invite.ics --status decline --comment "Can't make it"
sog invite reply ./invite.ics --status tentative
# Cancel meeting
sog invite cancel <uid> alice@example.com bob@example.com
# Parse .ics file
sog invite parse ./meeting.ics
# Preview without sending
sog invite preview "Meeting" alice@example.com --start "2025-01-15T10:00"
Alias: sog inv → sog invite
🔔 IMAP IDLE
sog idle # Watch INBOX for new mail
sog idle "Work" # Watch specific folder
sog idle --timeout 300 # 5-minute timeout
🤖 AI-Friendly
Run sog --ai-help for comprehensive documentation including:
- All commands with options
- Date/time format specifications
- Examples for every command
- Output format details
🔄 gog/mog Compatibility
sog follows gog and mog patterns:
| Pattern | sog | gog | mog |
|---|---|---|---|
| Calendar events | --start, --duration | Same | --from, --to |
| Task priority | -p, --priority | Same | --important |
| Output format | --json, --plain | Same | Same |
| Max results | --max | Same | Same |
🗂️ Configuration
| File | Purpose |
|---|---|
~/.config/sog/config.json | Account settings |
| System keychain | Passwords (secure) |
Environment Variables:
| Variable | Description |
|---|---|
SOG_ACCOUNT | Default account email |
✅ Tested Providers
| Provider | IMAP/SMTP | CalDAV | CardDAV | WebDAV |
|---|---|---|---|---|
| Fastmail | ✅ | ✅ | ✅ | ✅ |
Other standards-compliant providers should work but have not been tested yet.
📄 License
MIT
👨💻 Developed By
visionik and Vinston 🐺 (Clawdbot) using the visionik.md framework/skill.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install sog?
Run openclaw add @visionik/sogcli in your terminal. This installs sog into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/visionik/sogcli. Review commits and README documentation before installing.
