{"id":43784800,"url":"https://github.com/crstian19/llamit","last_synced_at":"2026-04-10T18:03:33.206Z","repository":{"id":336514154,"uuid":"1149966645","full_name":"crstian19/llamit","owner":"crstian19","description":"A VS Code extension to generate semantic commit messages using your local Ollama LLM instance.","archived":false,"fork":false,"pushed_at":"2026-02-07T09:53:40.000Z","size":21555,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-10T00:37:24.484Z","etag":null,"topics":["ai","git","ollama","vscode-extension"],"latest_commit_sha":null,"homepage":"https://llamit.crstian.me","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crstian19.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-04T18:18:49.000Z","updated_at":"2026-02-09T23:15:09.000Z","dependencies_parsed_at":"2026-02-08T22:00:58.430Z","dependency_job_id":null,"html_url":"https://github.com/crstian19/llamit","commit_stats":null,"previous_names":["crstian19/llamit"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/crstian19/llamit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crstian19%2Fllamit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crstian19%2Fllamit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crstian19%2Fllamit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crstian19%2Fllamit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crstian19","download_url":"https://codeload.github.com/crstian19/llamit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crstian19%2Fllamit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29322733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T20:44:44.282Z","status":"ssl_error","status_checked_at":"2026-02-10T20:44:43.393Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","git","ollama","vscode-extension"],"created_at":"2026-02-05T19:02:09.713Z","updated_at":"2026-04-10T18:03:33.200Z","avatar_url":"https://github.com/crstian19.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Llamit - AI-Powered Commit Messages\n\n\u003cimg src=\"https://cdn.crstian.me/llamit.jpg\" alt=\"Llamit Logo\" width=\"200\"/\u003e\n\n![License](https://img.shields.io/github/license/crstian19/llamit?style=for-the-badge\u0026logo=unlicense\u0026logoColor=white)\n![Build Status](https://img.shields.io/github/actions/workflow/status/crstian19/llamit/publish.yml?style=for-the-badge\u0026logo=githubactions\u0026logoColor=white\u0026label=Build)\n![VS Code Marketplace Installs](https://img.shields.io/visual-studio-marketplace/i/Crstian.llamit?style=for-the-badge\u0026label=VS%20Code%20Marketplace%20Downloads)\n![Open VSX Downloads](https://img.shields.io/open-vsx/dt/Crstian/llamit?style=for-the-badge\u0026logo=vscodium\u0026logoColor=white\u0026label=Open%20VSX%20downloads\u0026color=blueviolet)\n![VS Code](https://img.shields.io/badge/VS%20Code-1.85.0+-007ACC?style=for-the-badge\u0026logo=visualstudiocode\u0026logoColor=white)\n![Go Version](https://img.shields.io/badge/Go-1.25.6-00ADD8?style=for-the-badge\u0026logo=go\u0026logoColor=white)\n![Ollama](https://img.shields.io/badge/Ollama-powered-black?style=for-the-badge\u0026logo=ollama\u0026logoColor=white)\n\n\u003e ✨ **Fully vibecoded** - This project was entirely developed using AI assistance, showcasing the power of AI-driven development.\n\n**Generate semantic commit messages using your local Ollama LLM instance.**\n\n*No cloud services, no API keys - everything runs locally.*\n\n\u003c/div\u003e\n\n## Features\n\n- 🚀 **Generate commit messages instantly** from staged changes\n- 🔒 **Fully local** - uses your own Ollama instance\n- 📝 **Conventional Commits** - follows standard commit message format\n- ⚡ **Fast** - powered by a lightweight Go CLI\n- 🎨 **VS Code integration** - seamless SCM toolbar button\n\n## Prerequisites\n\n- [Ollama](https://ollama.ai/) installed and running locally\n- A compatible model (default: `qwen2.5-coder:7b`, but any model works)\n- VS Code 1.85.0 or higher\n\n## Installation\n\n### Option 1: From VS Code Marketplace (Recommended)\n1. Open VS Code\n2. Go to Extensions view (`Ctrl+Shift+X` / `Cmd+Shift+X`)\n3. Search for \"Llamit\"\n4. Click **Install**\n\n### Option 2: Build from Source\n```bash\n# Clone the repository\ngit clone https://github.com/crstian19/llamit.git\ncd llamit\n\n# Build the Go CLI\ncd go-cli\ngo build -o cli main.go\n\n# Build the VS Code extension\ncd ../vscode-extension\nnpm install\nnpm run compile\n\n# Package the extension\nnpx vsce package\n# Install the generated .vsix file in VS Code\n```\n```\n\n## Usage\n\n1. **Start Ollama**: Make sure Ollama is running\n   ```bash\n   ollama serve\n   ```\n\n2. **Stage your changes**: Use Git to stage the files you want to commit\n   ```bash\n   git add .\n   ```\n\n3. **Generate commit message**:\n   - Click the ✨ **Llamit** button in the Source Control toolbar, or\n   - Open Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`)\n   - Run: `Llamit: Generate Commit Message`\n\n4. **Review and commit**: The generated message appears in the commit input box. Review it and commit!\n\n## Configuration\n\nYou can customize Llamit in VS Code settings:\n\n```json\n{\n  \"llamit.ollamaUrl\": \"http://localhost:11434/api/generate\",\n  \"llamit.model\": \"qwen2.5-coder:7b\",\n  \"llamit.commitFormat\": \"conventional\",\n  \"llamit.customFormat\": \"\"\n}\n```\n\n### Settings\n\n- **`llamit.ollamaUrl`**: The Ollama API endpoint URL (default: `http://localhost:11434/api/generate`)\n- **`llamit.model`**: The model to use for generation (default: `qwen2.5-coder:7b`)\n- **`llamit.commitFormat`**: The commit message format to use (default: `conventional`)\n  - Available formats: `conventional`, `angular`, `gitmoji`, `karma`, `semantic`, `google`, `custom`\n- **`llamit.customFormat`**: Custom format template (only used when `commitFormat` is set to `custom`)\n\n### Commit Message Formats\n\nLlamit supports multiple commit message formats to match your team's conventions:\n\n#### Conventional Commits (Default)\n```\nfeat(auth): add user login functionality\n\nImplements OAuth2 authentication flow\n```\n\n#### Angular\n```\nfeat(core): implement user authentication\n\n- Add login service\n- Add auth guard\n- Update routing\n\nCloses #123\n```\n\n#### Gitmoji\n```\n✨ feat(api): add new endpoint for user profiles\n\nImplements GET /api/users/:id endpoint\n```\n\n#### Karma\n```\nfeat(ui): add dark mode toggle\n\nImplements theme switching functionality\n```\n\n#### Semantic\n```\nfeat: implement user authentication system\n\nComplete OAuth2 integration with JWT tokens\n```\n\n#### Google\n```\nAdd user authentication system\n\nImplements a complete authentication flow using OAuth2 and JWT tokens.\nIncludes login, logout, and token refresh functionality.\n```\n\n#### Custom Format\nSet `llamit.commitFormat` to `custom` and provide your own template in `llamit.customFormat`:\n\n```json\n{\n  \"llamit.commitFormat\": \"custom\",\n  \"llamit.customFormat\": \"Generate a simple commit message:\\n\u003caction\u003e: \u003cdescription\u003e\\n\\nRules:\\n1. Keep it under 50 characters\\n2. Use imperative mood\"\n}\n```\n\n### Recommended Models\n\nAny Ollama model works, but these are optimized for code:\n- `qwen2.5-coder:7b` - Great balance of quality and speed (default)\n- `qwen2.5-coder:14b` - Better quality, slower\n- `codellama:13b` - Good alternative\n- `deepseek-coder:6.7b` - Fast and efficient\n\n## Architecture\n\nLlamit consists of two components:\n\n### 1. Go CLI (`go-cli/`)\nA standalone command-line tool that:\n- Reads git diffs from stdin\n- Sends them to Ollama with a prompt template\n- Returns a formatted commit message\n- Implements retry logic with exponential backoff\n- Handles errors gracefully\n\n### 2. VS Code Extension (`vscode-extension/`)\nA TypeScript extension that:\n- Integrates with VS Code's Source Control view\n- Executes `git diff --cached` to get staged changes\n- Spawns the Go CLI as a subprocess\n- Populates the commit message box with the result\n\n## Development\n\n### Running Tests\n\n**Go CLI:**\n```bash\ncd go-cli\ngo test -v              # All tests\ngo test -v -short       # Unit tests only (skip integration)\n```\n\n**VS Code Extension:**\n```bash\ncd vscode-extension\nnpm run test:unit       # Fast unit tests\nnpm test               # Full integration tests\n```\n\n### File Structure\n\n```\nllamit/\n├── go-cli/              # Go CLI binary\n│   ├── main.go          # Core logic\n│   ├── main_test.go     # Comprehensive tests\n│   └── go.mod           # Go module file\n├── vscode-extension/    # VS Code extension\n│   ├── src/\n│   │   ├── extension.ts # Extension entry point\n│   │   └── test/        # Unit and integration tests\n│   ├── package.json     # Extension manifest\n│   └── tsconfig.json    # TypeScript config\n└── CLAUDE.md           # AI assistant documentation\n```\n\n## Testing\n\nBoth components have comprehensive test coverage:\n\n- **Go CLI**: 6 test cases covering success, errors, retries, and integration\n- **VS Code Extension**: Unit tests + integration tests for all core functions\n\nSee [CLAUDE.md](./CLAUDE.md) for detailed testing information.\n\n## Contributing\n\nContributions are welcome! This project was vibecoded, but that doesn't mean it can't be improved by humans too 😊\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit your changes: `git commit -m 'feat: add amazing feature'`\n4. Push to the branch: `git push origin feature/amazing-feature`\n5. Open a Pull Request\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines.\n\n## Releases\n\n📋 **See all release notes on the [GitHub Releases page](https://github.com/crstian19/llamit/releases)**\n\nLlamit uses automated CI/CD for releases:\n- ✅ Automatic releases on merge to `main`\n- 📦 Platform-specific packaging (6 platforms)\n- 🚀 Automatic publishing to VS Code Marketplace and Open VSX\n\nFor maintainers: See [.github/RELEASE.md](.github/RELEASE.md) for detailed release process documentation.\n\n## Telemetry\n\nLlamit collects minimal anonymous usage data (install/update events and editor name) to understand adoption across editors like VS Code, VSCodium, and Cursor. No PII, code, or usage frequency is ever collected.\n\nYou can opt out at any time by setting `llamit.telemetry.enabled` to `false`. See [USAGE_DATA.md](./USAGE_DATA.md) for full details.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n- Built with [Claude](https://claude.ai) - AI pair programming at its finest\n- Powered by [Ollama](https://ollama.ai) - local LLM runtime\n- Inspired by the need for better commit messages everywhere\n\n---\n\n**Made with 🤖 and ✨ through vibecoding**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrstian19%2Fllamit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrstian19%2Fllamit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrstian19%2Fllamit/lists"}