skills$openclaw/sog
visionik7.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).

7.7k stars3.8k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namesog
descriptionStandards Ops Gadget — CLI for IMAP/SMTP/CalDAV/CardDAV/WebDAV. Open-standards alternative to gog (Google) and mog (Microsoft). OpenClaw Skills integration.
ownervisionik
repositoryvisionik/sogcli
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @visionik/sogcli
last updatedFeb 7, 2026

Maintainer

visionik

visionik

Maintains sog in the OpenClaw Skills directory.

View GitHub profile
File Explorer
51 files
.
cmd
sog
main.go
941 B
internal
caldav
client_test.go
5.9 KB
client.go
16.8 KB
carddav
client.go
9.3 KB
cli
auth.go
9.0 KB
cal.go
14.2 KB
contacts.go
10.8 KB
drafts.go
4.8 KB
drive.go
8.7 KB
folders.go
4.9 KB
idle.go
1.8 KB
invite.go
12.7 KB
mail_test.go
748 B
mail.go
19.2 KB
root.go
7.6 KB
tasks.go
13.1 KB
config
config_test.go
3.6 KB
config.go
5.0 KB
keyring_test.go
496 B
keyring.go
6.4 KB
discover
discover_test.go
1.2 KB
discover.go
3.6 KB
imap
client_test.go
1.5 KB
client.go
15.1 KB
integration_test.go
4.6 KB
search_test.go
4.8 KB
itip
itip.go
8.8 KB
output
formatter_test.go
1.6 KB
formatter.go
1.7 KB
smtp
client_test.go
1.6 KB
client.go
6.0 KB
integration_test.go
1.6 KB
webdav
client.go
5.8 KB
_meta.json
263 B
CHANGELOG.md
4.6 KB
README.md
8.1 KB
SKILL.md
7.1 KB
Taskfile.yml
1.8 KB
SKILL.md

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:

PlatformBackend
macOSKeychain
WindowsWindows Credential Manager
Linux/BSDD-Bus Secret Service (GNOME Keyring, KWallet)

Supports separate passwords per protocol (IMAP, SMTP, CalDAV, CardDAV, WebDAV).

Notes

  • Set SOG_ACCOUNT=you@example.com to avoid repeating --account
  • Part of the Ops Gadget family: gog (Google), mog (Microsoft), sog (Standards)
README.md

📬 sog — Standards Ops Gadget

CLI for Open Standards — Mail, Calendar, Contacts, Tasks, Files via IMAP/SMTP/CalDAV/CardDAV/WebDAV

Go License: MIT

The open-standards counterpart to gog (Google) and mog (Microsoft). Same patterns, any provider.


✨ Features

ModuleProtocolDescription
📧 MailIMAP/SMTPSearch, send, reply, forward, folders, drafts
📅 CalendarCalDAVEvents, create, update, search, today, week
👥 ContactsCardDAVList, search, create, update, delete
TasksCalDAV VTODOAdd, complete, due dates, priorities, clear
📁 FilesWebDAVList, upload, download, move, copy, delete
📨 InvitesiTIP/iMIPSend, reply, cancel meeting invitations

Extras:

  • 🤖 AI-friendly--ai-help outputs 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

OptionDescription
--account, -aAccount email to use
--jsonOutput JSON (best for scripting)
--plainStable text output (TSV, no colors)
--verbose, -vShow extra details
--forceSkip confirmations
--no-inputNever prompt (CI mode)
--ai-helpFull docs for AI agents

📧 Mail

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 msog 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 csog 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 filessog 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 tsog 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 consog 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 invsog 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:

Patternsoggogmog
Calendar events--start, --durationSame--from, --to
Task priority-p, --prioritySame--important
Output format--json, --plainSameSame
Max results--maxSameSame

🗂️ Configuration

FilePurpose
~/.config/sog/config.jsonAccount settings
System keychainPasswords (secure)

Environment Variables:

VariableDescription
SOG_ACCOUNTDefault account email

✅ Tested Providers

ProviderIMAP/SMTPCalDAVCardDAVWebDAV
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.