Skip to content

sundayonah/devbrief

Repository files navigation

DevBrief — AI Standup Writer

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.


Features

  • 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-writer skill), 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 /tmp storage

Setup

1. Prerequisites

2. Install

git clone https://github.com/YOUR_USERNAME/devbrief
cd devbrief
npm install

3. Configure

cp .env.local.example .env.local

Fill in .env.local (see .env.local.example). At minimum for multi-user / hosted deploys:

  • GITHUB_ID, GITHUB_SECRET, NEXTAUTH_SECRET, NEXTAUTH_URL
  • HERMES_ENDPOINT (if you use Hermes)

Avoid relying on GITHUB_TOKEN in production — it is a single shared identity for all anonymous API traffic.

4. Install & start Hermes Agent

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

In ~/.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 recommended

Start the gateway (listens on http://127.0.0.1:8642 by default):

~/.local/bin/hermes gateway run

Copy 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.

5. Run DevBrief

npm run dev

Open http://localhost:3000


Running it in production

DevBrief 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).

Hermes on Render

  1. New Web Service → Docker; Dockerfile docker/hermes/Dockerfile, repo root context.
  2. Health check: /health.
  3. Env on Render: OPENROUTER_API_KEY, API_SERVER_KEY (strong secret).
  4. 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.

DevBrief on Vercel

  1. Import repo; set GITHUB_ID, GITHUB_SECRET, NEXTAUTH_SECRET, NEXTAUTH_URL (your Vercel URL).
  2. HERMES_ENDPOINT=https://YOUR-SERVICE.onrender.com (HTTPS, no :8642).
  3. HERMES_API_KEY = same as Render API_SERVER_KEY.
  4. 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 --build

Write-up: How I connected Hermes to this app.


Automating with Hermes Cron

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.


Tech Stack

  • Next.js 14 (App Router)
  • TypeScript
  • Tailwind CSS
  • NextAuth.js (GitHub OAuth)
  • Octokit (GitHub API)
  • Hermes Agent (generation + optional scheduling)

How Hermes Agent Powers This

Hermes is not just a chatbot wrapper here — it's doing real agentic work:

  1. Skill execution — the standup-writer.md skill gives Hermes structured instructions for turning raw GitHub data into a human standup
  2. Self-improvement — Hermes tracks user edits and calibrates tone over time
  3. Cron scheduling — Hermes runs the whole pipeline autonomously every morning
  4. Optional delivery — Slack/Telegram hooks exist in the repo but are disabled in the UI for now

License

MIT

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors