{"slug": "git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key", "title": "git-commit-at: Generate conventional commit messages locally with AI (no API key needed)", "summary": "A developer built git-commit-at, an npm CLI tool that generates conventional commit messages from staged git diffs using a local AI model via Ollama, ensuring no data leaves the machine. The tool runs entirely offline after an initial model download and requires only Docker and Node.js 18+.", "body_md": "We all know the commit history that looks like this:\n\nfix\n\nwip\n\nactually fix\n\nupdate\n\nFINAL fix\n\nAI tools can help, but most of them send your code diff to the cloud and require a paid API key. That's a non-starter for private repos or sensitive codebases.\n\nWhat I built\n\ngit-commit-at is an npm CLI that analyzes your staged diff and suggests 3 conventional commit messages using a locally-running AI model. Nothing leaves your machine.\n\nnpm install -g git-commit-at\n\nThen, in any git repo:\n\ngit add .\n\ngit-commit-at\n\nYou get an interactive prompt to pick a message, optionally add a ticket number (JIRA, Linear, etc.), and confirm. Done.\n\nHow it works under the hood\n\ngit-commit-at (CLI)\n\n│\n\n├── Checks if Docker services are running\n\n│ ├── Ollama — runs qwen2.5-coder:1.5b locally (port 11434)\n\n│ ├── Redis — session + cache (port 6379)\n\n│ └── Gradio — web UI for login/history (port 7860)\n\n│\n\n├── Reads your staged git diff\n\n├── Streams 3 commit suggestions from Ollama\n\n├── You pick one (and optionally add a ticket prefix)\n\n└── Runs git commit\n\nOn first run, Docker pulls the model (~1 GB) and starts the services. After that, suggestions take about 5–10 seconds.\n\nFeatures\n\nFeature Details\n\nAI suggestions 3 per run, based on your actual diff\n\nConventional commits feat:, fix:, refactor:, chore:, etc.\n\nTicket integration Prefix with JIRA/Linear ticket numbers\n\nBranch visualizer Live git DAG in the web UI\n\nCommit history Tracked across all your repos\n\nFully offline After first model download\n\nPrivacy 100% local — no data sent anywhere\n\nRequirements\n\nDocker (all backend services run in containers)\n\nNode.js 18+\n\nThat's it. No Ollama install, no Python setup, no API keys.\n\nInstall\n\nnpm install -g git-commit-at\n\nGitHub: [https://github.com/bhargavirengarajan21/git-commit-at](https://github.com/bhargavirengarajan21/git-commit-at)\n\nnpm: [https://www.npmjs.com/package/git-commit-at](https://www.npmjs.com/package/git-commit-at)\n\nHugging face: [https://huggingface.co/spaces/build-small-hackathon/git-commit-app](https://huggingface.co/spaces/build-small-hackathon/git-commit-app)\n\nFeedback welcome — especially on the Docker requirement and model choice. I'm considering making the model configurable as a first-class setting.\n\nBoth posts are ready to copy-paste. For dev.to, paste as Markdown and set the tags to git, ai, opensource, devtools. Add a cover image and a demo GIF if you have one — posts with visuals get significantly more reach there.", "url": "https://wpnews.pro/news/git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key", "canonical_source": "https://dev.to/bhargavirengarajan21/git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key-needed-1nc4", "published_at": "2026-06-15 22:20:51+00:00", "updated_at": "2026-06-15 22:47:07.706120+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "large-language-models", "ai-tools"], "entities": ["git-commit-at", "Ollama", "Docker", "Node.js", "qwen2.5-coder:1.5b", "Redis", "Gradio", "JIRA"], "alternates": {"html": "https://wpnews.pro/news/git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key", "markdown": "https://wpnews.pro/news/git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key.md", "text": "https://wpnews.pro/news/git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key.txt", "jsonld": "https://wpnews.pro/news/git-commit-at-generate-conventional-commit-messages-locally-with-ai-no-api-key.jsonld"}}