DEV Community

Cover image for SlothPulse: I wrote the code. Gemma can draft the standup.
Teng
Teng

Posted on Fully Autonomous

SlothPulse: I wrote the code. Gemma can draft the standup.

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 🦥

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.

💡 What I Built

After a day of writing code, “what did you do today?” shouldn’t require another Git archaeology session.

I built SlothPulse to turn recent commits and a terminal error into a standup draft using Gemma running locally through Ollama. One command produces three Markdown sections: completed work, blockers, and suggested next steps.

Every item has a receipt pointing back to its source, so you can check anything suspicious before sharing the draft. The note stays in a local file.

🎥 Demo

Open the recorded demo → — click a source badge to inspect its commit or error, or watch the 48-second video.

SlothPulse: your standup, with receipts

python3 slothpulse.py --since today --error-file error.txt
Enter fullscreen mode Exit fullscreen mode

An excerpt from the actual saved draft:

### 🛠️ What I Did Today
- Fixed issue where export job IDs were lost during retries. [^C1]

### 🐛 Blockers & Bugs
- User-reported: KeyError: 'result' while downloading job results. [^E1]

### 🚀 Next Steps
- Suggested: Investigate the origin of the KeyError and potential data access issues in worker.py. [^E1]
Enter fullscreen mode Exit fullscreen mode

The full captured run summarizes five commits and one traceback in 10.33 seconds inside the CLI. The fixture uses fictional authors and a deliberately fake key; the tiny worker really raises the captured error. The video replays timestamped output, including the measured wait.

💻 Code

GitHub logo TengByte / slothpulse

A 100% local, privacy-first CLI that turns Git commits and error traces into developer digests with Ollama and Gemma.

Setup and source · Exact input and output · Build log

🛠️ How I Built It

The first version produced a tidy recap—and attributed a pasted error to SlothPulse itself, although its source was unspecified. That unsupported connection mattered more than the formatting.

I moved the model’s response to JSON with required source keys. Every commit gets a C key. Each reported error gets an E object containing both its summary and investigation step. Python assigns their references and renders the Markdown.

That pairing came from another real failure: an error investigation cited an unrelated commit. Both IDs existed, so checking whether a source was known had missed the problem. Keeping the error and its follow-up together removes that particular mismatch.

The CLI validates coverage and reference types, retries an invalid plan once, and saves no digest if the second attempt fails. A valid reference still cannot prove that a sentence is correct; human review stays in the workflow.

The application uses Python’s standard library: subprocess for Git, urllib.request for Ollama, and json for the response contract. No external Python packages. The code is MIT licensed.

🔒 Why Does Open Innovation Matter?

Commit subjects and traces can contain private project details. Downloaded Gemma weights let the recap run on the same machine as that context, without a hosted inference account or API key. The model download needs internet access; generation stays local.

SlothPulse checks model metadata before sending context, rejects cloud-backed models, and bypasses HTTP proxies. The tested Ollama server runs with OLLAMA_NO_CLOUD=1. These checks trust the local server and its metadata.

Before generating, --preview shows the sanitized input without a model call or file write. Common credential patterns are masked, but masking is best effort: preview it, and treat saved notes as potentially confidential.

🦥 The Lazy Payoff

The chore becomes reviewing a draft instead of assembling one from scattered context. To check this beyond the demo fixture, I ran SlothPulse on this project’s six real commits, using local Gemma on an Apple M5 / 16 GB:

Invocation Whole process time
Model initially unloaded 13.619 s
Immediate repeat 8.720 s

Review caught one important correction among the six completed-work items: Gemma turned “submission handoff” into “submitted,” while this entry was still a draft. The receipt made that mismatch easy to locate. The raw output and the corrected version are both preserved in the repository trial.

This was an AI-assisted source check, not a human standup study. Manual preparation time and human editing effort remain unmeasured. The earlier nine-run synthetic benchmark and 23 unit tests check workflow behavior and failure boundaries; factual accuracy still needs review.

🏆 Prize Categories

  • Best Use of Gemma — local Gemma drafts the summaries and investigation steps.

Codex assisted with implementation, testing, demo preparation, and this article. More engineering notes: tengli.dev.

Top comments (1)

Collapse
 
tengbyte profile image
Teng •

Small update: the 48-second demo now includes English narration and captions.

If you try SlothPulse on your own repo, I'm especially curious about one thing: did Gemma misread a commit's status, even when it cited the right source? In my trial, it turned ‘submission handoff’ into ‘submitted’—a useful reminder that a valid reference isn't a fact check.

Please share a redacted example, your model tag, and whether the model was already loaded. No private commits, tokens, or customer traces needed. I'd love to learn which failure cases to tackle next.