A tiny discovery portal for cool things people are building with their Hermes agent. People post what they built straight from their agent (Telegram, web, wherever) and everyone else gets a visual feed of use cases to browse and like.
The whole project is deliberately small — one backend file, three frontend files. If you find yourself adding a framework, stop and reconsider.
- User opens
/submit, copies a prompt, pastes it into their Hermes agent. - Their agent asks them for title, description, image URL, video URL, Twitter handle.
- Their agent
POSTs the JSON to/api/submissions. - It shows up on the homepage feed immediately.
No file uploads — media is submitted as public URLs. This is intentional: it means we never host bytes, never run a moderation pipeline, and the site can run on anything.
npm install
npm start
# → http://localhost:3000SQLite DB is created at data/discoverhermes.db on first run.
| Var | Purpose |
|---|---|
PORT |
Port to bind (default 3000, Railway injects this automatically) |
DATA_DIR |
Where to put the SQLite file (default ./data) |
ADMIN_TOKEN |
If set, enables /api/admin/* endpoints gated by this token |
Create a use case. Rate-limited to 10/hr per IP.
{
"title": "Hermes built me a morning market brief",
"description": "Every morning at 7am Hermes DMs me a 3-bullet briefing.",
"image_url": "https://example.com/screenshot.png",
"video_url": "https://example.com/demo.mp4",
"twitter_handle": "yourhandle"
}Only title and description are required.
List approved submissions (max 200).
Increment (or decrement with {"unlike": true}) the like counter.
Body: {"approved": true|false}. Header: x-admin-token: ...
Header: x-admin-token: ...
It's just a Node server + a SQLite file. Any VPS, Fly.io, Render, Railway, etc. The only requirement is that wherever DATA_DIR points must be on a persistent volume — otherwise every redeploy wipes the feed.
- New Project → Deploy from GitHub repo → pick this repo and the
claude/hermes-discovery-portal-Zg0xibranch. - Railway auto-detects Node via Nixpacks and runs
npm install && node server.js(seerailway.json). - In the service → Settings → Volumes, create a volume mounted at
/data. - In Variables, set:
DATA_DIR=/dataADMIN_TOKEN=<some long random string>(optional, only needed if you want moderation endpoints)
- Under Settings → Networking, click Generate Domain for a
*.up.railway.appURL, then add your custom domain (discoverhermes.com) and point your DNSCNAMEat the target Railway gives you.
That's the whole deploy. PORT is injected by Railway automatically; the server already reads it.