Skip to main content

repo-map

PyPI version Python versions PyPI license PyPI downloads

Generate a repository tree with AI-authored file summaries and maintenance notes.

repo-map scans a repository, extracts structural metadata, and asks an OpenRouter model to document eligible files. It writes a Markdown tree at the repository root and stores results in SQLite so unchanged files do not need another API call.

Features

  • Markdown and console repository trees
  • Python AST extraction plus lightweight Java, JavaScript, TypeScript, and C# structure parsing
  • Structured descriptions, developer considerations, maintenance flags, dependency notes, architectural roles, refactoring suggestions, and security assessments
  • Root .gitignore support plus built-in exclusions for caches, dependencies, build output, and repo-map artifacts
  • SHA-256-based SQLite cache for unchanged files

See examples/example.md for a full sample report.

Install

Install the published CLI with uv:

uv tool install repo-map

For development, clone the repository and install its Poetry environment:

git clone https://github.com/cyanheads/repo-map.git
cd repo-map
poetry install

repo-map requires Python 3.12 or newer.

Configure

Set an OpenRouter API key in the environment or a project-root .env file:

export OPENROUTER_API_KEY=your_api_key_here

Optional environment variables:

Variable Default Purpose
OPENROUTER_MODEL_NAME anthropic/claude-sonnet-4.6 OpenRouter model
API_SEMAPHORE_LIMIT 3 Maximum concurrent API calls

repo-map sends repository paths, languages, imports, symbols, and existing descriptions to OpenRouter. Review the target repository and its ignore rules before approving a run. Do not analyze secrets or source you are not authorized to disclose.

Use

With the published tool installed:

repo-map /path/to/repository

From a source checkout:

poetry run repo-map /path/to/repository

Options:

Option Purpose
-y, --yes Skip the disclosure confirmation
--model MODEL Override OPENROUTER_MODEL_NAME
--concurrency INT Override API_SEMAPHORE_LIMIT

Examples:

poetry run repo-map /path/to/repository --model anthropic/claude-sonnet-4.6
poetry run repo-map /path/to/repository --concurrency 3 -y

Each run creates these files inside the target repository:

  • <repository>_repo_map.md: generated Markdown report
  • .repo-map-cache.db: source hashes and cached LLM metadata
  • .repo_map_structure.json: pre-enhancement structural data

Add them to the target repository's ignore rules if needed. Delete .repo-map-cache.db to force a complete reprocessing pass.

How it works

  1. Load built-in exclusions and the target repository's root .gitignore.
  2. Walk the directory tree and extract supported structural metadata.
  3. Compare file hashes with the SQLite cache.
  4. Request structured JSON metadata from OpenRouter for eligible changed files.
  5. Update the cache and write the console, JSON, and Markdown outputs.

Development

Run the local gate and build both distribution artifacts before submitting a change:

poetry run python scripts.py check
poetry build

Focused commands:

poetry run python scripts.py format
poetry run python scripts.py lint
poetry run python scripts.py test
poetry run python scripts.py list-skills

Project workflows live under skills/. Bugs and feature requests use the forms on the issues page.

License

Apache-2.0. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repo_map-0.8.1.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repo_map-0.8.1-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file repo_map-0.8.1.tar.gz.

File metadata

  • Download URL: repo_map-0.8.1.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Darwin/25.1.0

File hashes

Hashes for repo_map-0.8.1.tar.gz
Algorithm Hash digest
SHA256 e415d737dcb7266ec2cc3be0f1dd868be28bdd3e6a8027600a1d2eb490204a62
MD5 a1da59120f5e5baf40eed168542a1caf
BLAKE2b-256 7207c1a2fccf81cafd4f5c8e239eee995754bad09f54ddfaf6e24e1349b0942e

See more details on using hashes here.

File details

Details for the file repo_map-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: repo_map-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Darwin/25.1.0

File hashes

Hashes for repo_map-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5d78423e42be4a44d6a0d3784c26d31ccb769ab3549c1440abdf3316aee62ea5
MD5 ce0dceb0a013dc21ed9c88e209cee247
BLAKE2b-256 e852946b50dd214b23476e99093b989c5656f0cf042a6a3328d2cf2217f51945

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page