Blame Today
FreeNot checkedPublic anonymous catharsis board: post grievances, discover what others blame, search the community feed.
About
Public anonymous catharsis board: post grievances, discover what others blame, search the community feed.
README
The blame.today web client — the "raw firehose." A client-side Svelte + Vite app that talks straight to nostr relays: the vote path has no backend, no auth, no rate limit (events go direct to relays). A thin Cloudflare Worker fronts the static site to force https, redirect www -> apex, and serve the MCP pointer at /mcp. This is the open, canonical realization of blame; the iOS app lives in the sibling blame-ios repo.
Split out of blame-today/blame-mobile (the old iOS app + worker repo) so each surface is honestly its own thing — they share a brand and the pureblameapp nostr tag, but no code, build, or deploy.
what it is
- a blame target is a nostr
kind 1event taggedpureblameapp; a vote is akind 7reaction taggede:<targetId>+pureblameapp. throwaway key per event. - the leaderboard is built from relay
COUNTs (all-time + a 24h "hot" window), not by fetching events. - the News tab mines today's headlines client-side (
compromise) into clickable suggestions. - content filter (profanity / PII / gibberish) is the only gate — it's an open firehose.
dev
npm install
npm run dev # vite dev server
npm test # vitest unit tests
npm run test:e2e # playwright
npm run build # -> dist/
deploy
Push to main → .github/workflows/deploy-web.yml builds dist/ and runs wrangler deploy, publishing to the Cloudflare Worker (blame-today, Workers + Static Assets) that serves blame.today. The worker (worker/index.js) serves dist/ as static assets, force-upgrades http → https, redirects www → apex, and serves the MCP inline at /mcp (worker/mcp.js). Needs CLOUDFLARE_API_TOKEN (Workers:Edit) + CLOUDFLARE_ACCOUNT_ID repo secrets. The /about prose lives in public/about/ and Vite copies it into dist/about/.
Migrated off GitHub Pages 2026-06-16 — the zone is on Cloudflare now and blame.today is a custom domain on the worker. A push touching only scripts/** or infra/** skips the rebuild.
infra (the Cloudflare config around the worker)
The CF "clicky layer" — DNS records, zone settings (HSTS, Always Use HTTPS), the www → apex redirect rule, and email routing (*@blame.today → gmail) — is declarative IaC in infra/ (OpenTofu). wrangler owns the worker code + the apex custom domain; OpenTofu owns everything else, each resource with exactly one owner. See infra/README.md.
Installing Blame Today
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/blame-today/blame-webFAQ
Is Blame Today MCP free?
Yes, Blame Today MCP is free — one-click install via Unyly at no cost.
Does Blame Today need an API key?
No, Blame Today runs without API keys or environment variables.
Is Blame Today hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Blame Today in Claude Desktop, Claude Code or Cursor?
Open Blame Today on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Blame Today with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
