{"id":36669620,"url":"https://github.com/craftvscruft/menderbot","last_synced_at":"2026-01-12T10:38:57.730Z","repository":{"id":181512106,"uuid":"638680731","full_name":"craftvscruft/menderbot","owner":"craftvscruft","description":"AI-powered command line tool for working with legacy code","archived":false,"fork":false,"pushed_at":"2024-03-21T14:49:50.000Z","size":376,"stargazers_count":12,"open_issues_count":3,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-21T07:13:23.873Z","etag":null,"topics":["ai","antlr4","artificial-intelligence","code-modification","large-language-models","llama-index","llm","python3","refactoring"],"latest_commit_sha":null,"homepage":"https://mender.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/craftvscruft.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}},"created_at":"2023-05-09T21:51:26.000Z","updated_at":"2025-09-29T02:13:29.000Z","dependencies_parsed_at":"2024-03-20T17:45:54.251Z","dependency_job_id":"078df5e9-2fea-4b92-9bfa-f34e1fd76021","html_url":"https://github.com/craftvscruft/menderbot","commit_stats":null,"previous_names":["craftvscruft/menderbot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/craftvscruft/menderbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftvscruft%2Fmenderbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftvscruft%2Fmenderbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftvscruft%2Fmenderbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftvscruft%2Fmenderbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/craftvscruft","download_url":"https://codeload.github.com/craftvscruft/menderbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftvscruft%2Fmenderbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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","antlr4","artificial-intelligence","code-modification","large-language-models","llama-index","llm","python3","refactoring"],"created_at":"2026-01-12T10:38:56.908Z","updated_at":"2026-01-12T10:38:57.719Z","avatar_url":"https://github.com/craftvscruft.png","language":"Python","funding_links":["https://www.patreon.com/craftvscruft"],"categories":[],"sub_categories":[],"readme":"# Menderbot\n![Version](https://img.shields.io/badge/version-0.0.4-blue.svg?cacheSeconds=2592000)\n![Tests](https://github.com/craftvscruft/menderbot/actions/workflows/ci.yml/badge.svg?branch=main)\n[![License: APACHE](https://img.shields.io/github/license/craftvscruft/menderbot)](https://github.com/craftvscruft/menderbot/blob/main/LICENSE)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/craftvscruft/menderbot/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/craftvscruft/menderbot/?branch=main)\n\n\u003e The AI-powered command line tool for working with legacy code. [Designed](./doc/DESIGN.md) based on the principles of the [Mechanized Mending Manifesto](https://mender.ai/docs/intro).\n\n## Status\n\nMenderbot is usable in development of itself - a very small codebase. For instance, it's used on this project for first drafts of commit messages, it added most of the type annotations, and chat usually gives relevant answers. On codebases of an interesting size (\u003e 10K lines) there is still much work to do.\n\n## Commands implemented (-ish):\n\n* `menderbot ask`: Ask a question about the codebase\n* `menderbot chat`: Interactively chat about the codebase\n* `menderbot commit`: Git commit the current changeset with a pre-populated commit message\n* `menderbot diff`: Summarize the differences between two versions of a codebase\n* `menderbot doc`: Generate documentation for the existing code (Python only)\n* `menderbot review`: Review a code block or changeset and provide feedback\n* `menderbot type`: Insert type hints (Python only)\n* `menderbot ingest`: Index the current state of the repo for `ask` and `chat` commands\n* `menderbot check`: Verify we have what we need to run\n\n## System requirements\n\n* Python 3.10+\n* The environment variable `OPENAI_API_KEY` set to a valid OpenAI API Key.\n* git\n* Make (you already have it)\n\n\n## Installing from source\nClone the project and install an editable version (this uses `python3 -m pip install -e .`):\n```\ngit clone git@github.com:craftvscruft/menderbot.git\n\nmake install\n```\n\n### Installing from pip\n\nYou can also install directly from pip and avoid cloning the repo: \n\n```\npip install menderbot --upgrade\n```\n\n## Running\nYou can run with `menderbot` in any repo. It's a good idea to start by running the `check` command to make sure we have what we need. For instance we will need to supply the OPENAI_API_KEY environment variable and a ``.menderbot-config.yaml` file indicating consent.\n\n```\nmenderbot check\n```\n\n### Running with Docker (advanced)\n\nIf you don't have Python, you can run from [Docker](https://docs.docker.com/get-started/overview/) using the supplied Dockerfile. Run `make docker` to build the image and print instructions on how to run it.\n\n\n## Developing\n\nClone the project...\n\n```sh\ngit clone git@github.com:craftvscruft/menderbot.git\n```\n\nThen you can initialize your Python environment using [venv](https://docs.python.org/3/library/venv.html).\n\n```sh\nmake venv\n\nsource venv/bin/activate\n\npip install \".\" \".[dev]\"\n```\n\nIf you want to re-generate the Antlr parsers, see [PARSERS.md](./doc/PARSERS.md), but you probably won't need to.\n\n### Testing\n\nFormatting, linting, tests, and type-checking can all be run with make, check the `Makefile` for the underlying commands. Run before commiting, or CI will bark :)\n\n```sh\n# Same as `make test type lint format`\nmake check\n```\n\nOr you can run individual steps if you prefer:\n\n```sh\n# Run pytest\nmake test\n\n# Run pytest with a coverage report\nmake coverage\n\n# Run mypy\nmake type\n\n# Run pylint\nmake lint\n\n# Run black and isort\nmake format\n```\n\n## Author\n\n👤 **Ray Myers**\n\n* YouTube: [Craft vs Cruft](https://www.youtube.com/channel/UC4nEbAo5xFsOZDk2v0RIGHA)\n* Twitter: [@lambdapocalypse](https://twitter.com/lambdapocalypse)\n* GitHub: [@raymyers](https://github.com/raymyers)\n* LinkedIn: [@cadrlife](https://linkedin.com/in/cadrlife)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\n\nFeel free to check [issues page](https://github.com/craftvscruft/menderbot/issues). You can also take a look at the [contributing guide](https://github.com/craftvscruft/menderbot/blob/main/CONTRIBUTING.md).\n\n## Show your support\n\nGive a ⭐️ if this project helped you!\n\u003c!-- \n[![support us](https://img.shields.io/badge/become-a%20patreon%20us-orange.svg?cacheSeconds=2592000)](https://www.patreon.com/craftvscruft) --\u003e\n\n## Acknowledgements\n\n* [OpenAI](https://platform.openai.com/docs/models/overview) GPT and Ada models\n* [LlamaIndex](https://gpt-index.readthedocs.io/en/latest/), an LLM data framework\n* [Antlr](https://www.antlr.org/) parser generator\n\n## 📝 License\n\nCopyright © 2024 [Ray Myers](https://github.com/raymyers).\n\nThis project is [Apache 2](https://www.apache.org/licenses/LICENSE-2.0) licensed.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraftvscruft%2Fmenderbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcraftvscruft%2Fmenderbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraftvscruft%2Fmenderbot/lists"}