Repository navigation
Releases
v0.5.0
Now verified ☑️
This is a small update replacing DCR (Dynamic Client Registration) with our client on Resend. Now, when running pop auth you will see the new screen, showing us verified!
XXX, Charm
Changelog
New!
- 90d0f73: feat(oauth): hardcoded client ID, instead of DCR (#179) (@andrinoff)
Other stuff
- a8dc029: ci: sync dependabot config (#152) (@charmcli)
- cc5a0a7: v0.5.0 (@andrinoff)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/pop/releases/download/v0.5.0/checksums.txt'
wget 'https://github.com/charmbracelet/pop/releases/download/v0.5.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.4.0
Plain text, anonymous SMTP, and agent skills
Pop can now send plain text emails, work with anonymous SMTP relays, and teach your fav AI agent (like Crush 💘) how to send mail from the terminal!
Thanks to @jficz, you can skip Markdown-to-HTML rendering by passing --plaintext:
pop --plaintext \
--from me@example.com \
--to you@example.com \
--subject "Hello!" \
--body "Just plain text."You can also set POP_PLAINTEXT=true. Plain text delivery works with both SMTP and Resend.
Courtesy of @c-tonneslan, it supports SMTP relays that don't require authentication. Set the SMTP host as usual and leave the username and password unset:
export POP_SMTP_HOST=corpo.lan
export POP_SMTP_PORT=25Finally, Pop ships with a skill teaching Crush 💘 and other Agent Skills-supporting harnesses how to send mail, along with installers for Crush, Claude Code, Codex, Cursor, and Pi:
pop skill
pop install-skill crush
pop install-skill claude
pop install-skill codex
pop install-skill cursor
pop install-skill piThanks to everyone who contributed, and thanks for using Pop!
Charm ✉️
Changelog
New!
- 6193324: feat: Allow plaintext e-mails (#125) (@jficz)
- 6a0c5f3: smtp: allow more anonymous relays (#167) (@c-tonneslan)
- 79b6dc0: Skills: add Pi as an install-skill target (@meowgorithm)
- 0a7d2ac: Skills: add install-skill subcommand to install skill for AI agents (@meowgorithm)
- f1b761b: Skills: add pop skill command to print a skill definition (@meowgorithm)
Docs
Other stuff
- 2f53667: AGENTS: add AGENTS.md (@meowgorithm)
- 181e4ac: CI: allow automatic Go toolchain selection (@Amolith)
- e7111b4: OAuth: fix regression when oauth is revoked that would prevent start (@meowgorithm)
- f1fb35c: README: add info about skills (@meowgorithm)
- 18d5953: README: correct URL in workflow badge (@meowgorithm)
- a0d245c: README: fix typo (@meowgorithm)
- 359de90: Skills: cleanup install-skill error formatting and output (@meowgorithm)
- 29d72d5: Skills: help text copyedit (@meowgorithm)
- 1a29201: build: bump Go to 1.26.5 (@Amolith)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/pop/releases/download/v0.4.0/checksums.txt'
wget 'https://github.com/charmbracelet/pop/releases/download/v0.4.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.3.0
Say hello to Resend OAuth!
Resend has always been a great way to use Pop, and now we’re adding support for their hot, new OAuth API. In other words: no API key needed!
To get going, just pop auth.
Enjoy!
Charm
Changelog
- 79b8474: Add proper attachment style definition (@meowgorithm)
- 5a7235a: CLI, OAuth TUI: Minor wording adjustments (@meowgorithm)
- 934f01d: CLI: apply OAuth token on startup, if present (@meowgorithm)
- fe0de4b: CLI: improve message when no env vars are set (@meowgorithm)
- f73d089: CLI: show usage if not in a TTY (with no args) (@meowgorithm)
- 925c2d4: Examples: drop empty README (@meowgorithm)
- ee8f225: Lint: fix all golangci-lint issues (@meowgorithm)
- a2e07d1: OAuth TUI: show URL when browser can't open and add --no-browser flag (@meowgorithm)
- c3b041e: OAuth TUI: wrap text to terminal width and restyle header (@meowgorithm)
- 4d740fe: OAuth: Use pkg/browser for cross-platform browser opening (@meowgorithm)
- cb29efd: OAuth: add TUI for Resend OAuth authentication (@meowgorithm)
- c8bc2a7: OAuth: add basic OAuth support for Resend delivery (@meowgorithm)
- 8c4af40: OAuth: consolidate interactive and non-interactive oauth code (@meowgorithm)
- 683388c: OAuth: print API errors with error header and wrapped body (@meowgorithm)
- fa6a1c2: OAuth: pull localhost into a const (@meowgorithm)
- 0279634: OAuth: store tokens in XDG_DATA_HOME on Linux (@meowgorithm)
- cdda0a5: README: auto-format (@meowgorithm)
- 26352ca: README: update with oauth instructions (@meowgorithm)
- 24b2fe2: Taskfile: add auth and auth:nobrowser tasks (@meowgorithm)
- bef6b40: Taskfile: make default task run the project, add build task (@meowgorithm)
- 91b8c68: Wrap some comments (@meowgorithm)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/pop/releases/download/v0.3.0/checksums.txt'
wget 'https://github.com/charmbracelet/pop/releases/download/v0.3.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.2.2
Changelog
Hi! It's been a little while. This release modernizes Pop with to use the glorious Bubble Tea v2 ecosystem. That's Bubble Tea, Bubbles, and Lip Gloss v2.
For Pop this mostly means faster rendering and real cursors. Real cursors in particular are super important for IME users (Chinese, Japanese, Korean, and so on).
It also standardizes on the forthcoming Charmtone palette, used heavily in Crush.
Thanks for using Pop!
Charm 🌝
Changelog
New
- 72b356c: Upgrade Bubble Tea, Bubbles, and Lip Gloss to v2 (@meowgorithm)
- 0855201: Add proper attachment style definition (@meowgorithm)
- c7a81cc: Switch to CharmTone color palette (and bump Bubbles) (@meowgorithm)
Fixed!
- abf8ebc: Prevent wrapping nil error on successful smtp delivery (#169) (@NiltonVolpato)
- 15ca4b2: Fix a bug where the send button wouldn't always hightlight (@meowgorithm)
- 38d3f07: Bump Go version to 1.26.4 for security patches (@meowgorithm)
Other stuff
- 3558a28: Ignore pop binary in root (@meowgorithm)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/pop/releases/download/v0.2.2/checksums.txt'
wget 'https://github.com/charmbracelet/pop/releases/download/v0.2.2/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
v0.2.1
Bumpin’ Deps
Hi! This is a ’lil maintenance release which updates deps and improves code quality. Thanks for using Pop!
Full Changelog: v0.2.0...v0.2.1
Part of Charm.
Charm 热爱开源 • Charm loves open source
v0.2.0
SMTP Support
This release includes our most requested feature, SMTP support 🪄 ✉️.
With Pop v0.2.0, you can now send emails using your own SMTP server configuration.
To get started, export the following environment variables:
export POP_SMTP_HOST=smtp.gmail.com
export POP_SMTP_PORT=587
export POP_SMTP_USERNAME=azure.diamond@gmail.com
export POP_SMTP_PASSWORD=hunter2Then, run pop and send emails like you normally would:
popInstallation
Use a package manager:
# macOS or Linux
brew install pop
# Nix
nix-env -iA nixpkgs.pop
# Arch (btw)
yay -S charm-pop-binInstall with Go:
go install github.com/charmbracelet/pop@latestOr download a binary from below.
Full Changelog: v0.1.0...v0.2.0
Part of Charm.
Charm 热爱开源 • Charm loves open source
v0.1.0
Initial Release
📬 Pop a tool for sending emails from your terminal.
Use markdown-based formatting, attach files, and send emails all from your terminal.
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.

