Your daily standup, written by Hermes Agent.
Any GitHub user can open your deployed app, click Connect GitHub, authorize it, and use DevBrief with their own repos and API rate limits. You provide one OAuth App for the whole product; you do not issue per-user secrets.
Developers sign in with GitHub OAuth (or a personal token for local use). Hermes reads repo activity you scope (time range, branch, PR filters) and writes standups, PR changelogs, or work logs — with optional Telegram or Slack delivery.
Built for the Hermes Agent Challenge on DEV.to.
- GitHub OAuth — each user connects their own account (hosted-safe); optional PAT for local/private demos
- Repo & filters — pick repo, time range, branch, PR state (all / open / merged), author (me vs team)
- Output modes — standup (Hermes
standup-writerskill), PR changelog, or work log - Hermes Agent — generates copy; falls back to a simple template if Hermes is unreachable
- Tones — casual, formal, concise
- Copy & edit — clipboard and in-app editing
- History — last 30 runs per signed-in user locally (
data/history.json); on Vercel, ephemeral/tmpstorage
- Node.js 18+
- Hermes Agent (optional; improves generation)
- A GitHub OAuth App (
GITHUB_ID/GITHUB_SECRET) for sign-in, or a PAT for local-only use
git clone https://github.com/YOUR_USERNAME/devbrief
cd devbrief
npm installcp .env.local.example .env.localFill in .env.local (see .env.local.example). At minimum for multi-user / hosted deploys:
GITHUB_ID,GITHUB_SECRET,NEXTAUTH_SECRET,NEXTAUTH_URLHERMES_ENDPOINT(if you use Hermes)
Avoid relying on GITHUB_TOKEN in production — it is a single shared identity for all anonymous API traffic.
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bashIn ~/.hermes/.env enable the API server (DevBrief uses OpenAI-compatible /v1/chat/completions):
API_SERVER_ENABLED=true
API_SERVER_KEY=change-me-local-dev # optional but recommendedStart the gateway (listens on http://127.0.0.1:8642 by default):
~/.local/bin/hermes gateway runCopy the skill file so Hermes can use it:
cp hermes-skills/standup-writer.md ~/.hermes/skills/In DevBrief .env.local set HERMES_ENDPOINT=http://127.0.0.1:8642 and, if you set API_SERVER_KEY, the same value in HERMES_API_KEY.
Windows + WSL: run the gateway in WSL and pnpm dev on Windows — WSL2 forwards localhost/127.0.0.1 to the gateway when it is running. If you see ECONNREFUSED, start hermes gateway run first and confirm with curl http://127.0.0.1:8642/health.
npm run devDevBrief and Hermes are two services. Hermes cannot run inside Vercel serverless — the gateway must live on a host that keeps a long-running process (we use Render + Docker for Hermes and Vercel for Next.js).
- New Web Service → Docker; Dockerfile
docker/hermes/Dockerfile, repo root context. - Health check:
/health. - Env on Render:
OPENROUTER_API_KEY,API_SERVER_KEY(strong secret). - After deploy:
curl https://YOUR-SERVICE.onrender.com/health→{"status":"ok",...}.
First build is slow (Hermes install.sh inside the image). See docker/hermes/Dockerfile and optional render.yaml.
- Import repo; set
GITHUB_ID,GITHUB_SECRET,NEXTAUTH_SECRET,NEXTAUTH_URL(your Vercel URL). HERMES_ENDPOINT=https://YOUR-SERVICE.onrender.com(HTTPS, no:8642).HERMES_API_KEY= same as RenderAPI_SERVER_KEY.- GitHub OAuth callback:
https://your-app.vercel.app/api/auth/callback/github.
/api/summary needs ≥60s function duration (Vercel Pro). Do not put OPENROUTER_API_KEY on Vercel.
Paste-ready section for DEV.to: docs/DEVTO_PRODUCTION.md
Full checklist: docs/DEPLOYMENT.md
Local Docker smoke test:
export OPENROUTER_API_KEY=sk-or-v1-...
docker compose -f docker-compose.hermes.yml up --buildWrite-up: How I connected Hermes to this app.
To get your standup every morning without opening the app:
hermes schedule "Every weekday at 8:30am, POST to http://localhost:3000/api/summary with owner=YOUR_OWNER, repo=YOUR_REPO, tone=casual — then send the standup response to my Telegram"Hermes persists this schedule across restarts and improves the summary style over time.
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- NextAuth.js (GitHub OAuth)
- Octokit (GitHub API)
- Hermes Agent (generation + optional scheduling)
Hermes is not just a chatbot wrapper here — it's doing real agentic work:
- Skill execution — the
standup-writer.mdskill gives Hermes structured instructions for turning raw GitHub data into a human standup - Self-improvement — Hermes tracks user edits and calibrates tone over time
- Cron scheduling — Hermes runs the whole pipeline autonomously every morning
- Optional delivery — Slack/Telegram hooks exist in the repo but are disabled in the UI for now
MIT