Skip to main content

Mycelium

Static analysis CLI that maps the connections in a source code repository. Produces a single JSON file containing file structure, symbols, imports, call graph, community clusters, and execution flows.

Powered by a Rust engine with tree-sitter parsing, exposed to Python via PyO3.

What it produces

Mycelium runs a six-phase pipeline over your source code and outputs a single JSON file:

Phase What it does
Structure Walks the file tree and records every file and folder — language, size, and line count. This is the skeleton of your repository.
Symbols Parses each source file into an AST using tree-sitter and extracts every named declaration — classes, methods, functions, interfaces, structs, enums, properties, constructors, and more. Each symbol includes its visibility, parent, and location.
Imports Resolves dependency edges between files by analysing import/using/require statements. For .NET projects it also extracts project references (.csproj/.vbproj) and NuGet package references.
Call Graph Identifies method and function calls within each file, then resolves them to their target symbols using import context, same-file lookups, and fuzzy matching. Each edge gets a confidence score and tier (A/B/C) reflecting how certain the resolution is.
Community Clusters Groups symbols that frequently call each other into clusters using the Louvain algorithm. These communities reveal the natural boundaries and modules in your codebase — often aligning with business domains or feature areas.
Execution Flows Traces paths from entry points (controllers, handlers, main functions) through the call graph using breadth-first search. Each flow shows the chain of symbols invoked during a particular operation, with a cumulative confidence score.

Install

uvx mycelium-map analyze .

Version 0.4.2 and newer include the compiled Rust engine in wheels for standard CPython 3.12+ on Linux with glibc (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64). These installations need no Rust toolchain. The same wheel is tested on Python 3.12, 3.13, and 3.14 for each platform. uvx runs the CLI in a temporary tool environment; add --no-build to require prebuilt packages:

uvx --no-build mycelium-map export map.json -o diagram.md

For a persistent CLI and the Python API, install into an activated virtual environment:

python -m pip install --upgrade --only-binary=mycelium-map mycelium-map

Building from source requires Rust. Platforms without wheels, PyPy, and free-threaded Python are outside the prebuilt support above; the binary-only commands fail instead of compiling locally.

Agent skills

Two skills use the PyPI package through uvx and work in any repository:

  • mycelium-mermaid generates a Mermaid class diagram as Markdown.
  • mycelium-architecture uses that generator to write docs/assets/mycelium_class_diagram.md and add an AGENTS.md instruction to read it before code changes or architectural work.

Install both with the Skills CLI:

npx skills add ScottRBK/mycelium --skill mycelium-mermaid mycelium-architecture

For diagram generation alone:

npx skills add ScottRBK/mycelium --skill mycelium-mermaid

Add --global to make the skills available across projects. Bundled references travel with the generator skill; neither skill requires a Mycelium checkout. Ask your agent to use mycelium-mermaid for a diagram, or mycelium-architecture to generate it and update AGENTS.md.

Usage

mycelium-map analyze <path>                          # Analyse a repo
mycelium-map analyze <path> -o output.json           # Custom output path
mycelium-map analyze <path> --verbose                # Show phase timing breakdown
mycelium-map analyze <path> --quiet                  # No terminal output
mycelium-map analyze <path> -l cs,ts                 # Only analyse C# and TypeScript
mycelium-map analyze <path> --exclude vendor,legacy  # Skip directories
mycelium-map analyze <path> --resolution 1.5         # Louvain resolution (higher = more communities)
mycelium-map analyze <path> --max-processes 50       # Limit execution flows
mycelium-map analyze <path> --max-depth 8            # Limit BFS trace depth

Default output file: <repo-name>.mycelium.json

Python API

from mycelium import analyze

result = analyze("path/to/repo")
print(result["stats"])

Mermaid class diagrams

mycelium-map analyze ./my-project -o map.json --quiet
mycelium-map export map.json -o diagrams.md
mycelium-map export map.json -o services.md --path src/services --max-classes 6

