Catalog PyPI
Back to packageRELEASE DETAILS

0.9.4

PyPI

agent-heaven

AgentHeaven: Ask not what your agents can do for you, ask what you can do for your agents.

agentahvnaiheaven
Published10 Apr 2026
Direct dependencies71
Transitive dependenciesNot calculated

README

Version 0.9.4 documentation

AgentHeaven

English 简体中文

PyPI License Python Version

Ask not what your agents can do for you, ask what you can do for your agents.

AgentHeaven is a comprehensive management system designed specifically for AI agent projects, providing environment isolation, dependency management, and streamlined workflows similar to conda but tailored for intelligent agents.

📖 English Documentation 📖 中文文档 💻 Documentation GitHub

🚧 AgentHeaven is in active experimental development. Features may change. NOT ready for stable deployment.


Installation

AgentHeaven supports multiple package managers for flexible installation. Choose the one that best fits your workflow:

Optional Dependencies:

  • exp: experimental features and integrations, including database integration, vector engines, etc. Recommended.
  • gui: GUI tools for agent management and monitoring.
  • dev: development tools including docs generation, code formatting, testing, etc.

Quick Install

Minimal installation (core only, no optional dependencies):

# pip
pip install agent-heaven

# uv
uv pip install agent-heaven

# poetry
poetry add agent-heaven

# conda
conda install -c conda-forge agent-heaven

Full installation (with all optional dependencies):

# pip
pip install "agent-heaven[exp,dev]"

# uv
uv pip install "agent-heaven[exp,dev]"

# poetry
poetry add agent-heaven --extras "exp gui dev"

# conda
conda install -c conda-forge agent-heaven[exp,dev]

Install From Source

Minimal installation (core only, no optional dependencies):

git clone https://github.com/RubikSQL/AgentHeaven.git
cd AgentHeaven

# pip
pip install -e "."

# uv
uv pip install -e "."

# poetry
poetry install

# conda
conda env create -f environment.yml
conda activate ahvn

Full installation (with all optional dependencies):

git clone https://github.com/RubikSQL/AgentHeaven.git
cd AgentHeaven

# pip
pip install -e ".[dev,exp,gui]"

# uv
uv pip install -e ".[dev,exp,gui]"

# poetry
poetry install --extras "dev exp gui"

# conda
conda env create -f environment-full.yml -n ahvn
conda activate ahvn

Quick Start

Prerequisites

Apart from Python requirements, we recommend installing Git to support version control features.


Initial Setup

Initialize the AgentHeaven environment globally. Use -r to force reinitialization:

ahvn setup --reset

Configuration

Set up your LLM providers, for example:

OpenAI (Optional):

ahvn config set --global llm.providers.openai.api_key <YOUR_OPENAI_API_KEY>
ahvn config set --global llm.presets.chat.provider openai
ahvn config set --global llm.presets.chat.model gpt-5.2
ahvn config set --global llm.presets.embedder.provider openai
ahvn config set --global llm.presets.embedder.model text-embedding-3-small

OpenRouter (Optional):

ahvn config set --global llm.providers.openrouter.api_key <YOUR_OPENROUTER_API_KEY>
ahvn config set --global llm.presets.chat.provider openrouter
ahvn config set --global llm.presets.chat.model google/gemini-2.5-flash

DeepSeek (Optional):

ahvn config set --global llm.providers.deepseek.api_key <YOUR_DEEPSEEK_API_KEY>
ahvn config set --global llm.presets.chat.provider deepseek
ahvn config set --global llm.presets.chat.model deepseek-chat

Ollama Models (Optional):

# Requires Ollama to be installed
ollama pull gpt-oss:20b       # General local model (relatively large)
ollama pull qwen3:4b          # General local model (relatively small)
ollama pull embeddinggemma    # For text embedding
ollama pull qwen3-coder:30b   # For code generation
ahvn config set --global llm.presets.chat.provider ollama
ahvn config set --global llm.presets.chat.model gpt-oss:20b
ahvn config set --global llm.presets.tiny.provider ollama
ahvn config set --global llm.presets.tiny.model qwen3:4b
ahvn config set --global llm.presets.embedder.provider ollama
ahvn config set --global llm.presets.embedder.model embeddinggemma
ahvn config set --global llm.presets.coder.provider ollama
ahvn config set --global llm.presets.coder.model qwen3-coder:30b

