mdpush.io

Pasting markdown
into Slack? Push it.

Your AI agent just generated a 4,000-word spec. Don't paste it.
Push it from your terminal and get back a beautifully rendered link.
End-to-end encrypted, no account required to read.

// drop a markdown file to get started — no account needed

or, from your terminal
$ brew tap mdpush-io/mdpush
$ brew install mdpush
$ mdpush share spec.md

// open source · macOS · Linux

this is what your reader sees

One link. Zero friction.

No more “view raw” buttons. No more broken Slack code blocks.

mdpush.io/d/abc123#k=...
mdpush.io / abc123

Auth implementation — round 2

created by gabriel@mdpush.io·2m ago·expires in 7d
light lock// encryptednew-featuremdpush

Here's the revised auth flow after yesterday's review. The big change: we're moving session-token hashing from the API layer into the database trigger so we never have raw tokens in transit between services.

The new flow

  • Client requests a 6-digit code
  • Code is hashed with Argon2id before storage
  • Verification is constant-time
  • Sessions rotate on every refresh

Reference implementation

const session = await db.sessions.create({
  userId: user.id,
  tokenHash: await argon2.hash(token),
  expiresAt: addDays(new Date(), 30),
});

Let me know what you think — happy to revise.

why mdpush

Like pwpush, for markdown.

Three things make mdpush different from every other “share a link” tool you've used.

🔒

Zero-knowledge encryption

Your docs are encrypted on your machine before they ever leave it. The decryption key lives in the URL fragment — never sent to our servers. We literally cannot read what you share.

👤

Smart locks, not passwords

Default lock just asks “Who sent you this?” — type a first name, you're in. Need stronger? Get a memorable themed password like brave-new-world, not gibberish.

🤖

Agent-friendly

A small, scriptable CLI that drops cleanly into any agent workflow. Run mdpush ai-skills to get a ready-to-paste skill spec for your agent — no plugins, no magic, just markdown your agent can read.

for AI-agent workflows

Your agent already writes the docs.
Now it can share them too.

Run mdpush ai-skills to get a ready-to-paste skill spec for Claude Code, Cursor, or any agent that reads markdown. The CLI itself is small, scriptable, and drops cleanly into any agent workflow.

$ claude “push the debug report to mdpush, strong lock”
 
  → running mdpush share debug.md --lock strong
  ✓ Uploaded: debug.md
  🔗 https://mdpush.io/d/k7f2x9
  🔒 Password: brave-new-world
 
  → done. link copied to clipboard.
power users

Sharing from the terminal?

Skip the browser. Push from any folder, any script, any agent.

$ brew tap mdpush-io/mdpush
$ brew install mdpush
Open source macOS · Linux Scriptable & agent-friendly Free — 50 docs/month
common questions

The honest answers

Do I need an account?+
No — not to share, and not to read. Drop a file, get a link. Accounts only exist for power users who want a dashboard, library, or to use the CLI.
What can the server actually see?+
Operational metadata only: who uploaded, when, expiration, lock type, view count. Document content, titles, categories, and project names are all encrypted client-side. The decryption key lives in the URL fragment (the part after #) which browsers never send to servers.
Why two locks instead of just passwords?+
Most sharing happens between people who already know each other. “Who sent you this?” is nearly zero friction but still gates random scrapers and bots. When you need real security, the strong lock gives you memorable themed passwords — never random gibberish.
Is it really free?+
Yes. 50 docs/month, all features, no credit card. The CLI is open source. Paid tiers may come later for teams who need shared workspaces — never to gate the core experience.
What about my AI agent?+
Run mdpush ai-skills and the CLI prints a markdown spec you can paste into Claude Code, Cursor, or any agent that reads skills. From then on your agent can share specs, debug reports, and ramblings on your behalf — and fetch docs people send you.