Exports typed fields, parameter/return signatures, declared type relationships, and labelled calls as deterministic Mermaid Markdown. Large views split into bounded diagrams with a complete list of resolved relationships. Both CLIs and mycelium.export_mermaid(result) share the Rust exporter. Exports hide recognised Rust/Go tests and supported Python, .NET, Java and JS/TS framework declarations by default. Use --test-path tests for explicit test folders (including C/C++), --keep-path for exceptions, and --tests include for the full view. Reanalyse older maps for new framework rules. See coverage, limitations, and pinned repository checkpoints.

Supported Languages

Language Extensions
C# .cs
VB.NET .vb
TypeScript .ts, .tsx
JavaScript .js, .jsx, .mjs, .cjs
Python .py
Java .java
Go .go
Rust .rs
C .c, .h
C++ .cpp, .cc, .cxx, .hpp, .hxx, .hh

Output Schema

The JSON output contains these top-level sections:

metadata

{
  "repo_name": "my-project",
  "repo_path": "/absolute/path",
  "analysed_at": "2026-02-05T18:33:12Z",
  "mycelium_version": "1.0.0",
  "commit_hash": "a1b2c3d4e5f6",
  "analysis_duration_ms": 42.3,
  "phase_timings": { "structure": 0.004, "parsing": 0.001, ... }
}

stats

Summary counts: files, folders, symbols, calls, imports, communities, processes, and a languages breakdown by file count.

structure

File tree with language, size, and line counts.

{
  "files": [{ "path": "src/main.cs", "language": "cs", "size": 1024, "lines": 45 }],
  "folders": [{ "path": "src/", "file_count": 3 }]
}

symbols

Every extracted symbol: classes, methods, interfaces, functions, structs, enums, etc.

{
  "id": "sym_0001",
  "name": "UserController",
  "type": "Class",
  "file": "Controllers/UserController.cs",
  "line": 8,
  "visibility": "public",
  "exported": true,
  "parent": "MyApp.Controllers",
  "language": "cs"
}

Symbol types: Class, Function, Method, Interface, Struct, Enum, Namespace, Property, Constructor, Module, Record, Delegate, TypeAlias, Constant, Trait, Impl, Macro, Typedef, Annotation.

Visibility: public, private, internal, protected.

imports

Three categories of dependency edges:

{
  "file_imports": [{ "from": "Controller.cs", "to": "Service.cs", "statement": "using MyApp.Services" }],
  "project_references": [{ "from_project": "Web.csproj", "to_project": "Core.csproj", "ref_type": "ProjectReference" }],
  "package_references": [{ "project": "Web.csproj", "package": "Newtonsoft.Json", "version": "13.0.1" }]
}

Project and package references are extracted from .csproj/.vbproj files.

calls

Call graph edges with three-tier confidence scoring:

{
  "from": "sym_0004",
  "to": "sym_0015",
  "confidence": 0.9,
  "tier": "A",
  "reason": "import-resolved",
  "line": 17
}
Tier Confidence Meaning
A 0.9 Callee found in an imported file
B 0.85 Callee found in the same file
C 0.5 Unique fuzzy match across the codebase
C 0.3 Ambiguous fuzzy match (multiple candidates)

communities

Clusters of symbols that frequently call each other, detected via Louvain algorithm.

{
  "id": "community_0",
  "label": "Absence",
  "members": ["sym_0004", "sym_0015", "sym_0016"],
  "cohesion": 0.8,
  "primary_language": "cs"
}

processes

Execution flows traced from entry points (controllers, handlers, main functions) via BFS through the call graph.

{
  "id": "process_0",
  "entry": "sym_0004",
  "terminal": "sym_0016",
  "steps": ["sym_0004", "sym_0015", "sym_0016"],
  "type": "intra_community",
  "total_confidence": 0.765
}

type is intra_community when all steps are in the same community, or cross_community when the flow spans multiple.

