Local-first repo behavior map generator
Project description
hypergumbo
hypergumbo is a local-first CLI that generates behavior maps and sketches from source code. The goal of this project is to efficiently help developers and LLMs understand a codebase.
pip install hypergumbo
Requires Python 3.10+. For optional extras (embeddings, gitleaks, grammars), run
hypergumbo add-extrasafter installing.
Intel Mac users: Some tree-sitter packages lack x86_64 wheels. See docs/INTEL_MAC.md for a Docker-based workaround.
git clone https://codeberg.org/iterabloom/hypergumbo
hypergumbo hypergumbo/
Output:
# hypergumbo
hypergumbo is a local-first CLI that generates behavior maps and sketches from source code. The goal of this project is to efficiently help developers and LLMs understand a codebase. > Requires Python 3.10+. For optional extras (embeddings, gitleaks, grammars), run `hypergumbo add-extras` after installing. > Intel Mac users:
## Overview
Python (91%), Markdown (4%), Yaml (3%)
728 files (383 non-test + 345 test)
~320,798 LOC (~129,172 non-test + ~191,626 test)
## Structure
` ` `
hypergumbo/
├── .agent
│ └── [and 6 other items]
├── .gitea
│ ├── SQUASH_TEMPLATE.md
│ └── [and 1 other items]
├── .githooks
│ ├── commit-msg
│ └── [and 9 other items]
├── docs
│ ├── CACHE.md
│ └── [and 22 other items]
├── packages
│ ├── hypergumbo-core
│ │ ├── src
│ │ │ └── hypergumbo_core
│ │ │ ├── analyze
│ │ │ │ ├── base.py
│ │ │ │ └── [and 3 other items]
│ │ │ ├── __main__.py
│ │ │ ├── cli.py
│ │ │ ├── ir.py
│ │ │ └── [and 26 other items]
│ │ ├── tests
│ │ │ ├── test_framework_patterns.py
│ │ │ └── [and 94 other items]
│ │ └── [and 2 other items]
│ ├── hypergumbo-tracker
│ │ ├── src
│ │ │ └── hypergumbo_tracker
│ │ │ ├── cli.py
│ │ │ └── [and 13 other items]
│ │ └── [and 5 other items]
│ └── [and 4 other items]
├── scripts
│ ├── lib
│ │ └── forgejo-api.sh
│ └── [and 33 other items]
├── tests
│ ├── test_bakeoff_features_reflect.py
│ └── [and 2 other items]
├── conftest.py
├── pyproject.toml
├── setup.py
└── [and 21 other items]
` ` `
## Frameworks
- pytest
- pytorch
- transformers
## Tests
345 test files · cargo test, pytest, unittest
*~95% estimated coverage (2693/2847 functions called by tests)*
## Configuration
[...]
Use -t to control the token budget:
hypergumbo . -t 1000 # brief overview (structure only)
hypergumbo . -t 4000 # good balance for most LLMs
hypergumbo . -t 8000 # detailed with many symbols
Two Outputs
Sketch (hypergumbo .) — Token-budgeted Markdown sized for LLM context windows. Ranks symbols by graph centrality (★ = most connected).
Behavior map (hypergumbo run) — Full JSON with all symbols, edges, and provenance tracking. Use this for programmatic analysis.
CLI Commands
hypergumbo [path] # Markdown sketch (default)
hypergumbo run [path] # Full JSON behavior map
hypergumbo slice --entry X # Subgraph from entry point
hypergumbo routes [path] # List HTTP routes
hypergumbo search <query> # Search symbols
hypergumbo symbols [path] # Browse symbols with connectivity
hypergumbo explain <symbol> # Detailed symbol info
hypergumbo test-coverage # Analyze test coverage (transitive)
hypergumbo catalog # List analysis passes
Useful flags:
hypergumbo . -x # exclude test files (faster)
hypergumbo . --with-source # append full source code
hypergumbo . --no-progress # hide progress indicator (on by default)
hypergumbo --help --all # comprehensive help for all commands
Results are automatically cached in ~/.cache/hypergumbo/. Just run:
hypergumbo . # auto-runs analysis if no cache exists, then generates sketch
The cache auto-invalidates when source files change. See docs/CACHE.md for details.
See hypergumbo --help for all options.
What It Understands
- Language analyzers: Python, JS/TS, Java, Rust, Go, C/C++, and many more
- Cross-language linkers: JNI, HTTP, WebSocket, gRPC, GraphQL, message queues (full list)
- Framework patterns: FastAPI, Django, Rails, Spring Boot, Phoenix, Express, and many more
How It Works
- Profile: Scan the repo for languages, file counts, LOC
- Analyze: Run language-specific analyzers to extract symbols and edges
- Link: Connect symbols across language boundaries (JS fetch → Python route)
- Enrich: Detect frameworks via YAML pattern matching
- Output: Generate Markdown sketch or JSON behavior map
The Internal Representation
All analyzers produce the same IR types:
- Symbol: A code element (function, class, method) with name, location, and stable ID
- Edge: A relationship between symbols (calls, imports, extends, implements)
- Span: Source location (file, line, column)
This uniform IR is what allows all language analyzers and cross-language linkers to work together coherently.
Architecture
packages/
├── hypergumbo-core/ # CLI, IR, slice, sketch, linkers
│ └── src/hypergumbo_core/
│ ├── cli.py # Entry point
│ ├── ir.py # Symbol, Edge, Span
│ ├── sketch.py # Token-budgeted Markdown
│ ├── slice.py # Subgraph extraction
│ ├── linkers/ # Cross-language linkers
│ └── frameworks/ # Framework detection (YAML patterns)
├── hypergumbo-lang-mainstream/ # Python, JS, Java, Go, Rust, etc.
├── hypergumbo-lang-common/ # Haskell, Elixir, GraphQL, etc.
├── hypergumbo-lang-extended1/ # Zig, Solidity, Agda, etc.
├── hypergumbo-tracker/ # Structured work tracker for agent governance (MPL-2.0)
└── hypergumbo/ # Meta-package (installs all above)
Key design choices:
- Registry pattern: Analyzers and linkers self-register via decorators
- Two-pass analysis: First collect symbols, then resolve edges (enables cross-file references)
- Provenance tracking: Every edge records which analyzer/linker created it
- YAML-driven patterns: Framework detection is declarative, not hardcoded
Development
git clone https://codeberg.org/iterabloom/hypergumbo.git
cd hypergumbo
python3 -m venv .venv && source .venv/bin/activate
./scripts/dev-install
source .venv/bin/activate # reload to enable pytest alias
pytest # runs smart-test (affected tests only)
dev-install installs all packages, git hooks, and the pytest/smart-test wrapper. 100% test coverage required.
See CONTRIBUTING.md for PR workflow (including fork-based workflow for external contributors), smart test selection setup, and coverage requirements. Agent instructions live in AGENTS.md.
Links
- docs/USE-CASES.md — Practical workflows and examples
- CHANGELOG.md — Implementation history
- docs/LANGUAGES.md — Supported languages
- docs/LINKERS.md — Cross-language linkers
- docs/FRAMEWORKS.md — Framework patterns
- docs/hypergumbo-spec.md — Detailed specification
- docs/CITATIONS.md — Paper citations for embedding models
- docs/CACHE.md — Caching architecture
- SECURITY.md — Vulnerability reporting
- hypergumbo-tracker README — Standalone tracker for AI agent governance
License
Project details
Release history Release notifications | RSS feed
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 hypergumbo-2.4.0.tar.gz.
File metadata
- Download URL: hypergumbo-2.4.0.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad068f426bcd530498c21b9e671614b63df7d697d6404866aba662a13369d587
|
|
| MD5 |
177b250ebe7414b6c1b11997373cb536
|
|
| BLAKE2b-256 |
9856a463e03457d867de430f2b862ce3a4186a7513b5855e830cb6019e0b80ae
|
File details
Details for the file hypergumbo-2.4.0-py3-none-any.whl.
File metadata
- Download URL: hypergumbo-2.4.0-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ab8bb2ec6591c6229292a8d5cd6176e0d4f9588c73ff614e15e76330bf2e11f
|
|
| MD5 |
1856d8e72ec0ad900e763959485f9599
|
|
| BLAKE2b-256 |
2f10cb69b1db5c95e0e60339a5cac90752495617a5e0f525a04d16f912ce1f67
|