v1.0.2 — first public release
First public release of PullMD on GitHub. Self-hosted URL→Markdown service for humans and AI agents — PWA, REST, MCP, and a downloadable Claude Code skill, all from one container.
Highlights
- Multi-strategy extraction. Cloudflare's native Markdown endpoint, with Readability + Trafilatura running in parallel and picked by quality score for everything else.
- Reddit-aware. Auto-detects threads (incl.
redd.itand/s/share links), returns post + comment tree with tunablecomment_depth/comment_limit. - Share IDs that stay live. Every conversion gets an 8-hex permalink;
GET /s/:idre-fetches if older than 1h, falls back to the last good snapshot if the source dies. - Four interfaces, one codebase. PWA frontend, REST (
/api), MCP (POST /mcp, Streamable-HTTP), and a downloadable Claude Code skill bundle. - Multi-arch images (
linux/amd64,linux/arm64) on Docker Hub and GHCR.
Pull
# Docker Hub
docker pull aeternalabshq/pullmd:1.0.2
# GHCR
docker pull ghcr.io/aeternalabshq/pullmd:1.0.2Quick start
mkdir pullmd && cd pullmd
curl -O https://raw.githubusercontent.com/AeternaLabsHQ/pullmd/main/docker-compose.yml
docker compose up -d
# → http://localhost:3000See README for full configuration, the Traefik variant, and the /help setup guide.
In this release
- Multi-stage Dockerfile (Node 22 Alpine), ~55% smaller image
npm audit fix: path-to-regexp 8.4.2, undici 7.25.0scripts/docker-push.shreads version frompackage.jsonand publishes multi-arch via buildx- GitHub Actions workflow auto-builds and publishes
pullmd+pullmd-trafilaturato GHCR onmainand version tags - Quick-start compose now image-based (no clone, no build); Traefik variant split into its own compose file