total_confidence is the product of all edge confidences along the path.

Development

# Rust tests
cargo test --workspace

# Build Python bindings locally
pip install maturin
maturin develop --release

# Run binding tests
pytest tests/test_bindings.py -v

# Rust CLI (alternative to Python CLI)
cargo run -p mycelium-cli -- analyze <path>

Releasing

Releases are automated via GitHub Actions. Push a semver tag to trigger a release:

git tag v1.0.0
git push origin v1.0.0

This will:

  1. Build binary wheels for Linux, macOS, and Windows
  2. Build a source distribution
  3. Publish all to PyPI

Metadata

Release files for mycelium-map 0.4.5

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

Source distribution (sdist)

Source distribution for mycelium-map 0.4.5
File Size Uploaded Provenance
mycelium_map-0.4.5.tar.gz 660.5 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for mycelium-map 0.4.5
File
mycelium_map-0.4.5-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
mycelium_map-0.4.5-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 abi3 Linux glibc 2.17+ x86-64 Details
mycelium_map-0.4.5-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 abi3 Linux glibc 2.17+ ARM64 Details
mycelium_map-0.4.5-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details
mycelium_map-0.4.5-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details

Total release size: 15.9 MB

Release files / mycelium_map-0.4.5.tar.gz

Download URL mycelium_map-0.4.5.tar.gz
Size 660.5 kB
Tags Source
SHA-256 checksum
How to use checksums
88e4dc8aa3970bc2d2f14f28fbc5b28542d79c36f47dee99962b41927526b781
BLAKE2b-256 checksum
How to use checksums
1f25fd0871581cb7664912f246bce5195c0b1f606daa001bdefee864b0ba3adb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / mycelium_map-0.4.5-cp312-abi3-win_amd64.whl

Download URL mycelium_map-0.4.5-cp312-abi3-win_amd64.whl
Size 3.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5a59972a4be1eadf5f5fb4b026c0b7ee377abf451bfc2cc7aedb628610129ea4
BLAKE2b-256 checksum
How to use checksums
9ff0ddc6e94406e58eef47224d42d5a7fcb9a212ef94e508af8fb030e4da10e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / mycelium_map-0.4.5-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mycelium_map-0.4.5-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.1 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
7d89e5c87a11dc148b344f9c1f0f3d8e9e6b93cdeac10777bfa08609eb5460ff
BLAKE2b-256 checksum
How to use checksums
70b23001218b37f724ec0be4976d50315cc475b1a78d03244fc693c90ff89ab5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / mycelium_map-0.4.5-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL mycelium_map-0.4.5-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.0 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
d45a7b36babc8978931512450a79bca9dead64e7f151882c6805322e6ff43e18
BLAKE2b-256 checksum
How to use checksums
2f750825f795c987891682ad64364749128efdc2dc1b7f26516588511e8870bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / mycelium_map-0.4.5-cp312-abi3-macosx_11_0_arm64.whl

Download URL mycelium_map-0.4.5-cp312-abi3-macosx_11_0_arm64.whl
Size 3.0 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
781b531574101cb0b18f777b42feae811f53e6df8c110b0a3d62d8c9ea31f140
BLAKE2b-256 checksum
How to use checksums
6c165b659afb0db9283ef4ce8dfdb04ea20ad1410bbb8472f0057f1c2be7b87b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / mycelium_map-0.4.5-cp312-abi3-macosx_10_12_x86_64.whl

Download URL mycelium_map-0.4.5-cp312-abi3-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6aadb8bc0d8086449cd4b4979cff63b4d6f786582319891967bdb9ef07086310
BLAKE2b-256 checksum
How to use checksums
d9f97b3ef819b5771422d2535b81a36f8cdcce8d87a2e898a2f9805f640e5ab2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Security for mycelium-map 0.4.5

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 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for mycelium_map-0.4.5.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 Oct 7, 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