Skip to main content

Converge: repository-scoped dependency intelligence for Python

PyPI Python 3.12+ Typed with mypy Coverage floor MIT License

Scan a Python repository, build a repo-local dependency graph, diagnose drift, create an environment, and apply validated manifest repairs.


Why Converge

Dependency tools usually answer one narrow question: what is in the manifest, what is in the lockfile, or what can be installed. Converge looks at the repository as a system.

It reads manifests, parses imports, stores a graph inside the target repo, and uses that graph to explain what is missing, unused, or ready to repair. Every command is scoped to the path you pass in, so running Converge from one directory never silently writes state into another project.

repo path -> scan -> .converge/graph.db -> doctor/explain/create/fix/export

What It Does Today

Capability What happens
scan Parses pyproject.toml, requirements*.txt, Python imports, and service routes into .converge/graph.db.
doctor Reports unresolved imports, unused dependencies, version clashes, and lockfile hints.
explain Shows why an entity or conflict exists in the graph.
create Builds a repository-local .venv from graph package nodes.
fix Generates repair plans and applies validated dependency additions.
export Writes graph data to JSON or CSV under .converge/exports/.
clean Removes Converge-generated repo-local artifacts.

Converge is intentionally conservative: repairs are validated in isolation before host manifests are changed, and current repair planning focuses on dependency additions for unresolved imports.

Install

uv tool install converge-cli

or:

pipx install converge-cli

For local development:

git clone <your-repo-url>
cd converge
uv sync --dev

Quick Start

Given a repository with:

import requests

and a manifest that does not declare requests:

[project]
name = "demo"
dependencies = []

Run:

converge scan .
converge doctor .
converge fix .
converge fix . --apply

After validation, Converge updates the target repository manifest and records the repair in .converge/audit.log.

Command Guide

Scan

converge scan /path/to/repo
converge scan /path/to/repo --dry-run

scan builds the graph from declared dependencies, imports, and detected services. Without --dry-run, the graph is persisted to /path/to/repo/.converge/graph.db.

Doctor

converge doctor /path/to/repo

doctor exits 0 when no actionable issues are found and 1 when dependency issues are detected. If no graph exists, it exits with an error and tells you to run scan.

Explain

converge explain conflict:unresolved_mod:main.py_pkg:requests /path/to/repo
converge explain pkg:requests /path/to/repo

Use explain when you want the graph context behind a conflict or entity.

Create

converge create /path/to/repo --provider uv
converge create /path/to/repo --provider uv --python 3.12

create loads the repository graph, creates /path/to/repo/.venv, installs graph package nodes, and prints the activation command.

Fix

converge fix /path/to/repo
converge fix /path/to/repo --apply

Dry-run mode prints candidate plans and changes nothing. --apply validates a plan in an isolated sandbox, writes the selected manifest repair, and appends an audit event.

Export

converge export /path/to/repo --format json
converge export /path/to/repo --format csv

JSON export writes .converge/exports/graph.json. CSV export writes .converge/exports/nodes.csv and .converge/exports/edges.csv.

Clean

converge clean /path/to/repo

Removes generated artifacts such as .converge/graph.db, .converge/exports/, .converge/scan_state.json, .converge/audit.log, and .venv-converge-test.

Repository-Local State

Converge writes derived state inside the target repository:

Artifact Purpose
.converge/graph.db SQLite-backed dependency graph.
.converge/scan_state.json Incremental scan fingerprints.
.converge/exports/ JSON and CSV graph exports.
.converge/audit.log Append-only fix audit events.
.venv Default created environment.
.venv-converge-test Temporary validation sandbox name, cleaned after use.

JSON and Exit Codes

Global flags:

converge --json doctor /path/to/repo
converge --quiet scan /path/to/repo
converge --verbose doctor /path/to/repo

--json payloads include:

{
  "schema_version": 1,
  "tool_version": "0.1.7"
}

Exit codes:

Code Meaning
0 Success, or no actionable issues.
1 Issues found by doctor or fix dry-run.
2 Command error, such as a missing graph or failed export.

Configuration

Settings are read from optional .converge.toml and [tool.converge] in pyproject.toml. When both exist, pyproject.toml wins on conflicts.

Useful keys include:

[tool.converge]
incremental_scan = true
skip_type_checking_imports = true
repair_targets = ["pyproject", "requirements"]
extra_scan_roots = ["src"]

See docs/ROADMAP.md for the current implementation map and remaining stretch work.

Development

Run the full verified suite:

TMPDIR=/tmp PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=src .venv/bin/pytest tests/unit tests/integration -v

Lint and type check:

.venv/bin/ruff check .
.venv/bin/mypy src/converge

Coverage:

PYTHONPATH=src .venv/bin/pytest tests --cov=converge --cov-report=term-missing

Key implementation files:

Area File
Project-scoped paths src/converge/project_context.py
Graph persistence src/converge/graph/store.py
Manifest scanning src/converge/scanner/project.py
AST import scanning src/converge/scanner/ast_parser.py
CLI wiring src/converge/cli/main.py
Manifest repair src/converge/repair/manifest.py
Validation sandbox src/converge/validation/sandbox.py

Current Limits

Converge is useful now, but it does not overstate what the implementation proves.

  • Repair planning is focused on dependency additions, not broad manifest rewrites.
  • Validation is smoke-import based, not a full application test harness.
  • Import classification is Python-focused and conservative.
  • Export formats are designed for inspection and automation, not analytics warehousing.

License

MIT. See LICENSE.

Metadata

Release files for converge-cli 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for converge-cli 0.1.7
File Size Uploaded Provenance Actions
converge_cli-0.1.7.tar.gz 7.7 MB With provenance Details for converge_cli-0.1.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for converge-cli 0.1.7
File Interpreter ABI Platform Actions
converge_cli-0.1.7-py3-none-any.whl Python 3 none any Details for converge_cli-0.1.7-py3-none-any.whl

Total release size: 7.7 MB

Release files / converge_cli-0.1.7.tar.gz

Download URL converge_cli-0.1.7.tar.gz
Size 7.7 MB
Tags Source
SHA-256 checksum
How to use checksums
4e516f2218afd1424bbde1e1f39913d11835ecde8bb13a2aa174398caaf2d551
BLAKE2b-256 checksum
How to use checksums
d1e5801edb11ced735f5c64d9fe45917be745e934eb8c73330ad4bd7d0c3ecce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2026.

Transparency log

Release files / converge_cli-0.1.7-py3-none-any.whl

Download URL converge_cli-0.1.7-py3-none-any.whl
Size 40.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4652c538a5b388e12af32d7a69dfd7904fc17579d44e63923323f64efe79063e
BLAKE2b-256 checksum
How to use checksums
b6e54e7c0a9cf82375b598dfaf969a45e52dfb8fc9485e5831c8fa2f3701bb8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2026.

Transparency log

Security for converge-cli 0.1.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for converge_cli-0.1.7.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 26, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page