Hammock: The Gentle AI "Sloth" That Triages Your GitHub Issues Overnight (And Never Speaks Without Permission) 🦥💤 A developer built Hammock, an open-source GitHub issue triage tool that runs overnight on a local Gemma 4 model via Ollama and orchestrates work through durable Temporal workflows. Hammock automatically applies allowlisted, reversible labels and flags likely duplicates using nomic-embed-text embeddings and cosine similarity, but queues all public actions—comments, closes, locks, and assignments—for a single maintainer approval. The project ships with replayable eval and fixture commands, including three prompt-injection test cases, and logs every action with an immutable receipt. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady https://dev.to/challenges/hacktoberfest-week3-2026-10-19 Every maintainer knows the morning dread. Forty notifications, and before writing a line of code you answer the same four questions in the same order: Is this a duplicate? Is it even a bug? Which version are you on? Can you give me a minimal reproduction? Hammock is an overnight triage sloth. A durable Temporal workflow fetches new and updated issues idempotently, classifies them with a local Gemma 4 model, recalls duplicate reports with embeddings, asks Gemma to adjudicate whether two issues share the same technical root cause, and drafts the reply that asks for exactly what's missing. Then it stops. It applies allowlisted, reversible labels on its own. Everything public : comments, closes, locks, assignments waits in a local queue for one maintainer tap. Hammock can propose anything. It can only do the reversible things alone. Labels on an allowlist: automatic . Comments, closes, locks, and assignments: your tap . | Action | Who decides | |---|---| | bug , needs-info , feature , duplicate , question | Automatic — additive, allowlisted in .hammock.yml | | Comments, closes, locks, assignments | Your tap — always, with no config that disables it | The person who gets to be a little lazier is a maintainer at 7am: instead of forty tabs, they get a short queue of drafts to approve, edit, or discard. The person who gets to be a little lazier is a maintainer at 7am: instead of forty tabs, they get a short queue of drafts to approve, edit, or discard. video live demo To run on Local Device 60-second reviewer path — no Ollama, no Temporal, no tokens: git clone https://github.com/Lakshay-Deol/Hammock.git cd Hammock pnpm install && pnpm build pnpm hammock eval-dedupe --replay precision / recall vs ground truth pnpm hammock test-fixtures --replay 8 fixtures incl. 3 prompt injections pnpm hammock dashboard http://localhost:3000 Hammock triages your GitHub issues overnight on a local Gemma 4 model. It labels, spots duplicates and drafts replies — and touches nothing public without your tap. Reversible alone. Visible never. Submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady . Hammock can propose anything. It can only do the reversible things alone. Labels on an allowlist: automatic Comments, closes, locks, and assignments: your tap . Most AI triage bots call hosted models on public webhooks and post directly to repositories without supervision. Hammock runs 100% locally, overnight, durably via Temporal, and strictly refuses to speak in public without maintainer approval — proving every action with an immutable receipt . GitHub REST API │ since + ETag conditional, idempotent ▼ Temporal schedule "nightly-triage" │ ▼ workflow: fetch → per-issue activity fan-out → digest │ ├─► Mastra agent ──► … Gemma 4 via Ollama does three genuinely different jobs, each shaped by a different failure mode: type , severity , confidence , missing info , suggested labels , summary . The thinking channel <|channel thought …