Built with:
Tool that just makes your open source project better using LLM agents
Tool that just makes your open source project better using LLM agents
Built with:
OSA (Open-Source-Advisor) is a LLM-based tool for improving the quality of scientific open source projects and helping create them from scratch. It automates the generation of README, different levels of documentation, CI/CD scripts, etc. It also generates advices and recommendations for the repository.
Here is a short video:
README file generation: Automates the creation of a clear and structured README file for a repository, including projects based on research papers.
Documentation generation: Automatically generates docstrings for Python code.
Automatic implementation of changes: Clones the repository, creates a branch, commits and pushes changes, and creates a pull request with proposed changes.
Various LLMs: Use OSA with an LLM accessible via API (e.g., OpenAI, VseGPT, Ollama), a local server, or try an osa_bot hosted on ITMO servers.
Workflow Generator: Automatically generates customizable CI/CD workflows for Python repositories, including unit tests, code formatting, PEP 8 compliance checks, and PyPI publication.
Install Open-Source-Advisor using one of the following methods:
Using PyPi:
pip install osa_toolBuild from source:
git clone https://github.com/aimclub/OSAcd Open-Source-AdvisorUsing pip
pip install -r requirements.txt
poetry install OSA requires Python 3.11 or higher.
The .env file is required to specify the LLM API key (OPENAI_API_KEY or AUTHORIZATION_KEY) and optionally a Git token. The Git token (GIT_TOKEN) may be omitted if you plan to work with a public repository without creating a fork (using the --no-fork option).
Alternatively, instead of GIT_TOKEN, you can use GITHUB_TOKEN, GITLAB_TOKEN, or GITVERSE_TOKEN for GitHub, GitLab, and Gitverse respectively.
When running osa-tool from CLI, you need to set the GIT_TOKEN and API key first:
# Linux / macOS (bash/zsh)
export OPENAI_API_KEY=<your_api_key>
export GIT_TOKEN=<your_git_token>
# Windows (PowerShell)
setx OPENAI_API_KEY "<your_api_key>"
setx GIT_TOKEN "<your_git_token>"| Token name | Description | Mandatory |
|---|---|---|
GIT_TOKEN |
Personal GitHub/GitLab/Gitverse token used to clone private repositories, access metadata, and interact with its API. | Yes |
OPENAI_API_KEY |
API key for accessing OpenAI, vsegpt and openrouter providers | No |
AUTHORIZATION_KEY |
API key for gigachat provider | No |
X-API-Key |
API key for the pepy.tech REST API, used to fetch Python package download statistics | No |
Run Open-Source-Advisor using the following command:
The --attachment option enables you to choose a README template for a repository based on an article. You can provide either a link to a PDF file of the article or a path to a local PDF file after the --attachment option. If you are using Docker, ensure that you upload the PDF file to the OSA folder before building the image, then, specify the path as /app/OSA/... or just use volume mounting to access the file.
The --generate-workflows option is intended to create customizable CI/CD pipelines for Python repositories. For detailed documentation, see the Workflow Generator README.
| Flag | Description | Default |
|---|---|---|
-r, --repository |
URL of the GitHub/GitLab/Gitverse repository (Mandatory) | |
-b, --branch |
Branch name of the repository | Default branch |
-o, --output |
Path to the output directory | Current working directory |
--api |
LLM API service provider | openai |
--base-url |
URL of the provider compatible with API OpenAI | https://openrouter.ai/api/v1 |
--model |
Specific LLM model to use | gpt-3.5-turbo |
--top_p |
Nucleus sampling probability | 0.95 |
--temperature |
Sampling temperature to use for the LLM output (0 = deterministic, 1 = creative). | 0.05 |
--max_tokens |
Maximum number of output tokens the model can generate in a single response | 4096 |
--context_window |
Total number of model context (Input + Output) | 16385 |
--attachment |
Path to a local PDF or .docx file, or a URL to a PDF resource | None |
-m, --mode |
Operation mode for repository processing: basic, auto (default), or advanced. |
auto |
--delete-dir |
Enable deleting the downloaded repository after processing | disabled |
--no-fork |
Avoid create fork for target repository | False |
--no-pull-request |
Avoid create pull request for target repository | False |
Also OSA supports custom configuration via TOML files. Use the --config-file option to specify a path to custom
configuration file. If no custom configuration file is provided, OSA will use the default configuration.
By default, OSA uses a single model for all tasks (specified via --model). If you want to use different models for
different types of tasks, disable the --use-single-model flag and specify models for each task type (
--model-docstring, --model-readme, --model-validation, --model-general).
To learn how to work with the interactive CLI and view descriptions of all available keys, visit the CLI usage guide.
Examples of generated README files are available in examples.
URL of the GitHub/GitLab/Gitverse repository, LLM API service provider (optional) and Specific LLM model to use (optional) are required to use the generator.
Supported LLM providers are available as part of the ProtoLLM ecosystem. See the connectors directory for the full list.
Local ITMO model:
python -m osa_tool.run -r https://github.com/aimclub/OSA --base-url [ITMO_MODEL_URL]For this API provider itmo model url must be specified in dotenv (ITMO_MODEL_URL=) or in the --base-url argument.
OpenAI:
python -m osa_tool.run -r https://github.com/aimclub/OSA --api openaiVseGPT:
python -m osa_tool.run -r https://github.com/aimclub/OSA --api openai --base-url https://api.vsegpt.ru/v1 --model openai/gpt-3.5-turboOpenrouter:
python -m osa_tool.run -r https://github.com/aimclub/OSA --api openai --base-url https://openrouter.ai/api/v1 --model qwen/qwen3-30b-a3b-instruct-2507Ollama:
python -m osa_tool.run -r https://github.com/aimclub/OSA --api ollama --base-url http://[YOUR_OLLAMA_IP]:11434 --model gemma3:27bDetailed description of OSA API is available here.
In our Telegram chat OSA_helpdesk you can ask questions about working with OSA and find the latest news about the project.
In English:
In Russian:
This project is protected under the BSD 3-Clause "New" or "Revised" License. For more details, refer to the LICENSE file.
The project is supported as ITMO University Research Project in AI Initiative (RPAII).
OSA is tested by the members of ITMO OpenSource community. Useful content from community is available in Open-source-ops
Also, we thank Readme-ai for their code that we used as a foundation for our own version of README generator.
If you use this software, please cite it as below.
Nikitin N. et al. An LLM-Powered Tool for Enhancing Scientific Open-Source Repositories // Championing Open-source DEvelopment in ML Workshop@ ICML25.
@inproceedings{nikitinllm,
title={An LLM-Powered Tool for Enhancing Scientific Open-Source Repositories},
author={Nikitin, Nikolay and Getmanov, Andrey and Popov, Zakhar and
Ulyanova Ekaterina and Aksenkin, Yaroslav and
Sokolov, Ilya and Boukhanovsky, Alexander},
booktitle={Championing Open-source DEvelopment in ML Workshop@ ICML25}}| Version | Changes | Urgency | Date |
|---|---|---|---|
| v0.2.11 | ## What's Changed * Improve validate-paper and validate-doc pipeline by @BubbleNeumann in https://github.com/aimclub/OSA/pull/378 * docs: create FAQ by @DRMPN in https://github.com/aimclub/OSA/pull/412 * ci: split documentation job into separate build and deploy by @DRMPN in https://github.com/aimclub/OSA/pull/427 * feature: Add multiagent-based README generation by @fl1pcoin in https://github.com/aimclub/OSA/pull/433 * feat: improve validation report by @DRMPN in https://github.com/aimclub | High | 5/13/2026 |
| v0.2.10 | ## What's Changed * docs: add ci status badge by @DRMPN in https://github.com/aimclub/OSA/pull/408 * Fix error when file of report doesn't exist by @korhenon in https://github.com/aimclub/OSA/pull/407 * Feature/Add mvp manual reviewer agent by @fl1pcoin in https://github.com/aimclub/OSA/pull/401 * Refactor/Refactor workflow generator by @fl1pcoin in https://github.com/aimclub/OSA/pull/411 * Improvement/Docstring insertion via libcst by @Tendo1904 in https://github.com/aimclub/OSA/pull/402 | Medium | 3/26/2026 |
| v0.2.7 | ## What's Changed * Fixed bug #346. Desctiption of PR now updating after reruns by @HammonDDDDD in https://github.com/aimclub/OSA/pull/352 * IntentRouter, RepoAnalysis, Planner agents MVP by @fl1pcoin in https://github.com/aimclub/OSA/pull/370 * feature: Add whitelist for source files for CodeAnalyzer by @BubbleNeumann in https://github.com/aimclub/OSA/pull/375 * feature: Add executor agent by @fl1pcoin in https://github.com/aimclub/OSA/pull/383 * feature: Add autodetection of model provide | Low | 2/25/2026 |
| v0.2.6 | ## What's Changed * Docgen ignorelist by @Tendo1904 in https://github.com/aimclub/OSA/pull/323 * Feature/OSA-Agent-first-iteration by @fl1pcoin in https://github.com/aimclub/OSA/pull/349 * Refactor: Added async methods for validating docs and papers by @Shtirmann in https://github.com/aimclub/OSA/pull/357 * Feature/add after report by @korhenon in https://github.com/aimclub/OSA/pull/360 * feature: add --author parameter by @DRMPN in https://github.com/aimclub/OSA/pull/369 ## New Contribu | Low | 12/23/2025 |
| v0.2.5.1 | ## What's Changed * hotfix/update json parser by @fl1pcoin in https://github.com/aimclub/OSA/pull/329 * feature: add allowed providers for external API by @DRMPN in https://github.com/aimclub/OSA/pull/330 * hotfix/fix retry for translate readme by @fl1pcoin in https://github.com/aimclub/OSA/pull/331 * Bump version from 0.2.5.0 to 0.2.5.1 by @DRMPN in https://github.com/aimclub/OSA/pull/332 **Full Changelog**: https://github.com/aimclub/OSA/compare/v0.2.5...v0.2.5.1 | Low | 11/30/2025 |
| v0.2.5 | ## What's Changed * docs/update examples for flags by @fl1pcoin in https://github.com/aimclub/OSA/pull/324 * Add PR existence check and fix links in community docs by @Ekarerina-Ulyanova in https://github.com/aimclub/OSA/pull/326 * feature: add llm tokens limit by @DRMPN in https://github.com/aimclub/OSA/pull/327 **Full Changelog**: https://github.com/aimclub/OSA/compare/v0.2.4.0...v0.2.5 | Low | 11/27/2025 |
| v0.2.4.0 | ## What's Changed * feature: validate paper/doc against repo by @DRMPN in https://github.com/aimclub/OSA/pull/301 * Add tests for git class by @fl1pcoin in https://github.com/aimclub/OSA/pull/312 * refactor/Actualize multi processing repos by @fl1pcoin in https://github.com/aimclub/OSA/pull/306 * feature/Add logs writing by @fl1pcoin in https://github.com/aimclub/OSA/pull/314 * Bugfix/enable support for GitLab servers by @Ekarerina-Ulyanova in https://github.com/aimclub/OSA/pull/310 * Fix/ | Low | 11/20/2025 |
| v0.2.3.1 | ## What's Changed * Refactor/change dependencies by @fl1pcoin in https://github.com/aimclub/OSA/pull/302 **Full Changelog**: https://github.com/aimclub/OSA/compare/v0.2.3...v0.2.3.1 | Low | 10/25/2025 |
| v0.2.3 | ## What's Changed * hotfix/fix quotes on python 3.11 by @fl1pcoin in https://github.com/aimclub/OSA/pull/282 * feature/get citation from readme by @fl1pcoin in https://github.com/aimclub/OSA/pull/284 * Add README translation by @fl1pcoin in https://github.com/aimclub/OSA/pull/295 * Bugfix/corner cases by @Tendo1904 in https://github.com/aimclub/OSA/pull/290 * Reformat git classes by @Ekarerina-Ulyanova in https://github.com/aimclub/OSA/pull/297 * Bugfix/robust parsing of invalid JSON from | Low | 10/20/2025 |
| v0.2.2 | ## What's Changed * Citation changed by @nicl-nno in https://github.com/aimclub/OSA/pull/255 * fixed event loop missing from main thread by @MikhaelProskurin in https://github.com/aimclub/OSA/pull/269 * Fix/init at project root by @Tendo1904 in https://github.com/aimclub/OSA/pull/247 * Refactor/refactor tests by @fl1pcoin in https://github.com/aimclub/OSA/pull/252 * Actualize README by @fl1pcoin in https://github.com/aimclub/OSA/pull/264 * Get default values from config by @fl1pcoin in htt | Low | 9/4/2025 |
| v0.2.1.1 | ## What's Changed * Feature/docgen multithreading by @MikhaelProskurin in https://github.com/aimclub/OSA/pull/246 **Full Changelog**: https://github.com/aimclub/OSA/compare/v0.2.1...v0.2.1.1 | Low | 8/19/2025 |
| v0.2.1 | ## What's Changed * Improve log output for Git by @fl1pcoin in https://github.com/aimclub/OSA/pull/219 * Rename api provider llama -> itmo by @pankovakris in https://github.com/aimclub/OSA/pull/227 * Fix regular expression in SourceRank module by @fl1pcoin in https://github.com/aimclub/OSA/pull/232 * fix: incorrect branch for converted notebooks by @DRMPN in https://github.com/aimclub/OSA/pull/231 * Bugfix/regex by @Tendo1904 in https://github.com/aimclub/OSA/pull/221 * Concurrent API call | Low | 8/13/2025 |
| v0.2.0.1 | ## What's Changed * Small fixes in updating about section on Gitverse by @Ekarerina-Ulyanova in https://github.com/aimclub/OSA/pull/222 **Full Changelog**: https://github.com/aimclub/OSA/compare/v0.2.0...v0.2.0.1 | Low | 7/25/2025 |
| v0.2.0 | Hello everyone! We are excited to announce **the new 0.2.0 release** of our OSA 🐝 package on PyPI! ## What's Changed * Minor fixes in main pipeline and codestyle by @nicl-nno in https://github.com/aimclub/OSA/pull/155 * feat: Add generator for GitHub Repository's "About" Section by @DRMPN in https://github.com/aimclub/OSA/pull/142 * MacOS workaround by @nicl-nno in https://github.com/aimclub/OSA/pull/164 * Update black.yml by @jrzkaminski in https://github.com/aimclub/OSA/pull/166 * | Low | 7/24/2025 |
| v0.1.3 | ## What's Changed * Correct the report layout by @fl1pcoin in https://github.com/aimclub/OSA/pull/117 * Rework readmeai by @fl1pcoin in https://github.com/aimclub/OSA/pull/114 * Ci cd by @glad4enkonm in https://github.com/aimclub/OSA/pull/127 * Specify repository's base branch name by @DRMPN in https://github.com/aimclub/OSA/pull/125 * Attach a PDF report to PR by @DRMPN in https://github.com/aimclub/OSA/pull/126 * License compiling added by @Tendo1904 in https://github.com/aimclub/OSA/pul | Low | 5/19/2025 |
| v0.1.2 | ## What's Changed * Update README and Dockerfile by @fl1pcoin in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/98 * Minor changes in README generation by @nicl-nno in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/97 * Gen analytics by @fl1pcoin in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/89 * Fix of openai connector bug by @andreygetmanov in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/103 * Unit tests for osa_tool by @fl1pcoin in https: | Low | 4/4/2025 |
| v0.1.1 | We made some minor changes to v0.1.0 release: ## What's Changed * Added a new llm provider - Ollama by @glad4enkonm in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/91 * Implement PyPi Release Action by @DRMPN in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/90 * Pypi release fix by @andreygetmanov in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/95 ## New Contributors * @glad4enkonm made their first contribution in https://github.com/ITMO-NSS-team/O | Low | 3/20/2025 |
| v0.1.0 | Hello everyone, We are excited to announce the release of the first version of our OSA 🐝 package on PyPI! You can find the PyPI release here: https://pypi.org/project/osa_tool/0.1.0/ ## What's Changed * Implement end-to-end readme generation by @fl1pcoin in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/18 * Add Dockerfile by @Ekarerina-Ulyanova in https://github.com/ITMO-NSS-team/Open-Source-Advisor/pull/22 * Added github_agent.py by @andreygetmanov in https://github.com | Low | 3/17/2025 |