DEV Community

Cover image for DevBrief — AI Standup Writer Powered by Hermes Agent (Vercel + Render)
Onah Sunday.
Onah Sunday.

Posted on

DevBrief — AI Standup Writer Powered by Hermes Agent (Vercel + Render)

Hermes Agent Challenge Submission

This is a submission for the Hermes Agent Challenge

Live app: https://devbrief-tau.vercel.app

Repo: github.com/sundayonah/devbrief

Hermes health: devbrief-hermes.onrender.com/health

Setup guide: How I connected Hermes to Next.js


What I Built

DevBrief turns GitHub activity into human-readable standups, PR changelogs, or work logs. Any visitor can sign in with GitHub OAuth, pick a repo, set a time range and branch, filter PRs and authors, choose a tone (casual / formal / concise), and hit Generate.

The Next.js app does not call OpenRouter directly. It fetches commits, PRs, and issues from GitHub, then calls Hermes Agent’s OpenAI-compatible API (POST /v1/chat/completions) on a long-running gateway. Hermes runs the agent loop (skills, tools, server-side model config) and returns the final brief.

Architecture:

Users → DevBrief (Vercel)
            ↓  POST /api/summary → lib/hermes.ts
      Hermes gateway (Docker on Render)
            ↓  model: openrouter/owl-alpha
      OpenRouter (API key only on Hermes — not on Vercel)
Enter fullscreen mode Exit fullscreen mode

Demo

DevBrief deployed UI — sign in, repo picker, filters, and output modes

Try it:

  1. Open devbrief-tau.vercel.app
  2. Connect GitHub → select a repo → choose output mode and tone → Generate
  3. Confirm Hermes is up: https://devbrief-hermes.onrender.com/health

Code

Repository: github.com/sundayonah/devbrief

Piece Location
Hermes client lib/hermes.tsHERMES_ENDPOINT + POST /v1/chat/completions
Summary API app/api/summary/route.ts
Standup skill hermes-skills/standup-writer.md
Hermes Docker image docker/hermes/Dockerfile
Production model config docker/hermes/config.yaml (openrouter/owl-alpha, max_tokens: 2048)
Deploy guide docs/DEPLOYMENT.md

My Tech Stack

Layer Technology
Frontend Next.js 14 (App Router), TypeScript, Tailwind CSS
Auth & GitHub NextAuth.js, Octokit, GitHub OAuth
AI agent Hermes Agenthermes gateway run + API server
Model openrouter/owl-alpha via OpenRouter (on Hermes host only)
App hosting Vercel
Agent hosting Docker on Render

How I Used Hermes Agent

Hermes is not a chatbot wrapper here — the gateway is the brain for every generation.

Hermes capability How DevBrief uses it
API server API_SERVER_ENABLED=true; Next.js calls /v1/chat/completions server-side (no browser CORS)
Gateway hermes gateway run in Docker on Render — not inside Vercel serverless
Skills standup-writer.md copied to /root/.hermes/skills/ in the image
Server model config docker/hermes/config.yaml sets model.default: openrouter/owl-alpha (request model field is not what drives inference)
OpenRouter OPENROUTER_API_KEY on Render only — not in Vercel env
Auth API_SERVER_KEY on Render ↔ HERMES_API_KEY on Vercel
Cron / messaging hermes schedule documented as a next step in the UI; Slack/Telegram delivery disabled in current deploy

Request flow:

POST /api/summary
  → GitHub API (user OAuth token)
  → generateBrief() in lib/hermes.ts
  → Hermes POST /v1/chat/completions
  → standup / PR changelog / work log
  → UI (copy, edit, history)
Enter fullscreen mode Exit fullscreen mode

The long setup story (WSL PATH, duplicate .env keys, 127.0.0.1 vs localhost, OpenRouter 402, baking config.yaml for Render) is in the tutorial post.


What I learned

  • Start the gateway, hit /health, then /v1/chat/completions before wiring the app.
  • Hermes reads ~/.hermes/config.yaml for the real model — env vars and JSON model alone were not enough on Render until we shipped docker/hermes/config.yaml.
  • Split hosting: serverless Next.js + long-running Hermes elsewhere is the right pattern for this challenge.

Thanks for reading — try the live demo and leave a comment if you hit snags with Hermes on Render or Vercel.

Top comments (0)