rpi5/picoclaw/skills/protonmail/SKILL.md
<!-- vendored via `npx skills add steipete/clawdis@himalaya` (commit 27e5d49); locally adapted for personal ProtonMail via the hydroxide bridge on rpi5 --> --- name: protonmail description: Read, search, and send the user's personal ProtonMail using the himalaya CLI against the local hydroxide bridge (IMAP :1143 / SMTP :1025). homepage: https://github.com/pimalaya/himalaya metadata: {"openclaw":{"emoji":"📧","os":["linux"],"requires":{"bins":["himalaya"]}}} --- # ProtonMail (himalaya + hydroxid
npx skillsauth add nsimonfr/nic-os rpi5/picoclaw/skills/protonmailInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
PERSONAL mail only. This skill is wired to the user's personal ProtonMail (
[email protected]) via the local hydroxide bridge. Work mail is out of scope.
himalaya is a CLI email client. On the rpi5 it talks to hydroxide, a third-party
ProtonMail bridge running as a system service that exposes IMAP on 127.0.0.1:1143 and SMTP
on 127.0.0.1:1025. Both authenticate with the bridge password at
/run/agenix/protonmail-bridge-password (group-readable by hydroxide, which nsimon is a
member of). The himalaya config at ~/.config/himalaya/config.toml is Nix-managed in
rpi5/picoclaw/picoclaw.nix — do not hand-edit. Edit the Nix module instead.
references/configuration.md (himalaya config file + IMAP/SMTP authentication; informational only)references/message-composition.md (MML syntax for composing emails)[accounts.proton]
default = true
email = "[email protected]"
display-name = "Nicolas Simon"
backend.type = "imap"
backend.host = "127.0.0.1"
backend.port = 1143
backend.encryption.type = "none"
backend.login = "[email protected]"
backend.auth.type = "password"
backend.auth.cmd = "cat /run/agenix/protonmail-bridge-password"
message.send.backend.type = "smtp"
message.send.backend.host = "127.0.0.1"
message.send.backend.port = 1025
message.send.backend.encryption.type = "none"
message.send.backend.login = "[email protected]"
message.send.backend.auth.type = "password"
message.send.backend.auth.cmd = "cat /run/agenix/protonmail-bridge-password"
Plaintext on 127.0.0.1 is fine — the bridge terminates locally.
himalaya folder list
List emails in INBOX (default):
himalaya envelope list
List emails in a specific folder:
himalaya envelope list --folder "Sent"
List with pagination:
himalaya envelope list --page 1 --page-size 20
himalaya envelope list from [email protected] subject meeting
Read email by ID (shows plain text):
himalaya message read 42
Export raw MIME:
himalaya message export 42 --full
Interactive reply (opens $EDITOR):
himalaya message reply 42
Reply-all:
himalaya message reply 42 --all
himalaya message forward 42
Interactive compose (opens $EDITOR):
himalaya message write
Send directly using template:
cat << 'EOF' | himalaya template send
From: [email protected]
To: [email protected]
Subject: Test Message
Hello from Himalaya!
EOF
Or with headers flag:
himalaya message write -H "To:[email protected]" -H "Subject:Test" "Message body here"
Move to folder:
himalaya message move 42 "Archive"
Copy to folder:
himalaya message copy 42 "Important"
himalaya message delete 42
Add flag:
himalaya flag add 42 --flag seen
Remove flag:
himalaya flag remove 42 --flag seen
List accounts:
himalaya account list
Use a specific account:
himalaya --account work envelope list
Save attachments from a message:
himalaya attachment download 42
Save to specific directory:
himalaya attachment download 42 --dir ~/Downloads
Most commands support --output for structured output:
himalaya envelope list --output json
himalaya envelope list --output plain
Enable debug logging:
RUST_LOG=debug himalaya envelope list
Full trace with backtrace:
RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list
himalaya --help or himalaya <command> --help for detailed usage.references/message-composition.md).proton; no need to pass --account./run/agenix/protonmail-bridge-password
(mode 0440 hydroxide:hydroxide). nsimon must be in the hydroxide group;
id nsimon should list it. The agenix file changes path on rebuild — restart
picoclaw (systemctl --user restart picoclaw) if it has stale env.systemctl status hydroxide and journalctl -u hydroxide -e.
Hydroxide can crashloop after a rotation of ~/.config/hydroxide/auth.json; re-auth
via the FIRST-TIME SETUP block at the top of rpi5/hydroxide.nix.127.0.0.1:1143 / :1025 → check ss -tlnp | grep -E '1143|1025';
hydroxide binds 0.0.0.0 on those ports.none on the loopback hop; if himalaya
insists on TLS, double-check the config block above against ~/.config/himalaya/config.toml.databases
Query today's Immich "on this day" memories and print a summary picoclaw can relay. Use when the user asks about Immich memories, on-this-day, or a recap of past photos from today's date.
documentation
Promote items from Wiki/Inbox into curated Wiki/Pages, merging or creating as Wiki/Schema dictates
development
Audit the LLM Wiki for orphans, broken links, duplicates, and stale facts; write a report page
documentation
Drop a URL or pasted note into the LLM Wiki Inbox in AFFiNE