A powerful Git-aware repository assistant powered by LiteLLM and smolagents.
Project description
👁️ repo-lens
Your repository's third eye.
Forget manually digging through git logs and grepping for context. repo-lens combines deep Git history analysis with advanced AI reasoning to give you instant clarity on your codebase. Whether you're hunting for the origin of a bug or summarizing years of commits, repo-lens sees what you might miss.
Powered by smolagents for iterative reasoning and LiteLLM for universal model support (OpenAI, Anthropic, Ollama, Qwen, and more).
🛠️ Prerequisites
Before you start peering into your repos, ensure you have:
- Python 3.11 or higher.
- Git installed and available in your PATH.
- Access to an LLM provider:
- Cloud: OpenAI, Anthropic, etc. (API Key required).
- Local: LM Studio, Ollama, or vLLM (OpenAI-compatible server running).
🚀 Installation
Install repo-lens directly from this repository for the latest features:
# Using uv (recommended)
uv tool install repo-lens
# Using pip
pip install repo-lens
To build from source:
git clone https://github.com/satishjasthi/repo-lens.git
cd repo-lens
uv sync
⚙️ Getting Started
repo-lens is configured via environment variables or a .env file in your current directory.
Create a .env file:
# LLM Configuration
REPO_LENS_PROVIDER=openai # openai, anthropic, ollama, etc.
REPO_LENS_MODEL=openai/gpt-oss-20b # Your model identifier
REPO_LENS_API_BASE=http://localhost:1234/v1 # Base URL for local SLMs
REPO_LENS_API_KEY=sk-... # Your API key (if needed)
# Repo Settings
REPO_LENS_REPO=/path/to/your/repo # Optional defaults to current dir
REPO_LENS_TIMEOUT=60 # HTTP timeout
🤖 Running the Agent
The agent command (Iterative Reasoning)
The agent command is the powerhouse of repo-lens. It doesn't just guess; it reasons. It plans Git commands, observes the results, and refines its search until it finds the answer.
repo-lens agent "Who added the bedrock support and what files did they change?"
The ask command (Quick Context)
For simple questions based on the recent history and current state:
repo-lens ask "Summarize the changes in the last 5 commits"
Thin Git Wrappers
repo-lens also includes thin wrappers for common Git tasks:
repo-lens git status
repo-lens git log --limit 5
repo-lens shell "ls -la"
📦 PyPI Publishing
Built with uv, repo-lens is ready for the world. To publish your own version:
- Update
pyproject.tomlwith your details. - Build the package:
uv build - Publish to PyPI:
uv publish
Author: Satish Jasthi
License: MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repo_lens-0.1.3.tar.gz.
File metadata
- Download URL: repo_lens-0.1.3.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16a8585c665fd9e30531e924ec38ec654481d343edc4a36cfb42e1a21694eb6c
|
|
| MD5 |
ff4a48c001c9a06fecfe650f47590c36
|
|
| BLAKE2b-256 |
6dba2baec5c815a0e5005e0c48dd72c41335a9fb6dc49dd5c44edfb4e126dab9
|
Provenance
The following attestation bundles were made for repo_lens-0.1.3.tar.gz:
Publisher:
release.yaml on satishjasthi/repo_lens
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_lens-0.1.3.tar.gz -
Subject digest:
16a8585c665fd9e30531e924ec38ec654481d343edc4a36cfb42e1a21694eb6c - Sigstore transparency entry: 953011164
- Sigstore integration time:
-
Permalink:
satishjasthi/repo_lens@ac58fb77114f3b0b87ba3f02a0c221c70c8a58aa -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/satishjasthi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@ac58fb77114f3b0b87ba3f02a0c221c70c8a58aa -
Trigger Event:
push
-
Statement type:
File details
Details for the file repo_lens-0.1.3-py3-none-any.whl.
File metadata
- Download URL: repo_lens-0.1.3-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61b745b395b9947c7a74fe70e5729c98b86e17a7d20d7d776530436a9a1f4970
|
|
| MD5 |
ad08bafd54ac14e171c7b1f082a49447
|
|
| BLAKE2b-256 |
bcb1e62ab0678d0d261b164f77942e97b4225ae23704a57bf038328831f39450
|
Provenance
The following attestation bundles were made for repo_lens-0.1.3-py3-none-any.whl:
Publisher:
release.yaml on satishjasthi/repo_lens
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_lens-0.1.3-py3-none-any.whl -
Subject digest:
61b745b395b9947c7a74fe70e5729c98b86e17a7d20d7d776530436a9a1f4970 - Sigstore transparency entry: 953011168
- Sigstore integration time:
-
Permalink:
satishjasthi/repo_lens@ac58fb77114f3b0b87ba3f02a0c221c70c8a58aa -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/satishjasthi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@ac58fb77114f3b0b87ba3f02a0c221c70c8a58aa -
Trigger Event:
push
-
Statement type: