Observed since 21 Oct, 09:08 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xmmo/mmmail
A CLI email client made for agents — Gmail, Microsoft 365, and any IMAP/SMTP host. --json everywhere.
A CLI email client made for agents. Stateless commands — list, read, send, reply, search, mark, move, delete — plus attachments, for Gmail (OAuth), Microsoft 365 (OAuth + PKCE), and any IMAP/SMTP host. Installs the mmm binary. --json on every data command.
npm install -g @0xmmo/mmmail
Requires Node.js ≥ 20. On Linux: sudo apt-get install -y libsecret-1-dev for keychain support.
mmm init # add an account
mmm list # 20 most recent in INBOX
mmm read 1234 --save-attachments ./out # read + extract attachments
mmm send -t a@example.com -s "hi" -b "hello" --attach ./report.pdf
mmm reply 1234 -b "thanks"
mmm search "invoice"
mmm doctor --json # CI gate (exits 1 on failure)
Full documentation, setup guides, and command reference: https://blog.0xmmo.co/mmmail/
git clone https://github.com/0xmmo/mmmail && cd mmmail
npm install
npm run cli -- list -n 5 # run from TS via tsx
npm test
npm run build
Push a v*.*.* tag — CI runs typecheck + tests + build, publishes to npm with provenance, creates a GitHub release.
npm version patch # or: minor / major
git push --follow-tags
Requires npm Trusted Publishing (or NPM_TOKEN repo secret).
MIT
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
openEnvironment{
"local_name": "open",
"alias": false,
"peer_metadata": null
} | ^11.0.0 | runtime |
imapflowEnvironment{
"local_name": "imapflow",
"alias": false,
"peer_metadata": null
} | ^1.3.3 | runtime |
commanderEnvironment{
"local_name": "commander",
"alias": false,
"peer_metadata": null
} | ^14.0.3 | runtime |
mailparserEnvironment{
"local_name": "mailparser",
"alias": false,
"peer_metadata": null
} | ^3.7.0 | runtime |
nodemailerEnvironment{
"local_name": "nodemailer",
"alias": false,
"peer_metadata": null
} | ^8.0.7 | runtime |
picocolorsEnvironment{
"local_name": "picocolors",
"alias": false,
"peer_metadata": null
} | ^1.1.0 | runtime |
@napi-rs/keyringEnvironment{
"local_name": "@napi-rs/keyring",
"alias": false,
"peer_metadata": null
} | ^1.3.0 | runtime |
@inquirer/promptsEnvironment{
"local_name": "@inquirer/prompts",
"alias": false,
"peer_metadata": null
} | ^7.0.0 | runtime |
google-auth-libraryEnvironment{
"local_name": "google-auth-library",
"alias": false,
"peer_metadata": null
} | ^10.6.2 | runtime |
tsxEnvironment{
"local_name": "tsx",
"alias": false,
"peer_metadata": null
} | ^4.21.0 | development |
tsupEnvironment{
"local_name": "tsup",
"alias": false,
"peer_metadata": null
} | ^8.5.1 | development |
vitestEnvironment{
"local_name": "vitest",
"alias": false,
"peer_metadata": null
} | ^4.1.5 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5.6.0 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^22.0.0 | development |
@types/mailparserEnvironment{
"local_name": "@types/mailparser",
"alias": false,
"peer_metadata": null
} | ^3.4.0 | development |
@types/nodemailerEnvironment{
"local_name": "@types/nodemailer",
"alias": false,
"peer_metadata": null
} | ^6.4.0 | development |
Source distribution
{
"shasum": "1f44ede934652ea2bc135e484049d54053c85e31",
"tarball": "https://registry.npmjs.org/@0xmmo/mmmail/-/mmmail-0.7.0.tgz",
"fileCount": 57,
"integrity": "sha512-uXynr1JWQl0ZFUH1Ye/uwhkW1hdpGKuI64knWIVXdl4VjaPxCiw0xTX2M3GpN1JZCwDyajHtVUfGUxUQ0UliFg==",
"signatures": [
{
"sig": "MEQCIFr+8bHGLXhEtIy0DD7skK7zLEe2kZlPv2flq6xXz10xAiBge1CzDb2H7qb7BSELucICl+X40cvP2uDNkba5oad3JA==",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 287633
}Observed since 21 Oct, 09:08 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:c099e892b2d3201893e3de32f1e9f59aa74fb0f9f2bb78cbd2a60e43d98ae772