Meme generation via meme-cli:
composite captions onto meme templates, memegen.link-style, with one CLI
call. ~220 bundled templates, no network calls, no image-editing library.
FROM scratch — just the static meme-cli binary and fraglet-entrypoint,
nothing else. No shell, no package manager, no libc. meme-cli's own CLI
arguments are the container's command; see "Usage" below for what that
means for how you call it.
MEME_DIR (or --meme-dir) at a
mounted directory of templates to use instead of the bundled one.fraglet-entrypoint, nothing else in the image.The container is a lazy-loaded meme-cli: every subcommand — list,
search, show, render, llms, version — works exactly as it would
installed locally. WORKDIR /output inside the image means relative output
paths (an explicit -o name.png, or meme-cli's own <id>.png default when
-o is omitted) resolve against whatever host directory gets mounted at
/output — no path-rewriting, no fixed/declared filename, no dance.
docker run — no fragletc neededdocker run --rm -v "$PWD":/output ofthemachine/meme:local \
render drake "writing tests" "hoping it works" -o drake.png
# stdout-only commands need no volume at all
docker run --rm ofthemachine/meme:local llms
docker run --rm ofthemachine/meme:local search drake
--output-dir <hostdir> mounts a real host directory writable at /output
— unlike --output, which requires an exact filename declared ahead of
time, this works for any filename, including meme-cli's own default
naming, because nothing needs to be predicted or declared: whatever lands
in the mounted directory is already exactly where you asked for it.
A self-executing wrapper makes this a genuine drop-in for a locally
installed meme-cli — every word after the script name, including flags,
passes straight through:
#!/usr/bin/env -S fragletc --image=ofthemachine/meme:local --output-dir=.
meme-cli "$@"
chmod +x meme-cli.sh
./meme-cli.sh llms # stdout, no file
./meme-cli.sh search drake # stdout, no file
./meme-cli.sh render drake "writing tests" "hoping it works" -o drake.png
./meme-cli.sh render fry "no -o at all" "still lands as fry.png"
Every one of those is one container run — no shell inside the image means
no way to sequence commands with ;/&&, so a search-then-render workflow
is two separate calls, not one script.
See fraglet/default-guide.md for template-picking and caption-writing
guidance — the templates encode different joke structures (one-liner
reaction vs. side-by-side comparison), and matching that structure is most
of what makes a generated meme actually land.
Content type
Image
Digest
sha256:9950fb9b2…
Size
28.3 MB
Last updated
19 days ago
docker pull ofthemachine/meme