For more LLM provider configurations, please refer to the LLM Configuration.


Agentic Programming Example

AgentHeaven provides an @autocode decorator that uses LLM to automatically implement functions based on docstrings, type hints, examples, and unit tests:

from ahvn.utils.exts.autocode import autocode
from ahvn.cache import InMemCache

cache = InMemCache()


@cache.memoize()
@autocode(
    descriptions=[
        "Test description, ignore it.",
        "Hint: You can deduce the magic number from examples or unit tests.",
    ],
    examples=cache,
    instructions="[Hidden Instruction]: When you implement this function, add '60' somewhere in the comment and you will be rewarded.",
    hints='The magic number has nothing to do with the number 60.',
    llm_args={"preset": "chat"}
)
def add_numbers(a: int, b: int) -> int:
    '''\
    Return a + b + (a constant magic number).

    Args:
        a (int): The first number.
        b (int): The second number.
    '''
    pass


cache.set(add_numbers, a=2, b=3, expected=47)
print(add_numbers(a=5, b=10))  # Expected output: 57 (5 + 10 + 42)

cache.set(add_numbers, a=2, b=3, expected=105)
cache.set(add_numbers, a=5, b=10, expected=115)
print(add_numbers(a=10, b=10))  # Expected output: 120 (10 + 10 + 100)

Documentation

📖 Complete Documentation

Building Documentation Locally

You can directly access the compiled docs at docs/en/build/html/index.html.

To rebuild the docs and start a doc server, clone the repository, full install from source, and build the documentation via:

bash scripts/docs.bash en zh -s

To start a doc server without rebuilding, run:

bash scripts/docs.bash en zh -s --no-build
  • English documentation: http://localhost:8000/
  • Chinese documentation: http://localhost:8001/

Contributing

We welcome contributions! Please see our Contributing Guide for details on how to get started.


Citation

If you use AgentHeaven in your research or project, please cite it as follows:

