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

Install mycelium-mermaid to generate Mermaid class diagrams as Markdown using Mycelium's deterministic exporter.

Install it interactively with the Skills CLI:

npx skills add ScottRBK/mycelium

Or select the skill explicitly; add --global to make it available across projects:

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

The skill provides agent instructions and runs the PyPI package through uvx or an installed CLI. Check uvx --no-build mycelium-map export --help for Mermaid export support. Then ask your agent to use mycelium-mermaid to generate a class diagram for your repository.

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.2

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.2
File Size Uploaded Provenance
mycelium_map-0.4.2.tar.gz 643.6 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for mycelium-map 0.4.2
File
mycelium_map-0.4.2-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
mycelium_map-0.4.2-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.2-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 abi3 Linux glibc 2.17+ ARM64 Details
mycelium_map-0.4.2-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details
mycelium_map-0.4.2-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details

Total release size: 15.6 MB

Release files / mycelium_map-0.4.2.tar.gz

Download URL mycelium_map-0.4.2.tar.gz
Size 643.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2e5fed4e7653abe0b314baabfa42c347907e889e2a79b970cb7f6cd67aff9b5a
BLAKE2b-256 checksum
How to use checksums
dcb4b3816beaf0a5a34e437dd609cb37d784572c3f617f5a497841cae44bc5e2
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 5, 2026.

Transparency log

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

Download URL mycelium_map-0.4.2-cp312-abi3-win_amd64.whl
Size 3.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
2dbe44020dde46c08829292c6935eeac5dcef0925988ad679a973d7fefd7a99e
BLAKE2b-256 checksum
How to use checksums
b254cd973a5f5620f37423ec7886a7d46bad47d3964e57ad80e9f85192a92a41
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 5, 2026.

Transparency log

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

Download URL mycelium_map-0.4.2-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
2ed7e7aac584eaee0542c56290b2c52ad17fd37899350d22f99a70022646cb97
BLAKE2b-256 checksum
How to use checksums
0598ec4d37b2454caef483ee8d0cc1109d17a796c8900d6aa8646e7f6a43549d
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 5, 2026.

Transparency log

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

Download URL mycelium_map-0.4.2-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
a32b192f4f02113ca9747fa9cc792eef654b4e7991f9dd2c14689fc5889eef5a
BLAKE2b-256 checksum
How to use checksums
c24c5a8f5a421d036e19aec99600d375a145421dfa24e60c9142bb0163fbe8b8
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 5, 2026.

Transparency log

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

Download URL mycelium_map-0.4.2-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
0e7d75e3bb783a7cde284cd118c37589c442998d13810723f5f78552c67b8ad0
BLAKE2b-256 checksum
How to use checksums
ca6cdb823c40befc4cce5a05c6d52c1e3b1918d97fbb796d140d661aacff239c
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 5, 2026.

Transparency log

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

Download URL mycelium_map-0.4.2-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
d2cb6da937b3a24adbcb69c873a90650c56596df03770fc99eb4aa1935d38dc4
BLAKE2b-256 checksum
How to use checksums
a41f98c1fb9d6f83879a20623ddaf6aa8d0b1d957270bf176cefcb4c3fe4e232
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 5, 2026.

Transparency log

Security for mycelium-map 0.4.2

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.2.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 5, 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