AI-powered dev diary from your git history. One command, zero effort.
DevLog scans your git repos, collects today's commits, and asks an LLM to write a human-readable summary. Daily reports, weekly digests, standup updates — all generated in seconds.
curl -fsSL https://raw.githubusercontent.com/vikey89/DevLog/main/install.sh | sh
devlog init
devlog today$ devlog today
┌──────────────┬────────┬─────────┬────────────┬───────┐
│ Repo │ Branch │ Commits │ +/- │ Files │
├──────────────┼────────┼─────────┼────────────┼───────┤
│ my-api │ main │ 5 │ +342 -128 │ 12 │
│ mobile-app │ feat/ │ 3 │ +89 -14 │ 6 │
└──────────────┴────────┴─────────┴────────────┴───────┘
Today I focused on two areas. In the API, I added the new /users endpoint
with pagination support and wrote integration tests covering edge cases.
On the mobile side, I started the profile screen with avatar upload.
| Provider | Example model | Config provider |
Env variable | Models list |
|---|---|---|---|---|
| Anthropic | claude-sonnet-4-6 |
anthropic |
ANTHROPIC_API_KEY |
docs.anthropic.com/en/docs/about-claude/models |
| OpenAI | gpt-4o-mini |
openai |
OPENAI_API_KEY |
platform.openai.com/docs/models |
gemini-2.0-flash |
gemini |
GEMINI_API_KEY |
ai.google.dev/gemini-api/docs/models |
Copy the model ID from the provider's docs and paste it in
modelin yourconfig.yml.
curl -fsSL https://raw.githubusercontent.com/vikey89/DevLog/main/install.sh | shDownload the binary for your platform from Releases.
git clone https://github.com/vikey89/DevLog.git
cd devlog
./gradlew nativeCompile
# Binary at: build/native/nativeCompile/devlogFat JAR fallback (requires JDK 21):
./gradlew shadowJar
java -jar build/libs/devlog-0.1.0-all.jar --helpRun devlog init for interactive setup, or create ~/.devlog/config.yml manually:
workspaces:
- /home/user/workspace
- /home/user/projects
provider: anthropic
model: claude-haiku-4-5-20251001
apiKeyEnv: ANTHROPIC_API_KEY
language: english
author: "Your Name" # optional — git author name (git config user.name)Make sure the API key is set in your environment:
export ANTHROPIC_API_KEY=sk-ant-...| Command | Description |
|---|---|
devlog init |
Interactive setup |
devlog today |
What you did today |
devlog yesterday |
What you did yesterday |
devlog week |
Weekly summary |
devlog standup |
Quick standup update |
devlog report --from 2026-03-01 --to 2026-03-05 |
Custom date range |
All generation commands support:
| Option | Description |
|---|---|
--raw |
Show stats table only, skip LLM |
--format terminal|markdown|json|slack |
Output format (default: terminal) |
--copy |
Copy narrative to clipboard |
--output FILE |
Save output to file |
--workspace PATH |
Override workspace path |
--no-cache |
Skip cached results |
# Quick standup, copy to clipboard
devlog standup --copy
# Weekly report in Markdown, save to file
devlog week --format markdown --output weekly.md
# JSON output for scripting
devlog today --format json
# Slack-formatted output
devlog today --format slack
# Stats only, no LLM call
devlog today --raw
# Custom date range
devlog report --from 2026-03-01 --to 2026-03-05Clean Architecture with strict layer separation:
presentation/ CLI commands (Clikt) + renderers (Mordant)
domain/ Use cases + models + repository interfaces
data/ Git CLI, LLM HTTP clients (Ktor), file cache
- Domain layer has zero external dependencies
- All LLM calls use Ktor Client directly (no SDK wrappers)
- DI via Koin
See CONTRIBUTING.md. Adding a new LLM provider or output format is a one-file change.
