惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
GbyAI
GbyAI
S
SegmentFault 最新的问题
量子位
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
IT之家
IT之家
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
雷峰网
雷峰网

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
DevBrief — AI Standup Writer Powered by Hermes Agent (Ver...
Onah Sunday. · 2026-05-20 · via DEV Community
Cover image for DevBrief — AI Standup Writer Powered by Hermes Agent (Vercel + Render)

Onah Sunday.

Hermes Agent Challenge Submission

This is a submission for the Hermes Agent Challenge


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.