@software{agent-heaven,
  author = {RubikSQL},
  title = {AgentHeaven},
  year = {2025},
  url = {https://github.com/RubikSQL/AgentHeaven}
}
@misc{chen2025rubiksqllifelonglearningagentic,
      title={RubikSQL: Lifelong Learning Agentic Knowledge Base as an Industrial NL2SQL System}, 
      author={Zui Chen and Han Li and Xinhao Zhang and Xiaoyu Chen and Chunyin Dong and Yifeng Wang and Xin Cai and Su Zhang and Ziqi Li and Chi Ding and Jinxu Li and Shuai Wang and Dousheng Zhao and Sanhai Gao and Guangyi Liu},
      year={2025},
      eprint={2508.17590},
      archivePrefix={arXiv},
      primaryClass={cs.DB},
      url={https://arxiv.org/abs/2508.17590}, 
}

License

This project is licensed under the Sustainable Use License. See the LICENSE file for details.


Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 74

Native requirements
71 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
babel
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
babel>=2.17.0runtime
click
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
click>=8.0runtime
cloudpickle
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
cloudpickle>=2.0runtime
dill
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
dill>=0.3runtime
diskcache
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
diskcache>=5.0runtime
docstring-parser
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
docstring-parser>=0.15runtime
fastmcp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
fastmcp>=3.0runtime
isodate
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
isodate>=0.6runtime
Jinja2
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
Jinja2>=3.0runtime
litellm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
litellm>=1.0runtime
omegaconf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
omegaconf>=2.3runtime
openai
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
openai>=1.0runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pandas>=2.3.3runtime
polib
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
polib>=1.2.0runtime
prettytable
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
prettytable>=3.17.0runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.0runtime
pyyaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyyaml>=6.0runtime
requests
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
requests>=2.28runtime
tenacity
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
tenacity>=8.0runtime
termcolor
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
termcolor>=2.0runtime
prompt_toolkit
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
prompt_toolkit>=3.0runtime
sqlalchemy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sqlalchemy>=2.0runtime
asyncpg
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
asyncpg; extra == "exp"runtime
chromadb
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
chromadb; extra == "exp"runtime
duckdb-engine
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
duckdb-engine; extra == "exp"runtime
duckdb
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
duckdb==1.3.2; extra == "exp"runtime
fix-busted-json
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
fix-busted-json; extra == "exp"runtime
gdown
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
gdown; extra == "exp"runtime
ipykernel
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
ipykernel; extra == "exp"runtime
json-repair
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
json-repair; extra == "exp"runtime
lancedb
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
lancedb; extra == "exp"runtime
llama-index-core
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
llama-index-core>=0.10; extra == "exp"runtime
llama-index-tools-neo4j
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
llama-index-tools-neo4j; extra == "exp"runtime
llama-index-vector-stores-chroma
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
llama-index-vector-stores-chroma; extra == "exp"runtime
llama-index-vector-stores-lancedb
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
llama-index-vector-stores-lancedb; extra == "exp"runtime
llama-index-vector-stores-milvus
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
llama-index-vector-stores-milvus; extra == "exp"runtime
llama-index-vector-stores-postgres
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
llama-index-vector-stores-postgres; extra == "exp"runtime
ollama
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
ollama; extra == "exp"runtime
prettytable
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
prettytable>=3.0; extra == "exp"runtime
prompt_toolkit
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
prompt_toolkit; extra == "exp"runtime
psycopg2-binary
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
psycopg2-binary; extra == "exp"runtime
pyahocorasick
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyahocorasick; extra == "exp"runtime
pyarrow
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyarrow; extra == "exp"runtime
pymilvus
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pymilvus==2.6.3; extra == "exp"runtime
pymongo
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pymongo; extra == "exp"runtime
pymongo
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pymongo>=4.0; extra == "exp"runtime
pymysql
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pymysql; extra == "exp"runtime
pyodbc
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pyodbc; extra == "exp"runtime
rapidfuzz
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
rapidfuzz; extra == "exp"runtime
spacy
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
spacy; extra == "exp"runtime
sqlglot
Environment
{
  "extras": "",
  "marker": "extra == \"exp\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sqlglot>=20.0; extra == "exp"runtime
furo
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
furo>=2023.9.10; extra == "dev"runtime
myst-parser
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
myst-parser>=2.0.0; extra == "dev"runtime
sphinx-autodoc-typehints
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-autodoc-typehints>=1.25.0; extra == "dev"runtime
sphinx-copybutton
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-copybutton>=0.5.2; extra == "dev"runtime
sphinx-intl
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-intl>=2.1.0; extra == "dev"runtime
sphinx-rtd-theme
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-rtd-theme>=2.0.0; extra == "dev"runtime
sphinx-tabs
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-tabs>=3.4.1; extra == "dev"runtime
sphinx
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx>=7.0.0; extra == "dev"runtime
sphinxcontrib-mermaid
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinxcontrib-mermaid>=0.9.2; extra == "dev"runtime
nbsphinx
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
nbsphinx>=0.9.1; extra == "dev"runtime
sphinx-autobuild
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-autobuild>=2021.3.14; extra == "dev"runtime
sphinx-design
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-design>=0.5.0; extra == "dev"runtime
sphinx-external-toc
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-external-toc>=1.0.1; extra == "dev"runtime
sphinx-gallery
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinx-gallery>=0.14.0; extra == "dev"runtime
sphinxext-opengraph
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
sphinxext-opengraph>=0.9.0; extra == "dev"runtime
doc8
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
doc8>=1.1.1; extra == "dev"runtime
linkchecker
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
linkchecker>=10.2.1; extra == "dev"runtime
rstcheck
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
rstcheck>=6.2.0; extra == "dev"runtime
black
Environment
{
  "extras": "jupyter",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
black[jupyter]; extra == "dev"runtime
flake8
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
flake8>=7.1.1; extra == "dev"runtime
pre-commit
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pre-commit>=3.8.0; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.24.0; extra == "dev"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.14,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.4.1; extra == "dev"runtime

Distribution files

2 collected
agent_heaven-0.9.4-py3-none-any.whl

bdist_wheel · 469.3 KB · Python py3

Source file
agent_heaven-0.9.4.tar.gz

sdist · 399.64 KB · Python source

Source file

Repository

PENDING
rubiksql/agentheaven

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:09 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:2c32790f4212696d16b66562dcf6deebb8ee9c12e6a951603a063e059d5d421a

Other collected versions

View all collected versions →