diff --git a/llama-index-integrations/agent/llama-index-agent-openai-legacy/pyproject.toml b/llama-index-integrations/agent/llama-index-agent-openai-legacy/pyproject.toml
index 911283c403b8f372d4c638fe964e95f22d007998..65e1237c52d2eb559dbe26d53c394b68e951c03e 100644
--- a/llama-index-integrations/agent/llama-index-agent-openai-legacy/pyproject.toml
+++ b/llama-index-integrations/agent/llama-index-agent-openai-legacy/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BaseOpenAIAgent", "ContextRetrieverOpenAIAgent", "FnRetrieverOpenAIAgent", "OpenAIAgent"]
 contains_example = false
 import_path = "llama_index.agent.openai_legacy"
 
+[tool.llamahub.class_authors]
+BaseOpenAIAgent = "llama-index"
+ContextRetrieverOpenAIAgent = "llama-index"
+FnRetrieverOpenAIAgent = "llama-index"
+OpenAIAgent = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/agent/llama-index-agent-openai/pyproject.toml b/llama-index-integrations/agent/llama-index-agent-openai/pyproject.toml
index fec0867b556d3bc45997bb00f195ba9d537b5c3a..6cf64477817ae082e38ecbf75951d8da97bc36fc 100644
--- a/llama-index-integrations/agent/llama-index-agent-openai/pyproject.toml
+++ b/llama-index-integrations/agent/llama-index-agent-openai/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAIAgent", "OpenAIAgentWorker", "OpenAIAssistantAgent"]
 contains_example = false
 import_path = "llama_index.agent.openai"
 
+[tool.llamahub.class_authors]
+OpenAIAgent = "llama-index"
+OpenAIAgentWorker = "llama-index"
+OpenAIAssistantAgent = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-aim/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-aim/pyproject.toml
index 47e9c604963a36e9b2740140315b2388ace24250..c3e6bc2174671489ee142356104bbcf7bf83d9dc 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-aim/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-aim/pyproject.toml
@@ -9,10 +9,12 @@ ignore-words-list = "Gere"
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AimCallback"]
 contains_example = false
 import_path = "llama_index.callbacks.aim"
 
+[tool.llamahub.class_authors]
+AimCallback = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-argilla/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-argilla/pyproject.toml
index 8cbbd708a5eee203a2cee0ebaec4c4537a9ad8ee..359d03c2b197b1fc3e8aee36ceb72d53a2c2dc05 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-argilla/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-argilla/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["argilla_callback_handler"]
 contains_example = false
 import_path = "llama_index.callbacks.argilla"
 
+[tool.llamahub.class_authors]
+argilla_callback_handler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml
index 1210ae92cda103128f30d8273cc39c455819e23b..37ca25e2d06d26993e4d02b236771d7a4bce598a 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-arize-phoenix/pyproject.toml
@@ -9,10 +9,12 @@ ignore-words-list = "Gere"
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["arize_phoenix_callback_handler"]
 contains_example = false
 import_path = "llama_index.callbacks.arize_phoenix"
 
+[tool.llamahub.class_authors]
+arize_phoenix_callback_handler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
@@ -20,10 +22,7 @@ ignore_missing_imports = true
 python_version = "3.8"
 
 [tool.poetry]
-authors = [
-    "Arize AI <phoenix-devs@arize.com>",
-    "OpenInference Authors <oss@arize.com>",
-]
+authors = ["Arize AI <phoenix-devs@arize.com>", "OpenInference Authors <oss@arize.com>"]
 description = "llama-index callbacks arize-phoenix integration"
 license = "MIT"
 name = "llama-index-callbacks-arize-phoenix"
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-deepeval/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-deepeval/pyproject.toml
index 76201455beb464552ddeec49a1602111053f7bfa..f10f74f3c7a2eb545b878f5aa98e912a3dee6b14 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-deepeval/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-deepeval/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["deepeval_callback_handler"]
 contains_example = false
 import_path = "llama_index.callbacks.deepeval"
 
+[tool.llamahub.class_authors]
+deepeval_callback_handler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-honeyhive/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-honeyhive/pyproject.toml
index c7523f477020a980733d3398bea2c2c7b46c0234..80bc5aeb85437899c90eeb3d26da9882f7d63db8 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-honeyhive/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-honeyhive/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["honeyhive_callback_handler"]
 contains_example = false
 import_path = "llama_index.callbacks.honeyhive"
 
+[tool.llamahub.class_authors]
+honeyhive_callback_handler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-openinference/pyproject.toml
index 697fe0efc50d920d9edde8d3f1eb09b502110448..5aba0290734e16b21aa3aca400d61357bd765650 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-openinference/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-openinference/pyproject.toml
@@ -9,10 +9,12 @@ ignore-words-list = "Gere"
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenInferenceCallbackHandler"]
 contains_example = false
 import_path = "llama_index.callbacks.openinference"
 
+[tool.llamahub.class_authors]
+OpenInferenceCallbackHandler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/pyproject.toml
index 393928b3c285133614e6c02434fa819dc8d48c18..aa8a519772661b221c90da69f4b434caea3dc356 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-promptlayer/pyproject.toml
@@ -9,10 +9,12 @@ ignore-words-list = "Gere"
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PromptLayerHandler"]
 contains_example = false
 import_path = "llama_index.callbacks.promptlayer"
 
+[tool.llamahub.class_authors]
+PromptLayerHandler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml
index 5cd3d191cc538f450da02afa49802b1edba76905..407ddee252ea0b208b77e5ec36f2b1d0162eb3aa 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-uptrain/pyproject.toml
@@ -7,6 +7,13 @@ check-filenames = true
 check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
+[tool.llamahub]
+contains_example = false
+import_path = "llama_index.callbacks.uptrain"
+
+[tool.llamahub.class_authors]
+UpTrainCallbackHandler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/pyproject.toml b/llama-index-integrations/callbacks/llama-index-callbacks-wandb/pyproject.toml
index 0a51f0a090eef2bf2146debb051039b3a5b57b8b..afeb43494a85ab54059c277355d6cebe7bc97da5 100644
--- a/llama-index-integrations/callbacks/llama-index-callbacks-wandb/pyproject.toml
+++ b/llama-index-integrations/callbacks/llama-index-callbacks-wandb/pyproject.toml
@@ -9,10 +9,12 @@ ignore-words-list = "Gere"
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WandbCallbackHandler"]
 contains_example = false
 import_path = "llama_index.callbacks.wandb"
 
+[tool.llamahub.class_authors]
+WandbCallbackHandler = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml
index c3c2fc05ac5a7d21d0bc1590b6a0755d85faf1d5..a3f7899c33e949058338f4552275077bfc9bd340 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-adapter/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AdapterEmbeddingModel"]
 contains_example = false
 import_path = "llama_index.embeddings.adapter"
 
+[tool.llamahub.class_authors]
+AdapterEmbeddingModel = "llama-index"
+BaseAdapter = "llama-index"
+LinearAdapterEmbeddingModel = "llama-index"
+LinearLayer = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-anyscale/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-anyscale/pyproject.toml
index 41d8d4d151399350445b7eac550da64c8afe6fdc..db1bc9cec04c816a55ec69dfb80f61bfe3ae63e6 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-anyscale/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-anyscale/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AnyscaleEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.anyscale"
 
+[tool.llamahub.class_authors]
+AnyscaleEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml
index a5d5878ef3832a07bae32ae796414ed97e03fdd8..53f273eb8eacfb41a1b2491364007ad71e71e96d 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-azure-openai/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AsyncAzureOpenAI", "AzureOpenAI", "AzureOpenAIEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.azure_openai"
 
+[tool.llamahub.class_authors]
+AsyncAzureOpenAI = "llama-index"
+AzureOpenAI = "llama-index"
+AzureOpenAIEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-bedrock/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-bedrock/pyproject.toml
index d96ab0f2cc7a1890c1d65e8826cdcc44067c8933..03f854b9e2c6d106018185ac25905cab7e10578d 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-bedrock/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-bedrock/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BedrockEmbedding", "Models"]
 contains_example = false
 import_path = "llama_index.embeddings.bedrock"
 
+[tool.llamahub.class_authors]
+BedrockEmbedding = "llama-index"
+Models = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-clarifai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-clarifai/pyproject.toml
index 2fab3abe929362067277220ec27a46ce784e66cd..09ecc97c8e482fe3c04d32b9e1e51a751916c7cb 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-clarifai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-clarifai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ClarifaiEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.clarifai"
 
+[tool.llamahub.class_authors]
+ClarifaiEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml
index ecf023bef417cfc2070afda10d3de78eeb91789e..cc10dec766f63e9de25ed02c558e2b73763219e4 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-clip/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ClipEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.clip"
 
+[tool.llamahub.class_authors]
+ClipEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-cohere/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-cohere/pyproject.toml
index 7a0b92bfc9602437fdecb4b076c21e8258056144..90a4e17bfde131c4b8de7839f43dd4f9179b8e14 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-cohere/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-cohere/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CohereEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.cohere"
 
+[tool.llamahub.class_authors]
+CohereEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-elasticsearch/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-elasticsearch/pyproject.toml
index b835af46d42deea88551b0ef595a7b82a702dece..b5ec83e2403fd8f149cbabc6e6a551d4e45c2c91 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-elasticsearch/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-elasticsearch/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ElasticsearchEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.elasticsearch"
 
+[tool.llamahub.class_authors]
+ElasticsearchEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-fastembed/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-fastembed/pyproject.toml
index 8366484b749847cba5c390e68182f9887bf2fdc8..1c80754cd780f77b1616495a27bab2a21f65c9c8 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-fastembed/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-fastembed/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FastEmbedEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.fastembed"
 
+[tool.llamahub.class_authors]
+FastEmbedEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-gemini/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-gemini/pyproject.toml
index b0c93d8c15d9f3795d01dde9aeae6bedd489a58f..0e8f85c1ba290353f916a22406b22777e7cd4b83 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-gemini/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-gemini/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GeminiEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.gemini"
 
+[tool.llamahub.class_authors]
+GeminiEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-google/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-google/pyproject.toml
index dbd9ddf3014444f22e77b01ccaf220b363e6e18e..5ad535fa2dce16744854d61197e28a8b56766277 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-google/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-google/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GeminiEmbedding", "GooglePaLMEmbedding", "GoogleUnivSentEncoderEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.google"
 
+[tool.llamahub.class_authors]
+GeminiEmbedding = "llama-index"
+GooglePaLMEmbedding = "llama-index"
+GoogleUnivSentEncoderEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-gradient/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-gradient/pyproject.toml
index 7e4cc41c9059e8507f82f23d938186763cb1c52c..e12ce622fddc406cf84eab6ffee4c94ceffe8d8f 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-gradient/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-gradient/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GradientEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.gradient"
 
+[tool.llamahub.class_authors]
+GradientEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml
index 18a5b560ff4cc18bd7913bf59192cfd2709c14eb..b939326567d9293ce2560f20bafd03fe79f1e3d6 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum-intel/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["IntelEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.huggingface_optimum_intel"
 
+[tool.llamahub.class_authors]
+IntelEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum/pyproject.toml
index 608226b7e3e2abcce4f0323e58c49977442c65f0..4db881029bc326b8ebd2b4eec122c19964c83aeb 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface-optimum/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OptimumEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.huggingface_optimum"
 
+[tool.llamahub.class_authors]
+OptimumEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml
index 8c007e8729df6de6c94373c69a94b5ff9c3e0eb7..62a9f739d2fb0caf3d02b70faba304e6ffb7ce23 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-huggingface/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HuggingFaceEmbedding", "HuggingFaceInferenceAPIEmbedding", "HuggingFaceInferenceAPIEmbeddings"]
 contains_example = false
 import_path = "llama_index.embeddings.huggingface"
 
+[tool.llamahub.class_authors]
+HuggingFaceEmbedding = "llama-index"
+HuggingFaceInferenceAPIEmbedding = "llama-index"
+HuggingFaceInferenceAPIEmbeddings = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-instructor/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-instructor/pyproject.toml
index 132a57777d4533a5218f01a86ab64d0f66b7ff6a..0a34da15817abb76f0eda40ad2fc70237e9e30a5 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-instructor/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-instructor/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["InstructorEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.instructor"
 
+[tool.llamahub.class_authors]
+InstructorEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-jinaai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-jinaai/pyproject.toml
index 78a40a5eba514afad18ca856af5aaeceb33fef3f..e1e99c19c98709a79cba956942ee717bf9fa298f 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-jinaai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-jinaai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["JinaEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.jinaai"
 
+[tool.llamahub.class_authors]
+JinaEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-langchain/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-langchain/pyproject.toml
index c66215aa795478569fed37845192b1011cc0109c..44e94848a0ff67b5ccd1d06e85c328a9222de3ac 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-langchain/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-langchain/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LangchainEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.langchain"
 
+[tool.llamahub.class_authors]
+LangchainEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-llm-rails/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-llm-rails/pyproject.toml
index c719d52151f2d91b2962fa69ce6dd919a4912347..c15eceeb49818766c2577c3d2c26ffc48fe13f0a 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-llm-rails/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-llm-rails/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LLMRailsEmbedding", "LLMRailsEmbeddings"]
 contains_example = false
 import_path = "llama_index.embeddings.llm_rails"
 
+[tool.llamahub.class_authors]
+LLMRailsEmbedding = "llama-index"
+LLMRailsEmbeddings = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-mistralai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-mistralai/pyproject.toml
index f4d36d13e2b4ab9152d53f3d404370b817e7cc84..cccdb84cbb0f3fa2e379f99e22303059000e6f71 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-mistralai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-mistralai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MistralAIEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.mistralai"
 
+[tool.llamahub.class_authors]
+MistralAIEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml
index c5709b3cc2a1e262ed15ff165df141a8a3b50d1c..47523a8fea29ded9d4c2ccbe49da16c4ab9443b5 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-nomic/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["NomicEmbedding", "NomicHFEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.nomic"
 
+[tool.llamahub.class_authors]
+NomicEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-ollama/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-ollama/pyproject.toml
index 417560b07bfae4117be6961a05dab272d2ff7287..3dbaf5b6a89802e30182b24c62cbfda5576ded88 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-ollama/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-ollama/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OllamaEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.ollama"
 
+[tool.llamahub.class_authors]
+OllamaEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml
index 38bfbe03621442d2d40b947ad3425270d3360978..bab5fc085e0e8472e7a69ba1e7f7460631e80225 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-openai/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAIEmbedding", "OpenAIEmbeddingMode", "OpenAIEmbeddingModeModel", "OpenAIEmbeddingModelType"]
 contains_example = false
 import_path = "llama_index.embeddings.openai"
 
+[tool.llamahub.class_authors]
+OpenAIEmbedding = "llama-index"
+OpenAIEmbeddingMode = "llama-index"
+OpenAIEmbeddingModeModel = "llama-index"
+OpenAIEmbeddingModelType = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-sagemaker-endpoint/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-sagemaker-endpoint/pyproject.toml
index 08ba1c2c5babe9d3db2643f0d94f3efcf6f3e09d..c4277768e883e185a6f9745543712a2cc7cd3a8f 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-sagemaker-endpoint/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-sagemaker-endpoint/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SageMakerEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.sagemaker_endpoint"
 
+[tool.llamahub.class_authors]
+SageMakerEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-text-embeddings-inference/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-text-embeddings-inference/pyproject.toml
index fb031b31d30f214f135affdad7dc76f3199c837f..5e8a943dfb36ce447ddfeedb14c9886fe6badbae 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-text-embeddings-inference/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-text-embeddings-inference/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TextEmbeddingsInference"]
 contains_example = false
 import_path = "llama_index.embeddings.text_embeddings_inference"
 
+[tool.llamahub.class_authors]
+TextEmbeddingsInference = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-together/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-together/pyproject.toml
index b10681331b14859ea6fc3d43c31e86b91d594afe..0a9729a3fd2d16f6d884b0f40d7c2ddc38a71121 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-together/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-together/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TogetherEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.together"
 
+[tool.llamahub.class_authors]
+TogetherEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/embeddings/llama-index-embeddings-voyageai/pyproject.toml b/llama-index-integrations/embeddings/llama-index-embeddings-voyageai/pyproject.toml
index a73babfca115fff62216ab1f978fb92e87b1fb70..027e33b0ff0714cdeedbfd71fff20e7a76a8dde5 100644
--- a/llama-index-integrations/embeddings/llama-index-embeddings-voyageai/pyproject.toml
+++ b/llama-index-integrations/embeddings/llama-index-embeddings-voyageai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["VoyageEmbedding"]
 contains_example = false
 import_path = "llama_index.embeddings.voyageai"
 
+[tool.llamahub.class_authors]
+VoyageEmbedding = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/evaluation/llama-index-evaluation-tonic-validate/pyproject.toml b/llama-index-integrations/evaluation/llama-index-evaluation-tonic-validate/pyproject.toml
index 3b91d206bd7054baf898266511624be7ce64f003..b6778c0796556f99ad107dbd7f5478f25fca0014 100644
--- a/llama-index-integrations/evaluation/llama-index-evaluation-tonic-validate/pyproject.toml
+++ b/llama-index-integrations/evaluation/llama-index-evaluation-tonic-validate/pyproject.toml
@@ -8,10 +8,18 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AnswerConsistencyBinaryEvaluator", "AnswerConsistencyEvaluator", "AnswerSimilarityEvaluator", "AugmentationAccuracyEvaluator", "AugmentationPrecisionEvaluator", "RetrievalPrecisionEvaluator", "TonicValidateEvaluator"]
 contains_example = false
 import_path = "llama_index.evaluation.tonic_validate"
 
+[tool.llamahub.class_authors]
+AnswerConsistencyBinaryEvaluator = "llama-index"
+AnswerConsistencyEvaluator = "llama-index"
+AnswerSimilarityEvaluator = "llama-index"
+AugmentationAccuracyEvaluator = "llama-index"
+AugmentationPrecisionEvaluator = "llama-index"
+RetrievalPrecisionEvaluator = "llama-index"
+TonicValidateEvaluator = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/extractors/llama-index-extractors-entity/pyproject.toml b/llama-index-integrations/extractors/llama-index-extractors-entity/pyproject.toml
index bde6a0c0781429cac6d11c606f2b5c64b6580e87..fa37deefb8cb4cfa9e3a37e170a13550f0827d0b 100644
--- a/llama-index-integrations/extractors/llama-index-extractors-entity/pyproject.toml
+++ b/llama-index-integrations/extractors/llama-index-extractors-entity/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["EntityExtractor"]
 contains_example = false
 import_path = "llama_index.extractors.entity"
 
+[tool.llamahub.class_authors]
+EntityExtractor = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/extractors/llama-index-extractors-marvin/pyproject.toml b/llama-index-integrations/extractors/llama-index-extractors-marvin/pyproject.toml
index f6e2999c9da8b1a3924734445c84e5a8c1690211..52402eada50cde6d7490a539c2ec1e69643b95a8 100644
--- a/llama-index-integrations/extractors/llama-index-extractors-marvin/pyproject.toml
+++ b/llama-index-integrations/extractors/llama-index-extractors-marvin/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MarvinMetadataExtractor"]
 contains_example = false
 import_path = "llama_index.extractors.marvin"
 
+[tool.llamahub.class_authors]
+MarvinMetadataExtractor = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/graph_stores/llama-index-graph-stores-falkordb/pyproject.toml b/llama-index-integrations/graph_stores/llama-index-graph-stores-falkordb/pyproject.toml
index 0c2ed4a88b7a6c4d714225233094d39c578b52d8..9b7169ba40f27c5cd4f9311f990b1720b28cc143 100644
--- a/llama-index-integrations/graph_stores/llama-index-graph-stores-falkordb/pyproject.toml
+++ b/llama-index-integrations/graph_stores/llama-index-graph-stores-falkordb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FalkorDBGraphStore"]
 contains_example = false
 import_path = "llama_index.graph_stores.falkordb"
 
+[tool.llamahub.class_authors]
+FalkorDBGraphStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/graph_stores/llama-index-graph-stores-kuzu/pyproject.toml b/llama-index-integrations/graph_stores/llama-index-graph-stores-kuzu/pyproject.toml
index 5c7c58bfd0f69cc8dad9cc4a7de591b7a4087f9c..1f46f63f96ec520d7bb12812081b0ea4db50d11c 100644
--- a/llama-index-integrations/graph_stores/llama-index-graph-stores-kuzu/pyproject.toml
+++ b/llama-index-integrations/graph_stores/llama-index-graph-stores-kuzu/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["KuzuGraphStore"]
 contains_example = false
 import_path = "llama_index.graph_stores.kuzu"
 
+[tool.llamahub.class_authors]
+KuzuGraphStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/graph_stores/llama-index-graph-stores-nebula/pyproject.toml b/llama-index-integrations/graph_stores/llama-index-graph-stores-nebula/pyproject.toml
index b22a1ab6a0e92b9769efbb9ad46d9288459143dd..0161da0c375ec3564cdf8c9926b1cdd0a52a7c2d 100644
--- a/llama-index-integrations/graph_stores/llama-index-graph-stores-nebula/pyproject.toml
+++ b/llama-index-integrations/graph_stores/llama-index-graph-stores-nebula/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["NebulaGraphStore"]
 contains_example = false
 import_path = "llama_index.graph_stores.nebula"
 
+[tool.llamahub.class_authors]
+NebulaGraphStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/pyproject.toml b/llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/pyproject.toml
index 2ff2348c05bc310c77ee56aedba923a5147afbc8..bad604357d64f23564b9490719c16d2f93155801 100644
--- a/llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/pyproject.toml
+++ b/llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Neo4jGraphStore"]
 contains_example = false
 import_path = "llama_index.graph_stores.neo4j"
 
+[tool.llamahub.class_authors]
+Neo4jGraphStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-colbert/pyproject.toml b/llama-index-integrations/indices/llama-index-indices-managed-colbert/pyproject.toml
index eddf4fc426fe0e2c4439e9c220a796f9b2e8b1d9..802b609a5906dab5ecf5f5c08176de862ea6d2df 100644
--- a/llama-index-integrations/indices/llama-index-indices-managed-colbert/pyproject.toml
+++ b/llama-index-integrations/indices/llama-index-indices-managed-colbert/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ColbertIndex"]
 contains_example = false
 import_path = "llama_index.indices.managed.colbert"
 
+[tool.llamahub.class_authors]
+ColbertIndex = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-google/pyproject.toml b/llama-index-integrations/indices/llama-index-indices-managed-google/pyproject.toml
index 47bbb7279a51d64a36b841144de0e632033b7ee5..092ff703e8de29c1550a49ee09132e5e0a379d82 100644
--- a/llama-index-integrations/indices/llama-index-indices-managed-google/pyproject.toml
+++ b/llama-index-integrations/indices/llama-index-indices-managed-google/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GoogleIndex"]
 contains_example = false
 import_path = "llama_index.indices.managed.google"
 
+[tool.llamahub.class_authors]
+GoogleIndex = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml
index d4ddb813138bed4fbbc19d5bcac92ef263ee2e1c..421fad547259a91c0990752c535ec27bafdd6ce4 100644
--- a/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml
+++ b/llama-index-integrations/indices/llama-index-indices-managed-llama-cloud/pyproject.toml
@@ -5,18 +5,18 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LlamaCloudIndex", "LlamaCloudRetriever"]
 contains_example = false
 import_path = "llama_index.indices.managed.llama_cloud"
 
+[tool.llamahub.class_authors]
+LlamaCloudIndex = "llama-index"
+LlamaCloudRetriever = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -26,7 +26,6 @@ authors = ["Logan Markewich <logan@llamaindex.ai>"]
 description = "llama-index indices llama-cloud integration"
 license = "MIT"
 name = "llama-index-indices-managed-llama-cloud"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -36,8 +35,6 @@ llama-index-core = "^0.10.0"
 llamaindex-py-client = "^0.1.13"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -51,5 +48,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-vectara/pyproject.toml b/llama-index-integrations/indices/llama-index-indices-managed-vectara/pyproject.toml
index 4480ac24e9b8cda49e917e58645dc26d537ffde2..b2130a3e12dab364558948cfc63fd77c0dbf0308 100644
--- a/llama-index-integrations/indices/llama-index-indices-managed-vectara/pyproject.toml
+++ b/llama-index-integrations/indices/llama-index-indices-managed-vectara/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["VectaraAutoRetriever", "VectaraIndex", "VectaraRetriever"]
 contains_example = false
 import_path = "llama_index.indices.managed.vectara"
 
+[tool.llamahub.class_authors]
+VectaraAutoRetriever = "llama-index"
+VectaraIndex = "llama-index"
+VectaraRetriever = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/indices/llama-index-indices-managed-zilliz/pyproject.toml b/llama-index-integrations/indices/llama-index-indices-managed-zilliz/pyproject.toml
index beff0686492740c3e254db2ee40dd8bc6d9b8092..1efae3b8738aac7fe0dfd6d9df51151e4cc106a8 100644
--- a/llama-index-integrations/indices/llama-index-indices-managed-zilliz/pyproject.toml
+++ b/llama-index-integrations/indices/llama-index-indices-managed-zilliz/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ZillizCloudPipelineIndex", "ZillizCloudPipelineRetriever"]
 contains_example = false
 import_path = "llama_index.indices.managed.zilliz"
 
+[tool.llamahub.class_authors]
+ZillizCloudPipelineIndex = "llama-index"
+ZillizCloudPipelineRetriever = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-ai21/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-ai21/pyproject.toml
index f6d75a9c2204ffa786a2a1514ee610387985e7d4..0d83f30175a6123883f58ea96f5c662f092e7847 100644
--- a/llama-index-integrations/llms/llama-index-llms-ai21/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-ai21/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AI21"]
 contains_example = false
 import_path = "llama_index.llms.ai21"
 
+[tool.llamahub.class_authors]
+AI21 = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-anthropic/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-anthropic/pyproject.toml
index 99242d4b31ff7c2375608f7ec85793404b44d49f..8325f3179f4ca370cf885e8c7eb9f16bc2fb4ca9 100644
--- a/llama-index-integrations/llms/llama-index-llms-anthropic/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-anthropic/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Anthropic"]
 contains_example = false
 import_path = "llama_index.llms.anthropic"
 
+[tool.llamahub.class_authors]
+Anthropic = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-anyscale/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-anyscale/pyproject.toml
index 687c3be554e2819b804fcce176a1a372a7500e29..247b56217837abda6e81a9459814d5763eed5f7d 100644
--- a/llama-index-integrations/llms/llama-index-llms-anyscale/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-anyscale/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Anyscale"]
 contains_example = false
 import_path = "llama_index.llms.anyscale"
 
+[tool.llamahub.class_authors]
+Anyscale = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml
index b3151bcf46318c9062ca5a84e7a521e52e4f0305..825ebed3fb9f45b0f98c1aa74a8cce6409beb284 100644
--- a/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-azure-openai/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AsyncAzureOpenAI", "AzureOpenAI", "SyncAzureOpenAI"]
 contains_example = false
 import_path = "llama_index.llms.azure_openai"
 
+[tool.llamahub.class_authors]
+AsyncAzureOpenAI = "llama-index"
+AzureOpenAI = "llama-index"
+SyncAzureOpenAI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-bedrock/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-bedrock/pyproject.toml
index ddbc8bc2227c506fdc53bc21ce358f6f6ea02a0a..5d7dd83b57ff21a47ffcf8fe74f4dcfca0e5e4cd 100644
--- a/llama-index-integrations/llms/llama-index-llms-bedrock/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-bedrock/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Bedrock", "completion_response_to_chat_response", "completion_with_retry"]
 contains_example = false
 import_path = "llama_index.llms.bedrock"
 
+[tool.llamahub.class_authors]
+Bedrock = "llama-index"
+completion_response_to_chat_response = "llama-index"
+completion_with_retry = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-clarifai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-clarifai/pyproject.toml
index 7b8804917bfa11f2856e6e2a83d392a92b570720..43169f4d58984b17c9752b596f95a6dc5349b24a 100644
--- a/llama-index-integrations/llms/llama-index-llms-clarifai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-clarifai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Clarifai"]
 contains_example = false
 import_path = "llama_index.llms.clarifai"
 
+[tool.llamahub.class_authors]
+Clarifai = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-cohere/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-cohere/pyproject.toml
index 3ed1662c65f78b8d1df7b98447b94d3b957ae52a..802aa04915a87340a27c027dc33b81a48e48a464 100644
--- a/llama-index-integrations/llms/llama-index-llms-cohere/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-cohere/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Cohere"]
 contains_example = false
 import_path = "llama_index.llms.cohere"
 
+[tool.llamahub.class_authors]
+Cohere = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-dashscope/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-dashscope/pyproject.toml
index 64c3118edf07cbe7e71db57064412ebfc08b721a..4f7c6a45d6215607b8ed276dcde204591136ef92 100644
--- a/llama-index-integrations/llms/llama-index-llms-dashscope/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-dashscope/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DashScope", "DashScopeGenerationModels"]
 contains_example = false
 import_path = "llama_index.llms.dashscope"
 
+[tool.llamahub.class_authors]
+DashScope = "llama-index"
+DashScopeGenerationModels = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-everlyai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-everlyai/pyproject.toml
index b25347a726d1d47eb1e593c5b67412f94a4dbc03..30abaeaa56a19ee04e7cf0fd85153c6a52393686 100644
--- a/llama-index-integrations/llms/llama-index-llms-everlyai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-everlyai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["EverlyAI"]
 contains_example = false
 import_path = "llama_index.llms.everlyai"
 
+[tool.llamahub.class_authors]
+EverlyAI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-gemini/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-gemini/pyproject.toml
index 5205c93513483295c510068eaee3e326d19e128e..12274634dd10823593ccfb903e5b03c514a59ef4 100644
--- a/llama-index-integrations/llms/llama-index-llms-gemini/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-gemini/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Gemini"]
 contains_example = false
 import_path = "llama_index.llms.gemini"
 
+[tool.llamahub.class_authors]
+Gemini = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-gradient/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-gradient/pyproject.toml
index 81acbf8f664901325f47c4215ad83d1f85c9c89d..0ae86f7c927a8f06493a26316a16d9da61b55539 100644
--- a/llama-index-integrations/llms/llama-index-llms-gradient/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-gradient/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GradientBaseModelLLM", "GradientModelAdapterLLM"]
 contains_example = false
 import_path = "llama_index.llms.gradient"
 
+[tool.llamahub.class_authors]
+GradientBaseModelLLM = "llama-index"
+GradientModelAdapterLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-huggingface/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-huggingface/pyproject.toml
index 195369811a2292398ab827c6ae21344f0d64399b..4c7860257971a88e6063667153fdb80ff05de501 100644
--- a/llama-index-integrations/llms/llama-index-llms-huggingface/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-huggingface/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HuggingFaceInferenceAPI", "HuggingFaceLLM"]
 contains_example = false
 import_path = "llama_index.llms.huggingface"
 
+[tool.llamahub.class_authors]
+HuggingFaceInferenceAPI = "llama-index"
+HuggingFaceLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-konko/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-konko/pyproject.toml
index 726ab6b41259a3a7928aee480e7ea8c1916a36d1..74dbe95d9279fa3028491e3fee0e0537dc5d9a0e 100644
--- a/llama-index-integrations/llms/llama-index-llms-konko/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-konko/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Konko"]
 contains_example = false
 import_path = "llama_index.llms.konko"
 
+[tool.llamahub.class_authors]
+Konko = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-langchain/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-langchain/pyproject.toml
index 69768d121adac4a8eaa72c80d435215a1ce61d0a..17a1ce1674b51c7c4ab8e984fb0a32e3326ea79b 100644
--- a/llama-index-integrations/llms/llama-index-llms-langchain/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-langchain/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LangChainLLM"]
 contains_example = false
 import_path = "llama_index.llms.langchain"
 
+[tool.llamahub.class_authors]
+LangChainLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-litellm/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-litellm/pyproject.toml
index fec49c9e66f1397966f355f8ecf962162859b3d7..002497349cf72cc56cb7b266cc9a7ad19340db0a 100644
--- a/llama-index-integrations/llms/llama-index-llms-litellm/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-litellm/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LiteLLM"]
 contains_example = false
 import_path = "llama_index.llms.litellm"
 
+[tool.llamahub.class_authors]
+LiteLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-llama-api/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-llama-api/pyproject.toml
index 11453a5f27b13f8fbdb4dc9f3e5eec5ffbd00f45..4130bc62b545be8e996f74b5d96a5dbcda472339 100644
--- a/llama-index-integrations/llms/llama-index-llms-llama-api/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-llama-api/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LlamaAPI"]
 contains_example = false
 import_path = "llama_index.llms.llama_api"
 
+[tool.llamahub.class_authors]
+LlamaAPI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-llama-cpp/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-llama-cpp/pyproject.toml
index c4756070983c7d4820da58040bfbc5d7da970a4f..d262b744983e834998153b787da5adcc4440ee0f 100644
--- a/llama-index-integrations/llms/llama-index-llms-llama-cpp/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-llama-cpp/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LlamaCPP"]
 contains_example = false
 import_path = "llama_index.llms.llama_cpp"
 
+[tool.llamahub.class_authors]
+LlamaCPP = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-localai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-localai/pyproject.toml
index a20b45685578c9006ab06aae435d12a269833092..46936d8474742ca678da4442e5e1cd07e9b5149b 100644
--- a/llama-index-integrations/llms/llama-index-llms-localai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-localai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LocalAI"]
 contains_example = false
 import_path = "llama_index.llms.localai"
 
+[tool.llamahub.class_authors]
+LocalAI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-mistralai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-mistralai/pyproject.toml
index f293c4eed45c1b7fe9a7a826064b416b03a62d06..cc7dee54c25edc6add1c1f69ded551057714e9e3 100644
--- a/llama-index-integrations/llms/llama-index-llms-mistralai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-mistralai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MistralAI"]
 contains_example = false
 import_path = "llama_index.llms.mistralai"
 
+[tool.llamahub.class_authors]
+MistralAI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-monsterapi/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-monsterapi/pyproject.toml
index 27ed28aeaefa47c30d1bc02298cbc303c78f9b80..ec86ce232206685bd387ec62101d70f79b92866c 100644
--- a/llama-index-integrations/llms/llama-index-llms-monsterapi/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-monsterapi/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MonsterLLM"]
 contains_example = false
 import_path = "llama_index.llms.monsterapi"
 
+[tool.llamahub.class_authors]
+MonsterLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-mymagic/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-mymagic/pyproject.toml
index ec7838ec7755b3c282cbe80dc2d295799a825f52..ca9b5679a7919c3cce72b1ea1a4744a5f6b169ef 100644
--- a/llama-index-integrations/llms/llama-index-llms-mymagic/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-mymagic/pyproject.toml
@@ -5,18 +5,17 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MyMagic"]
 contains_example = false
 import_path = "llama_index.llms.mymagic"
 
+[tool.llamahub.class_authors]
+MyMagicAI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -26,7 +25,6 @@ authors = ["Vitali Avagyan <vitali@mymagic.ai>"]
 description = "llama-index llms mymagic integration"
 license = "MIT"
 name = "llama-index-llms-mymagic"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -35,8 +33,6 @@ python = ">=3.8.1,<3.12"
 llama-index-core = "^0.10.0"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -50,5 +46,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/llms/llama-index-llms-neutrino/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-neutrino/pyproject.toml
index d268fa1af5ca480a258d6e690e5b008c1d9a6cf5..568fa1ea32616ea609f63f1a6da3a02c6818ebda 100644
--- a/llama-index-integrations/llms/llama-index-llms-neutrino/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-neutrino/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Neutrino"]
 contains_example = false
 import_path = "llama_index.llms.neutrino"
 
+[tool.llamahub.class_authors]
+Neutrino = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml
index 8620cd2ef1fee4580d9861b159c6f0fe79176388..7e8fbab4b96fd9a118a97d18bede16abdb015b87 100644
--- a/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-nvidia-tensorrt/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LocalTensorRTLLM"]
 contains_example = false
 import_path = "llama_index.llms.nvidia_tensorrt"
 
+[tool.llamahub.class_authors]
+LocalTensorRTLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-nvidia-triton/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-nvidia-triton/pyproject.toml
index 149181c01ec5f8115d9191dc57080e04db613b1a..b16e58461da42d60cc9bbe1541bee71b119fdfc3 100644
--- a/llama-index-integrations/llms/llama-index-llms-nvidia-triton/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-nvidia-triton/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["NvidiaTriton"]
 contains_example = false
 import_path = "llama_index.llms.nvidia_triton"
 
+[tool.llamahub.class_authors]
+NvidiaTriton = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-ollama/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-ollama/pyproject.toml
index dc714af1389b8e0c3f1dd323240c947de9cf3361..5f79d096867f040a7773a3bb2da01a7b10fda85c 100644
--- a/llama-index-integrations/llms/llama-index-llms-ollama/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-ollama/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Ollama"]
 contains_example = false
 import_path = "llama_index.llms.ollama"
 
+[tool.llamahub.class_authors]
+Ollama = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-openai-like/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-openai-like/pyproject.toml
index ca6cd0228e967bbda038456ea3bfab38d7a6c7fa..66eb5efc5e2f28544f03a6bcdf3c59a4eba99f45 100644
--- a/llama-index-integrations/llms/llama-index-llms-openai-like/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-openai-like/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAILike"]
 contains_example = false
 import_path = "llama_index.llms.openai_like"
 
+[tool.llamahub.class_authors]
+OpenAILike = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml
index a73ec5a7109c99eb1250065552d9e9537cb094ba..9894b271dcf887c497e9acbd70983699db32bc4b 100644
--- a/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAI"]
 contains_example = false
 import_path = "llama_index.llms.openai"
 
+[tool.llamahub.class_authors]
+AsyncOpenAI = "llama-index"
+OpenAI = "llama-index"
+SyncOpenAI = "llama-index"
+Tokenizer = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-openllm/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-openllm/pyproject.toml
index a848cde96f6468fbd3c1036839cc5a94e15b82fd..f37a9faea0ef77bfd2278a35a74f118199d26edd 100644
--- a/llama-index-integrations/llms/llama-index-llms-openllm/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-openllm/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenLLM", "OpenLLMAPI"]
 contains_example = false
 import_path = "llama_index.llms.openllm"
 
+[tool.llamahub.class_authors]
+OpenLLM = "llama-index"
+OpenLLMAPI = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-openrouter/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-openrouter/pyproject.toml
index 5828017e6fb2aaa0fe440dde73f472d5e8462581..1c65b99d7c9525d71fcd368f27a209646f486767 100644
--- a/llama-index-integrations/llms/llama-index-llms-openrouter/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-openrouter/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenRouter"]
 contains_example = false
 import_path = "llama_index.llms.openrouter"
 
+[tool.llamahub.class_authors]
+OpenRouter = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-palm/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-palm/pyproject.toml
index 288926a8e96208f84a617fc7271ab8ae1de8e624..c562157cd38bfa9094c8a78669b7e24c2532b9d0 100644
--- a/llama-index-integrations/llms/llama-index-llms-palm/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-palm/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PaLM"]
 contains_example = false
 import_path = "llama_index.llms.palm"
 
+[tool.llamahub.class_authors]
+PaLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-perplexity/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-perplexity/pyproject.toml
index e0a7597cab5e2fe382f68db165f000cd40b914a6..6c46a1d77ca1e56bc1147541641552c97d5b5101 100644
--- a/llama-index-integrations/llms/llama-index-llms-perplexity/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-perplexity/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Perplexity"]
 contains_example = false
 import_path = "llama_index.llms.perplexity"
 
+[tool.llamahub.class_authors]
+Perplexity = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-portkey/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-portkey/pyproject.toml
index 8a15c57a9ddc76aac9e805d8f6cf1123cabef37b..7156f586e8d1efce1ec714e6b71fd073d05e794d 100644
--- a/llama-index-integrations/llms/llama-index-llms-portkey/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-portkey/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Portkey"]
 contains_example = false
 import_path = "llama_index.llms.portkey"
 
+[tool.llamahub.class_authors]
+Portkey = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-predibase/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-predibase/pyproject.toml
index 6dd781d68ea77e7748902c9a65a2d98ca10a9c06..b6f637173df810ae2d934488ff2950ec19611f17 100644
--- a/llama-index-integrations/llms/llama-index-llms-predibase/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-predibase/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PredibaseLLM"]
 contains_example = false
 import_path = "llama_index.llms.predibase"
 
+[tool.llamahub.class_authors]
+PredibaseLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-replicate/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-replicate/pyproject.toml
index c84a363dc4655d6cdee4e4382ece4b305dc99940..b4b93233e27d10ae70b67370d2cde6b5ad779430 100644
--- a/llama-index-integrations/llms/llama-index-llms-replicate/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-replicate/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Replicate"]
 contains_example = false
 import_path = "llama_index.llms.replicate"
 
+[tool.llamahub.class_authors]
+Replicate = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-rungpt/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-rungpt/pyproject.toml
index 642f215f4c0befe6a06d555c0473690f136bcf5b..81c22efb3af6abf0f02ad578a3a425fd736030bd 100644
--- a/llama-index-integrations/llms/llama-index-llms-rungpt/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-rungpt/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RunGptLLM"]
 contains_example = false
 import_path = "llama_index.llms.rungpt"
 
+[tool.llamahub.class_authors]
+RunGptLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-sagemaker-endpoint/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-sagemaker-endpoint/pyproject.toml
index 8eef65817960554d9b5a052247d28a41e27f284b..f4d21925a3fcfdb0b3336f5ab33d6f9c81215330 100644
--- a/llama-index-integrations/llms/llama-index-llms-sagemaker-endpoint/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-sagemaker-endpoint/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SageMakerLLM"]
 contains_example = false
 import_path = "llama_index.llms.sagemaker_endpoint"
 
+[tool.llamahub.class_authors]
+SageMakerLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-together/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-together/pyproject.toml
index 1a0ea504bdb70cf0c74863b45fe8dae9efab088f..51b99268eddebce73d23cb7cb4b69b36e79a8045 100644
--- a/llama-index-integrations/llms/llama-index-llms-together/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-together/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TogetherLLM"]
 contains_example = false
 import_path = "llama_index.llms.together"
 
+[tool.llamahub.class_authors]
+TogetherLLM = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-vertex/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-vertex/pyproject.toml
index bdc5238c17feccff2e1531192ea8261181990201..5431f90f5cc2ae28aa63e95e502477827a5cb84b 100644
--- a/llama-index-integrations/llms/llama-index-llms-vertex/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-vertex/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Vertex"]
 contains_example = false
 import_path = "llama_index.llms.vertex"
 
+[tool.llamahub.class_authors]
+Vertex = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml
index 3e08676380b091d9b9ea4db095f0ffb635f02d21..792638191c67c40c0934bf00d12e1e48b6f3061d 100644
--- a/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-vllm/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Vllm"]
 contains_example = false
 import_path = "llama_index.llms.vllm"
 
+[tool.llamahub.class_authors]
+Vllm = "llama-index"
+VllmServer = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-watsonx/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-watsonx/pyproject.toml
index afe8e0879bd898799beb0ba1aa1ea40e28a2d9ef..1bbdcd2fff301e3234618cea50fd8901a38e1b76 100644
--- a/llama-index-integrations/llms/llama-index-llms-watsonx/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-watsonx/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WatsonX"]
 contains_example = false
 import_path = "llama_index.llms.watsonx"
 
+[tool.llamahub.class_authors]
+WatsonX = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/llms/llama-index-llms-xinference/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-xinference/pyproject.toml
index 8474c5e8ba4d716a8157153d395c28e150f8283a..1513e8541dfe1235cb30ec0c0abbba0910808e9d 100644
--- a/llama-index-integrations/llms/llama-index-llms-xinference/pyproject.toml
+++ b/llama-index-integrations/llms/llama-index-llms-xinference/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Xinference"]
 contains_example = false
 import_path = "llama_index.llms.xinference"
 
+[tool.llamahub.class_authors]
+Xinference = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-azure-openai/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-azure-openai/pyproject.toml
index a54fa5a9ee6aa5a9b49cc5a4c515f65801e1948b..63fa01569bb4adf3461faf3db11b3e5c053a7b5e 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-azure-openai/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-azure-openai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzureOpenAIMultiModal"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.azure_openai"
 
+[tool.llamahub.class_authors]
+AzureOpenAIMultiModal = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-dashscope/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-dashscope/pyproject.toml
index c652e573a263524f9c3f03294b38ed1a1bc00cfa..85d97baf3bfb9e8140c3d76602a1a5cf70ccfd72 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-dashscope/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-dashscope/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DashScopeMultiModal", "DashScopeMultiModalModels"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.dashscope"
 
+[tool.llamahub.class_authors]
+DashScopeMultiModal = "llama-index"
+DashScopeMultiModalModels = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-gemini/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-gemini/pyproject.toml
index 3317f2c7b376f3ea76c96e94f60a28f09c99615d..2a354af0a1f8017f7ccea83e4496d69165fec8e3 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-gemini/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-gemini/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GeminiMultiModal"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.gemini"
 
+[tool.llamahub.class_authors]
+GeminiMultiModal = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-ollama/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-ollama/pyproject.toml
index d7d28e5ba89e0764049464cbdc4e395ae28c8dac..957a453e66a9bf6bd6ced57c8bb04de174b6f8f7 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-ollama/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-ollama/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OllamaMultiModal"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.ollama"
 
+[tool.llamahub.class_authors]
+OllamaMultiModal = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-openai/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-openai/pyproject.toml
index 208a6b20d39a0c8964ae7d1c3b7965d2817c30b6..0e344ece39b9a9d95778260c10bb98b5c33da648 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-openai/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-openai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAIMultiModal"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.openai"
 
+[tool.llamahub.class_authors]
+OpenAIMultiModal = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate-multi-modal/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate-multi-modal/pyproject.toml
index b6c40702b38b18b4ab22940e27fc94dd51e82152..8e38a9eafef0f8e94efa77125acc2d1fe45565bb 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate-multi-modal/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate-multi-modal/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ReplicateMultiModal"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.replicate_multi_modal"
 
+[tool.llamahub.class_authors]
+ReplicateMultiModal = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate/pyproject.toml b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate/pyproject.toml
index 3fc38d96c1a29b722691a30bbc59172d50b41e1f..73c60c031073526344850e28c14fadbb6fd22dfb 100644
--- a/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate/pyproject.toml
+++ b/llama-index-integrations/multi_modal_llms/llama-index-multi-modal-llms-replicate/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ReplicateMultiModal"]
 contains_example = false
 import_path = "llama_index.multi_modal_llms.replicate"
 
+[tool.llamahub.class_authors]
+ReplicateMultiModal = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/output_parsers/llama-index-output-parsers-guardrails/pyproject.toml b/llama-index-integrations/output_parsers/llama-index-output-parsers-guardrails/pyproject.toml
index fa5333cb088c3ee4b7d2bc40fe9184807c78b425..3159eaacf3cf41e8ffebd8f515ef86b424d395e1 100644
--- a/llama-index-integrations/output_parsers/llama-index-output-parsers-guardrails/pyproject.toml
+++ b/llama-index-integrations/output_parsers/llama-index-output-parsers-guardrails/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GuardrailsOutputParser"]
 contains_example = false
 import_path = "llama_index.output_parsers.guardrails"
 
+[tool.llamahub.class_authors]
+GuardrailsOutputParser = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/output_parsers/llama-index-output-parsers-langchain/pyproject.toml b/llama-index-integrations/output_parsers/llama-index-output-parsers-langchain/pyproject.toml
index b22d12638a1fc90595ea86dc54dcaf601657396c..8bb62c0a80afa82640311e2aa1514468a07767c1 100644
--- a/llama-index-integrations/output_parsers/llama-index-output-parsers-langchain/pyproject.toml
+++ b/llama-index-integrations/output_parsers/llama-index-output-parsers-langchain/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LangchainOutputParser"]
 contains_example = false
 import_path = "llama_index.output_parsers.langchain"
 
+[tool.llamahub.class_authors]
+LangchainOutputParser = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-cohere-rerank/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-cohere-rerank/pyproject.toml
index 6cb688f5234359344ac97840be57444a4055a9cd..68c0c0a6bd119dd63cbb5208f19f87218679d84f 100644
--- a/llama-index-integrations/postprocessor/llama-index-postprocessor-cohere-rerank/pyproject.toml
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-cohere-rerank/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CohereRerank"]
 contains_example = false
 import_path = "llama_index.postprocessor.cohere_rerank"
 
+[tool.llamahub.class_authors]
+CohereRerank = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-flag-embedding-reranker/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-flag-embedding-reranker/pyproject.toml
index 4427bf30faeb135da3180e2be93e36de2ba04df3..4ca556a5b20986c8f34df6aa97b56441d56dc146 100644
--- a/llama-index-integrations/postprocessor/llama-index-postprocessor-flag-embedding-reranker/pyproject.toml
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-flag-embedding-reranker/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FlagEmbeddingReranker"]
 contains_example = false
 import_path = "llama_index.postprocessor.flag_embedding_reranker"
 
+[tool.llamahub.class_authors]
+FlagEmbeddingReranker = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-longllmlingua/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-longllmlingua/pyproject.toml
index 9f64506a3688c4a42d09fdce12d56fb3b1f389ec..530f958e538225627f1d8a7e697d138802cfd8d9 100644
--- a/llama-index-integrations/postprocessor/llama-index-postprocessor-longllmlingua/pyproject.toml
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-longllmlingua/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LongLLMLinguaPostprocessor"]
 contains_example = false
 import_path = "llama_index.postprocessor.longllmlingua"
 
+[tool.llamahub.class_authors]
+LongLLMLinguaPostprocessor = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml
index 84bfeef1b47f1d276d418781ac2d4bc4382e305f..f4c46c84527619ad9dc761d34e2e9fb72734a4a4 100644
--- a/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-presidio/pyproject.toml
@@ -5,18 +5,17 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PresidioPIINodePostprocessor"]
 contains_example = false
 import_path = "llama_index.postprocessor.presidio"
 
+[tool.llamahub.class_authors]
+PresidioPIINodePostprocessor = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -27,7 +26,6 @@ description = "llama-index postprocessor presidio integration"
 license = "MIT"
 maintainers = ["roeybc"]
 name = "llama-index-postprocessor-presidio"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -38,8 +36,6 @@ presidio-analyzer = "^2.2.353"
 presidio-anonymizer = "^2.2.353"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -53,5 +49,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-rankgpt-rerank/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-rankgpt-rerank/pyproject.toml
index 6eff45fc3bddba85b58de83c49541ad44475e9f6..0a64592833a5b96a44ff797b02d18eab523932bb 100644
--- a/llama-index-integrations/postprocessor/llama-index-postprocessor-rankgpt-rerank/pyproject.toml
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-rankgpt-rerank/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RankGPTRerank"]
 contains_example = false
 import_path = "llama_index.postprocessor.rankgpt_rerank"
 
+[tool.llamahub.class_authors]
+RankGPTRerank = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/postprocessor/llama-index-postprocessor-sbert-rerank/pyproject.toml b/llama-index-integrations/postprocessor/llama-index-postprocessor-sbert-rerank/pyproject.toml
index f75f932e6e26287ddb1ea43e598c0e38b8ccc043..ae08e58c77ad2c152ed87af9fbe082838592b8d3 100644
--- a/llama-index-integrations/postprocessor/llama-index-postprocessor-sbert-rerank/pyproject.toml
+++ b/llama-index-integrations/postprocessor/llama-index-postprocessor-sbert-rerank/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SentenceTransformerRerank"]
 contains_example = false
 import_path = "llama_index.postprocessor.sbert_rerank"
 
+[tool.llamahub.class_authors]
+SentenceTransformerRerank = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/program/llama-index-program-evaporate/pyproject.toml b/llama-index-integrations/program/llama-index-program-evaporate/pyproject.toml
index 0d5c79c5f0f00fc828834debbb72da9f223e69e5..effd0d27696b3ddd2d25875a92caa923f8685d43 100644
--- a/llama-index-integrations/program/llama-index-program-evaporate/pyproject.toml
+++ b/llama-index-integrations/program/llama-index-program-evaporate/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BaseEvaporateProgram", "DFEvaporateProgram"]
 contains_example = false
 import_path = "llama_index.program.evaporate"
 
+[tool.llamahub.class_authors]
+BaseEvaporateProgram = "llama-index"
+DFEvaporateProgram = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/program/llama-index-program-guidance/pyproject.toml b/llama-index-integrations/program/llama-index-program-guidance/pyproject.toml
index e8eab0dc7acf4371d599c0e123797846dfb5a1f4..9b89670de85a539b62e6f9a666ff2174f91d3fe5 100644
--- a/llama-index-integrations/program/llama-index-program-guidance/pyproject.toml
+++ b/llama-index-integrations/program/llama-index-program-guidance/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GuidancePydanticProgram"]
 contains_example = false
 import_path = "llama_index.program.guidance"
 
+[tool.llamahub.class_authors]
+GuidancePydanticProgram = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/program/llama-index-program-lmformatenforcer/pyproject.toml b/llama-index-integrations/program/llama-index-program-lmformatenforcer/pyproject.toml
index 9cd4c8ecc8e93f38d5e53991f8e0c11f28bc1a65..3d1091e4a8be5f64fdae78ad6e8f34a5da4eb12a 100644
--- a/llama-index-integrations/program/llama-index-program-lmformatenforcer/pyproject.toml
+++ b/llama-index-integrations/program/llama-index-program-lmformatenforcer/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LMFormatEnforcerPydanticProgram"]
 contains_example = false
 import_path = "llama_index.program.lmformatenforcer"
 
+[tool.llamahub.class_authors]
+LMFormatEnforcerPydanticProgram = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/program/llama-index-program-openai/pyproject.toml b/llama-index-integrations/program/llama-index-program-openai/pyproject.toml
index 88d5127ee63a75c99b5443d0533bf268be31b031..5937538dfc1f2662170a7a084f2730c6cee05e35 100644
--- a/llama-index-integrations/program/llama-index-program-openai/pyproject.toml
+++ b/llama-index-integrations/program/llama-index-program-openai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAIPydanticProgram"]
 contains_example = false
 import_path = "llama_index.program.openai"
 
+[tool.llamahub.class_authors]
+OpenAIPydanticProgram = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/question_gen/llama-index-question-gen-guidance/pyproject.toml b/llama-index-integrations/question_gen/llama-index-question-gen-guidance/pyproject.toml
index b073ad30396f88c1316ed6b17909d5c1c5d65781..0cd8a5e82c216642266081a3cf346bb7ca30d11b 100644
--- a/llama-index-integrations/question_gen/llama-index-question-gen-guidance/pyproject.toml
+++ b/llama-index-integrations/question_gen/llama-index-question-gen-guidance/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GuidanceQuestionGenerator"]
 contains_example = false
 import_path = "llama_index.question_gen.guidance"
 
+[tool.llamahub.class_authors]
+GuidanceQuestionGenerator = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/question_gen/llama-index-question-gen-openai/pyproject.toml b/llama-index-integrations/question_gen/llama-index-question-gen-openai/pyproject.toml
index f51fba175f5f00862370a83ad1cd1b8eff1b44f5..d4bfb1e36bf0f94e51ca3bd8ee7c96e20d7100e2 100644
--- a/llama-index-integrations/question_gen/llama-index-question-gen-openai/pyproject.toml
+++ b/llama-index-integrations/question_gen/llama-index-question-gen-openai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAIQuestionGenerator"]
 contains_example = false
 import_path = "llama_index.question_gen.openai"
 
+[tool.llamahub.class_authors]
+OpenAIQuestionGenerator = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml
index c08dcf013bca35ce29f3d43a70d9c105d2da4acf..2c18542f4ccef8c9bf3cd21203239dc55264e920 100644
--- a/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-agent-search/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AgentSearchReader"]
 contains_example = false
 import_path = "llama_index.readers.agent_search"
 
+[tool.llamahub.class_authors]
+AgentSearchReader = "emrgnt-cmplxty"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml
index 361516e9bdf44ba01cd6431024a809446f429f58..74c8ac59605456cb1e2790bccea3d79d383b7a3c 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-cdk/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteCDKReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_cdk"
 
+[tool.llamahub.class_authors]
+AirbyteCDKReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml
index 13314029175e8058b5aa9fb93da58917769fb7a6..2c9926a0aec12538dd83767e244c99cdd039a33c 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-gong/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteGongReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_gong"
 
+[tool.llamahub.class_authors]
+AirbyteGongReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml
index 3f43f53c3b56f13acd927dbf70d54bd5452d5427..47ac0c00e61d12565791546d3016f9b00c04a04d 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-hubspot/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteHubspotReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_hubspot"
 
+[tool.llamahub.class_authors]
+AirbyteHubspotReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml
index c5c53ddee8fa3c3de40dccbe3052d58c0d8312f8..f4ec94378ce5d4932da31f5c987fc4c0d9542c30 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-salesforce/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteSalesforceReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_salesforce"
 
+[tool.llamahub.class_authors]
+AirbyteSalesforceReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml
index 462ed15183604bda7de8cbf167e64172973763b1..a08de76e8a31cbaefd67ce95ab5afca48e700eea 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-shopify/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteShopifyReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_shopify"
 
+[tool.llamahub.class_authors]
+AirbyteShopifyReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml
index c7b04369ba1ae3a0293e720440c45b8384870f3f..eb3701fa24a5056c0a14644d4362c753198fc236 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-stripe/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteStripeReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_stripe"
 
+[tool.llamahub.class_authors]
+AirbyteStripeReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml
index 37ecf03b1f0644a35e8aa370f37cca6f0fd30717..5402e7d4f891251dc5543a290c7e348a1787a340 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-typeform/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteTypeformReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_typeform"
 
+[tool.llamahub.class_authors]
+AirbyteTypeformReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml
index 4dc51fdab8724cf9c27f904e906f0791300d33f4..887f0c7edec0f18b740b25972561ce0cbbf26145 100644
--- a/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airbyte-zendesk-support/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirbyteZendeskSupportReader"]
 contains_example = false
 import_path = "llama_index.readers.airbyte_zendesk_support"
 
+[tool.llamahub.class_authors]
+AirbyteZendeskSupportReader = "flash1293"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml
index d0940815ba6b3d77cdb4415c238290ac6226b5ca..bd7f87598272aa6dd0de18c0c09254d82f185605 100644
--- a/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-airtable/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AirtableReader"]
 contains_example = false
 import_path = "llama_index.readers.airtable"
 
+[tool.llamahub.class_authors]
+AirtableReader = "smyja"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml
index 12369aeede1774af435ddad14fc0dd2fc1bdef5c..0b4f440f867ab511303c13ac4b6627df8d2e797e 100644
--- a/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-apify/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ApifyActor", "ApifyDataset"]
 contains_example = false
 import_path = "llama_index.readers.apify"
 
+[tool.llamahub.class_authors]
+ApifyActor = "drobnikj"
+ApifyDataset = "drobnikj"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml
index 6b010182872b3cf583a6c8287f17e78030a34172..f5525e1929e5abf57a2eba2f0eabd04c9f978b48 100644
--- a/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-arango-db/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SimpleArangoDBReader"]
 contains_example = false
 import_path = "llama_index.readers.arango_db"
 
+[tool.llamahub.class_authors]
+SimpleArangoDBReader = "mmaatouk"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml
index 1f2c58a8ed8b659a0fcca001e9862f866703db58..0ad7633c24eb6f5d7c15c4433462c75645eb68e6 100644
--- a/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-asana/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AsanaReader"]
 contains_example = false
 import_path = "llama_index.readers.asana"
 
+[tool.llamahub.class_authors]
+AsanaReader = "daveey"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml
index ca48b874ee0c88e3dad1bc01350ec2b1936c34f6..2f4318e471773609d55cee5f036c1934ed16c849 100644
--- a/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-assemblyai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AssemblyAIAudioTranscriptReader"]
 contains_example = false
 import_path = "llama_index.readers.assemblyai"
 
+[tool.llamahub.class_authors]
+AssemblyAIAudioTranscriptReader = "patrickloeber"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml
index 3245e15b865f2030bf138bf60d022e784a1aecbb..be3efa89c3689604d33ecf2c8da18103a1495a11 100644
--- a/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-astra-db/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AstraDBReader"]
 contains_example = false
 import_path = "llama_index.readers.astra_db"
 
+[tool.llamahub.class_authors]
+AstraDBReader = "erichare"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml
index 744430405146edc18ab00dcb7c84ad6d232440ba..ad913df7f78d69912f4b5891337a2c66b6a15881 100644
--- a/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-athena/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AthenaReader"]
 contains_example = false
 import_path = "llama_index.readers.athena"
 
+[tool.llamahub.class_authors]
+AthenaReader = "mattick27"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-awadb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-awadb/pyproject.toml
index d945a5577df30e0b5cdd5bc0fc25b98d15c2985a..10819b51ec92692655d3f419a67ccc15b10e9fdd 100644
--- a/llama-index-integrations/readers/llama-index-readers-awadb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-awadb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AwadbReader"]
 contains_example = false
 import_path = "llama_index.readers.awadb"
 
+[tool.llamahub.class_authors]
+AwadbReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml
index 4b05532a029a687f5103529eeda48d828944e170..c0d9185892d51638d1d2d5acd2a8a2352a611435 100644
--- a/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-azcognitive-search/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzCognitiveSearchReader"]
 contains_example = false
 import_path = "llama_index.readers.azcognitive_search"
 
+[tool.llamahub.class_authors]
+AzCognitiveSearchReader = "mrcabellom"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml
index d212f8c49dc71d02c806bbd0e560c946c5356f8c..c842b265c94738be4ab6cc365c1911f5b168052e 100644
--- a/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-azstorage-blob/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzStorageBlobReader"]
 contains_example = false
 import_path = "llama_index.readers.azstorage_blob"
 
+[tool.llamahub.class_authors]
+AzStorageBlobReader = "rivms"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml
index d3364c997758b379990f2fabb66bedfb4b93bb4f..7604fac3e0bad65e43d221de78f810513a1b4eb4 100644
--- a/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-bagel/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BagelReader"]
 contains_example = false
 import_path = "llama_index.readers.bagel"
 
+[tool.llamahub.class_authors]
+BagelReader = "asif"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml
index 8d09147a74c96e8cb8c9584fce0adfdc8c4cf25c..73f3a3875b48468b783c41a79176474835e896c2 100644
--- a/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-bilibili/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BilibiliTranscriptReader"]
 contains_example = false
 import_path = "llama_index.readers.bilibili"
 
+[tool.llamahub.class_authors]
+BilibiliTranscriptReader = "alexzhangji"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml
index 6cf644c74ba4f2b047cd04a79b7dafcab09f570f..e6bbc70d77ba1eaa0dcb892dc0fba091a7603696 100644
--- a/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-bitbucket/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BitbucketReader"]
 contains_example = false
 import_path = "llama_index.readers.bitbucket"
 
+[tool.llamahub.class_authors]
+BitbucketReader = "lejdiprifti"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml
index a65f13937d98d5a5331c97cd4c21378427694bb0..16277a1afa0283a4ffba1a38fd521a5cf56306c2 100644
--- a/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-boarddocs/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BoardDocsReader"]
 contains_example = false
 import_path = "llama_index.readers.boarddocs"
 
+[tool.llamahub.class_authors]
+BoardDocsReader = "dweekly"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml
index 3f2ec978bcad266027e82bde93ef91386b789e82..260e2b21568524a65404380ede250ebdf5606997 100644
--- a/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-chatgpt-plugin/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChatGPTRetrievalPluginReader"]
 contains_example = false
 import_path = "llama_index.readers.chatgpt_plugin"
 
+[tool.llamahub.class_authors]
+ChatGPTRetrievalPluginReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml
index 51868f3cbf29f22fba7bc75eec9bb4321eba360e..a45b036caae93d2ae3d384fe3394c76316ea952e 100644
--- a/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-chroma/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChromaReader"]
 contains_example = false
 import_path = "llama_index.readers.chroma"
 
+[tool.llamahub.class_authors]
+ChromaReader = "atroyn"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-clickhouse/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-clickhouse/pyproject.toml
index db0a46bc6a03b280d0552bac2e2c6219e98ecf4e..3841b10f366098a0892926c2f0e9c598134f618d 100644
--- a/llama-index-integrations/readers/llama-index-readers-clickhouse/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-clickhouse/pyproject.toml
@@ -7,6 +7,15 @@ check-filenames = true
 check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
+[tool.llamahub]
+contains_example = false
+import_path = "llama_index.readers.clickhouse"
+
+[tool.llamahub.class_authors]
+ClickHouseReader = "llama-index"
+escape_str = "llama-index"
+format_list_to_string = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml
index 82469f45a9dc0afcbfe2738470c77297115236e2..f1373c6e3e47d8d9730ab99862426e25946259ef 100644
--- a/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-confluence/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ConfluenceReader"]
 contains_example = false
 import_path = "llama_index.readers.confluence"
 
+[tool.llamahub.class_authors]
+ConfluenceReader = "zywilliamli"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml
index 3520d7fa273a55df6658c186ee7f3a1a1292254c..e223c515001441f7f822fcc5def7a6dca8c9cb21 100644
--- a/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-couchbase/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CouchbaseReader"]
 contains_example = false
 import_path = "llama_index.readers.couchbase"
 
+[tool.llamahub.class_authors]
+CouchbaseReader = "nithishr"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml
index 495c38820b7c9d688937c97c43fd9321c5c443b2..da1a93b5f44b95b31368a0617d370c7e70f17372 100644
--- a/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-couchdb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SimpleCouchDBReader"]
 contains_example = false
 import_path = "llama_index.readers.couchdb"
 
+[tool.llamahub.class_authors]
+SimpleCouchDBReader = "technosophy"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml
index 2c560b46eacf2fe6a56417b4e797ee8ef8925fb2..f26298cf68a771c6793352e031caf0b27c560d80 100644
--- a/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-dad-jokes/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DadJokesReader"]
 contains_example = false
 import_path = "llama_index.readers.dad_jokes"
 
+[tool.llamahub.class_authors]
+DadJokesReader = "sidu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-dashvector/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-dashvector/pyproject.toml
index 18eb4bc12fc2c074532a0008a89bbca6891c7559..852c006ff7e4f71d9300880ed4d3055694bd4e3a 100644
--- a/llama-index-integrations/readers/llama-index-readers-dashvector/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-dashvector/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DashVectorReader"]
 contains_example = false
 import_path = "llama_index.readers.dashvector"
 
+[tool.llamahub.class_authors]
+DashVectorReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml
index a5fdda273fdc61555a4f30e99fc484bd1d673e73..7b880d93f84de354c529f08bd3c0b4fac4ef8807 100644
--- a/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-database/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DatabaseReader"]
 contains_example = false
 import_path = "llama_index.readers.database"
 
+[tool.llamahub.class_authors]
+DatabaseReader = "kevinqz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml
index 2dbf69dadafee7ff50796c8f44cf0412e93a00f8..e9fb902a25e925944a826a6eda32d551026a0dba 100644
--- a/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-deeplake/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DeepLakeReader"]
 contains_example = false
 import_path = "llama_index.readers.deeplake"
 
+[tool.llamahub.class_authors]
+DeepLakeReader = "adolkhan"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml
index e21d12ae88e076b77b4cc710bc2ec0a16d5352bb..a203f0d6d28b5e704b2dc99033ae06d6bb871473 100644
--- a/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-discord/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DiscordReader"]
 contains_example = false
 import_path = "llama_index.readers.discord"
 
+[tool.llamahub.class_authors]
+DiscordReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml
index d209241ac2780126e14ed91b862f765c26081c96..5fd07bcb3258d0e4cd5b57635f1a49d31484dc0c 100644
--- a/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-docstring-walker/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DocstringWalker"]
 contains_example = false
 import_path = "llama_index.readers.docstring_walker"
 
+[tool.llamahub.class_authors]
+DocstringWalker = "Filip Wojcik"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml
index 6cff99c705c6c7ec3862c87fe2d951eb64d43e77..c5bdd4c7e9bd06b50937e23f394b6da02b90c88a 100644
--- a/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-docugami/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DocugamiReader"]
 contains_example = false
 import_path = "llama_index.readers.docugami"
 
+[tool.llamahub.class_authors]
+DocugamiReader = "tjaffri"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml
index 9cfa60e17dfc4b88437e2f26bf636b198c838738..288e3b2bada1cc905ba43b1f271e20e5bf6e8799 100644
--- a/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-earnings-call-transcript/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["EarningsCallTranscript"]
 contains_example = false
 import_path = "llama_index.readers.earnings_call_transcript"
 
+[tool.llamahub.class_authors]
+EarningsCallTranscript = "Athe-kunal"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml
index 8ecf97eb5866193d9b49a461c3b54d748b177268..a36cfd1d8f2d49b32d930adf27cb33e2409d2bc7 100644
--- a/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-elasticsearch/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ElasticsearchReader"]
 contains_example = false
 import_path = "llama_index.readers.elasticsearch"
 
+[tool.llamahub.class_authors]
+ElasticsearchReader = "jaylmiller"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml
index a1947d76e7cb69066be39ea5dcf695f81426a445..16e72a93341ae6d50b8f1f4d16b5e00a68beead4 100644
--- a/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-faiss/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FaissReader"]
 contains_example = false
 import_path = "llama_index.readers.faiss"
 
+[tool.llamahub.class_authors]
+FaissReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml
index 9b8144ccd152b5c06dbc66cdfad0c6f1aae319a1..64611ff3f00cde1e333f75e04296e743bffa28ed 100644
--- a/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-feedly-rss/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FeedlyRssReader"]
 contains_example = false
 import_path = "llama_index.readers.feedly_rss"
 
+[tool.llamahub.class_authors]
+FeedlyRssReader = "kychanbp"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml
index baabbdb88871f80d5185a8a4241c4a4901bdc045..f1b9a98d3bb162b7b7fc35aa798902848bdb77ce 100644
--- a/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-feishu-docs/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FeishuDocsReader"]
 contains_example = false
 import_path = "llama_index.readers.feishu_docs"
 
+[tool.llamahub.class_authors]
+FeishuDocsReader = "ma-chengcheng"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml
index ef841d2af0d3507d09dec8e543027bcb542b0be5..ab043530e0ead57a78d05a61621da89dbd38d481 100644
--- a/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-file/pyproject.toml
@@ -8,10 +8,32 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DocxReader", "EpubReader", "FlatReader", "HTMLTagReader", "HWPReader", "IPYNBReader", "ImageCaptionReader", "ImageReader", "ImageTabularChartReader", "ImageVisionLLMReader", "MarkdownReader", "MboxReader", "PDFReader", "PagedCSVReader", "PandasCSVReader", "PptxReader", "PyMuPDFReader", "UnstructuredReader", "VideoAudioReader", "XMLReader"]
 contains_example = false
 import_path = "llama_index.readers.file"
 
+[tool.llamahub.class_authors]
+CSVReader = "llama-index"
+DocxReader = "thejessezhang"
+EpubReader = "Haowjy"
+FlatReader = "llama-index"
+HTMLTagReader = "llama-index"
+HWPReader = "sangwongenip"
+IPYNBReader = "FarisHijazi"
+ImageCaptionReader = "FarisHijazi"
+ImageReader = "ravi03071991"
+ImageTabularChartReader = "jon-chuang"
+ImageVisionLLMReader = "FarisHijazi"
+MarkdownReader = "hursh-desai"
+MboxReader = "llama-index"
+PDFReader = "ravi03071991"
+PagedCSVReader = "thejessezhang"
+PandasCSVReader = "ephe-meral"
+PptxReader = "thejessezhang"
+PyMuPDFReader = "iamarunbrahma"
+UnstructuredReader = "thejessezhang"
+VideoAudioReader = "llama-index"
+XMLReader = "mmaatouk"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml
index 03bdabae9e48f7ec856c261815be14c583522a4f..60873a5ab13a84cdd40d95d38ae211efeabc5a03 100644
--- a/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-firebase-realtimedb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FirebaseRealtimeDatabaseReader"]
 contains_example = false
 import_path = "llama_index.readers.firebase_realtimedb"
 
+[tool.llamahub.class_authors]
+FirebaseRealtimeDatabaseReader = "ajay"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml
index 24742450322fda2bd62aa45e80986a4d6d15d34a..e18497cf682a2224cda1e6b0f8e12cda204ea5c8 100644
--- a/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-firestore/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FirestoreReader"]
 contains_example = false
 import_path = "llama_index.readers.firestore"
 
+[tool.llamahub.class_authors]
+FirestoreReader = "rayzhudev"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-genius/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-genius/pyproject.toml
index 8cc407bfcbd74ca15e72a42c0f73f86ff059e882..c316474ce4f79ac7bd61ae81fb30a7d0550a679b 100644
--- a/llama-index-integrations/readers/llama-index-readers-genius/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-genius/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GeniusReader"]
 contains_example = false
 import_path = "llama_index.readers.genius"
 
+[tool.llamahub.class_authors]
+GeniusReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml
index e1a9576806be402338ab5dbd0bb46f63ce14cc5b..e4071e500ef7b1e5ba93a79184301471024f0bbc 100644
--- a/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-github/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GitHubIssuesClient", "GitHubRepositoryCollaboratorsReader", "GitHubRepositoryIssuesReader", "GithubClient", "GithubRepositoryReader"]
 contains_example = false
 import_path = "llama_index.readers.github"
 
+[tool.llamahub.class_authors]
+GitHubRepositoryCollaboratorsReader = "rwood-97"
+GitHubRepositoryIssuesReader = "moncho"
+GithubRepositoryReader = "ahmetkca"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml
index 5dbc71eabb83950a1ed70dba5d6ffa1c5464d318..1ff80906df3961654b290f18dad8e66a158cfc16 100644
--- a/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-google/pyproject.toml
@@ -8,10 +8,17 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GmailReader", "GoogleCalendarReader", "GoogleDocsReader", "GoogleDriveReader", "GoogleKeepReader", "GoogleSheetsReader"]
 contains_example = false
 import_path = "llama_index.readers.google"
 
+[tool.llamahub.class_authors]
+GmailReader = "bbornsztein"
+GoogleCalendarReader = "ong"
+GoogleDocsReader = "jerryjliu"
+GoogleDriveReader = "ravi03071991"
+GoogleKeepReader = "pycui"
+GoogleSheetsReader = "piroz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml
index c3cde1866a5a84098cd07baedd7e8668002eec8b..386ec6f72a858b64ee78bdbfbaec9723e0b719d7 100644
--- a/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-gpt-repo/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GPTRepoReader", "get_ignore_list", "process_repository", "should_ignore"]
 contains_example = false
 import_path = "llama_index.readers.gpt_repo"
 
+[tool.llamahub.class_authors]
+GPTRepoReader = "mpoon"
+get_ignore_list = "llama-index"
+process_repository = "llama-index"
+should_ignore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml
index c048ae75bbfe6d0261246b6f9692f380ddc03219..8f4ea9fb0d130c12455374b098a82f9ed4cd91d3 100644
--- a/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-graphdb-cypher/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GraphDBCypherReader"]
 contains_example = false
 import_path = "llama_index.readers.graphdb_cypher"
 
+[tool.llamahub.class_authors]
+GraphDBCypherReader = "jexp"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml
index d03ea5296267241df38167ee7c263957e3ce6477..4ac46ee2d20bbdd10b35c925f88d2bc63769840a 100644
--- a/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-graphql/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GraphQLReader"]
 contains_example = false
 import_path = "llama_index.readers.graphql"
 
+[tool.llamahub.class_authors]
+GraphQLReader = "jexp"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml
index 9e3c15904256405f7ea346b7cf3ced8f05e63086..17059f3a865ee967d5acdb7aff74122b404c14db 100644
--- a/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-guru/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GuruReader"]
 contains_example = false
 import_path = "llama_index.readers.guru"
 
+[tool.llamahub.class_authors]
+GuruReader = "mcclain-thiel"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml
index d52c538c24efbb61e7e4304646da67c1376b781b..755cfbb86aae1c89e74b2d37447d59056422ebc1 100644
--- a/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hatena-blog/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HatenaBlogReader"]
 contains_example = false
 import_path = "llama_index.readers.hatena_blog"
 
+[tool.llamahub.class_authors]
+HatenaBlogReader = "Shoya SHIRAKI"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml
index 2b5e659e8b62e1e7294d14809f5cbb21cdfa2144..5c0ecb217bba5ab1739ae253ab1bed2ce54e277c 100644
--- a/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hive/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HiveReader"]
 contains_example = false
 import_path = "llama_index.readers.hive"
 
+[tool.llamahub.class_authors]
+HiveReader = "kasen"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml
index 6ea3c82e30bd4f3ce73f89c75d86b297c136c93f..d1bc38418d4f92cb86cc2bb69227148c1402c27d 100644
--- a/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hubspot/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HubspotReader"]
 contains_example = false
 import_path = "llama_index.readers.hubspot"
 
+[tool.llamahub.class_authors]
+HubspotReader = "ykhli"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml
index 35ece982334202651440b076f5f7faf78c03698c..b3b0224c863da50bb79494bc3fe28aa0d0632861 100644
--- a/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-huggingface-fs/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HuggingFaceFSReader"]
 contains_example = false
 import_path = "llama_index.readers.huggingface_fs"
 
+[tool.llamahub.class_authors]
+HuggingFaceFSReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-hwp/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-hwp/pyproject.toml
index c381ded7e03bfea8ae0bab5b8f9b536eb4a8751c..7ba664b770230201ed0ff4813024903d67907cbe 100644
--- a/llama-index-integrations/readers/llama-index-readers-hwp/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-hwp/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HWPReader"]
 contains_example = false
 import_path = "llama_index.readers.hwp"
 
+[tool.llamahub.class_authors]
+HWPReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml
index a4205a5d3ae3505d46cd9ce93067fcb9bd7461cc..606f499055fd2cbd64f3bbf79ce5b43566c2aca8 100644
--- a/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-imdb-review/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["IMDBReviews"]
 contains_example = false
 import_path = "llama_index.readers.imdb_review"
 
+[tool.llamahub.class_authors]
+IMDBReviews = "Athe-kunal"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml
index fed0451e7576316dafd35e3173384dac18de320b..3cb5594806291e11c23baa688a1c4a2c62f92510 100644
--- a/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-intercom/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["IntercomReader"]
 contains_example = false
 import_path = "llama_index.readers.intercom"
 
+[tool.llamahub.class_authors]
+IntercomReader = "bbornsztein"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-jaguar/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-jaguar/pyproject.toml
index ca494af728ac5f97cdd4ec00ec12eb44c21acccb..7ee9adcaf8d47958c9c92dfe4c94bd217da27959 100644
--- a/llama-index-integrations/readers/llama-index-readers-jaguar/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-jaguar/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["JaguarReader"]
 contains_example = false
 import_path = "llama_index.readers.jaguar"
 
+[tool.llamahub.class_authors]
+JaguarReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml
index df89b882eb3d90cc4d216d70754775d59aa534ed..336348187ccf7e135fdbbdb09eea6bc299cab272 100644
--- a/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-jira/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["JiraReader"]
 contains_example = false
 import_path = "llama_index.readers.jira"
 
+[tool.llamahub.class_authors]
+JiraReader = "bearguy"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml
index 599f6481ea2ab3f6ccbd75c437acd6bed17e9d4a..1d9f74588b6d46f39b5b6f05f6becfa3193f8e81 100644
--- a/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-joplin/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["JoplinReader", "LINK_NOTE_TEMPLATE"]
 contains_example = false
 import_path = "llama_index.readers.joplin"
 
+[tool.llamahub.class_authors]
+JoplinReader = "alondmnt"
+LINK_NOTE_TEMPLATE = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml
index 3a478f8a939f5491fa71fba6ed9cd6419b8c1e9c..254d4e7e90b57064083d3adb582a986e58760cea 100644
--- a/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-json/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["JSONReader"]
 contains_example = false
 import_path = "llama_index.readers.json"
 
+[tool.llamahub.class_authors]
+JSONReader = "yisding"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml
index 167778265f4262c7461d8ce03d1bcbb81c97ca34..20c81d7bd4e0fe1ace89ac6a26d481a99f8fdeaa 100644
--- a/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-kaltura/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["KalturaESearchReader"]
 contains_example = false
 import_path = "llama_index.readers.kaltura_esearch"
 
+[tool.llamahub.class_authors]
+KalturaESearchReader = "kaltura"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml
index af4316de53fdff51e112887af2e14340f2fbfe8e..59e811959c8108d5cd9a349d8ea8cde59a6f8f10 100644
--- a/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-kibela/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["KibelaReader"]
 contains_example = false
 import_path = "llama_index.readers.kibela"
 
+[tool.llamahub.class_authors]
+KibelaReader = "higebu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml
index fa86299471ea1044e57bee456d2a47bc655e1a09..2d2b2ceba48605d21eefbc23549ac0d0c8f64be7 100644
--- a/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-lilac/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LilacReader"]
 contains_example = false
 import_path = "llama_index.readers.lilac"
 
+[tool.llamahub.class_authors]
+LilacReader = "nsthorat"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml
index baaaf6e1ddf29f2c02969c7168330f21d01b9027..15502e4823ced10fd6388af463450686fc4b8e14 100644
--- a/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-linear/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LinearReader"]
 contains_example = false
 import_path = "llama_index.readers.linear"
 
+[tool.llamahub.class_authors]
+LinearReader = "Sushmithamallesh"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml
index 7fbae388d842c44e24ddd75c8f04ae9f82462a54..a1dbcbb5683c868cb514a15125f2083da8923e7f 100644
--- a/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-macrometa-gdn/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MacrometaGDNReader"]
 contains_example = false
 import_path = "llama_index.readers.macrometa_gdn"
 
+[tool.llamahub.class_authors]
+MacrometaGDNReader = "Dain Im"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml
index 287e2faa7c788fcd19fac1d511a814a6a80abc0d..e51071d5317b991f748bf42e92acef2584dd6127 100644
--- a/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-make-com/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MakeWrapper"]
 contains_example = false
 import_path = "llama_index.readers.make_com"
 
+[tool.llamahub.class_authors]
+MakeWrapper = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml
index 1f411b783687f38e50f77de9c8cb700ed1530fc4..38e5fabbeec3f7899badf7313635c85a70e9bfd0 100644
--- a/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mangadex/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MangaDexReader"]
 contains_example = false
 import_path = "llama_index.readers.mangadex"
 
+[tool.llamahub.class_authors]
+MangaDexReader = "choombaa"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml
index 60c2516f03f21fc62fbf15e585cff43bcb2a2b6d..c37d8c76192f8a9e55d4404fbc14e78488764b71 100644
--- a/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mangoapps-guides/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MangoppsGuidesReader"]
 contains_example = false
 import_path = "llama_index.readers.mangoapps_guides"
 
+[tool.llamahub.class_authors]
+MangoppsGuidesReader = "mangoapps"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml
index 18ce6ec7292b6a00907a8c02e41f3119bb466442..66fdde2468f6ed0c99aa54455dfac81da05ba107 100644
--- a/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-maps/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenMap"]
 contains_example = false
 import_path = "llama_index.readers.maps"
 
+[tool.llamahub.class_authors]
+OpenMap = "carrotpy"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml
index 1eb299749571c4bd2c4960e8c61231d3172e37a9..c932b86b6dcf0b52a3b6b8ad76e6386373fe5a1f 100644
--- a/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mbox/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MboxReader"]
 contains_example = false
 import_path = "llama_index.readers.mbox"
 
+[tool.llamahub.class_authors]
+MboxReader = "minosvasilias"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml
index d27dc9139743e19c1965fcc3018ec5ae380e0837..df7be79aeb606b3a74f6c2155e79efcf19defd95 100644
--- a/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-memos/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MemosReader"]
 contains_example = false
 import_path = "llama_index.readers.memos"
 
+[tool.llamahub.class_authors]
+MemosReader = "bubu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml
index 888b7c98e0526404f6ebf54fedb80e7acc4872c7..3626eab3ef93b48a294713a4823aec9926287671 100644
--- a/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-metal/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MetalReader"]
 contains_example = false
 import_path = "llama_index.readers.metal"
 
+[tool.llamahub.class_authors]
+MetalReader = "getmetal"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml
index 11d582b27dd2a4ba5b16c5a73768f62aad1ace49..8f85db6d78eb1d93052a3093f5c9b650fbbe2ab2 100644
--- a/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-onedrive/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OneDriveReader"]
 contains_example = false
 import_path = "llama_index.readers.microsoft_onedrive"
 
+[tool.llamahub.class_authors]
+OneDriveReader = "godwin3737"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml
index 6e1ac455a32579a5b8393a5914e718fd1d199513..7cfca127541beea503e0c13e1a202ee47d8469c4 100644
--- a/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-outlook/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OutlookLocalCalendarReader"]
 contains_example = false
 import_path = "llama_index.readers.microsoft_outlook"
 
+[tool.llamahub.class_authors]
+OutlookLocalCalendarReader = "tevslin"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml
index 9cd8f6287369b5fbf903dd82c366e1d3d8954a6c..1aece0840aee4233983b4dcd4add6cdb6fbd5313 100644
--- a/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-microsoft-sharepoint/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SharePointReader"]
 contains_example = false
 import_path = "llama_index.readers.microsoft_sharepoint"
 
+[tool.llamahub.class_authors]
+SharePointReader = "arun-soliton"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml
index 80f7c1564ee866a9d0458ebfdcde2182a27b8f35..b8bb69ccd25e1b0089241c30960dddd5eb035e40 100644
--- a/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-milvus/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MilvusReader"]
 contains_example = false
 import_path = "llama_index.readers.milvus"
 
+[tool.llamahub.class_authors]
+MilvusReader = "filip-halt"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-minio/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-minio/pyproject.toml
index 75910e27674d12bacefe46123d9549df390ea59d..1cdd40dbb063dc1c6f297dc1a541468e0574318e 100644
--- a/llama-index-integrations/readers/llama-index-readers-minio/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-minio/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BotoMinioReader", "MinioReader"]
 contains_example = false
 import_path = "llama_index.readers.minio"
 
+[tool.llamahub.class_authors]
+BotoMinioReader = "llama-index"
+MinioReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml
index 906a708066873c2d57087bb377ad67944501df0c..6640d97aa2fc13fbd483146b611ea9af70b3e42a 100644
--- a/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mondaydotcom/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MondayReader"]
 contains_example = false
 import_path = "llama_index.readers.mondaydotcom"
 
+[tool.llamahub.class_authors]
+MondayReader = "nadavgr"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml
index 3486732d7ddacdce6a3fd4e7eb6ae5441c345e0a..0bbc1f0fca353937c4ff40b113924285addd4d02 100644
--- a/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-mongodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SimpleMongoReader"]
 contains_example = false
 import_path = "llama_index.readers.mongodb"
 
+[tool.llamahub.class_authors]
+SimpleMongoReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-myscale/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-myscale/pyproject.toml
index 01debcc67487101a0a4896a5ead00f41d4a08086..a9e6dfeb9049499b1cc3d3339cf4bcc0c9b8a2f1 100644
--- a/llama-index-integrations/readers/llama-index-readers-myscale/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-myscale/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MyScaleReader", "escape_str", "format_list_to_string"]
 contains_example = false
 import_path = "llama_index.readers.myscale"
 
+[tool.llamahub.class_authors]
+MyScaleReader = "llama-index"
+escape_str = "llama-index"
+format_list_to_string = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml
index 0e002486aa0a030891b114d72db19209461e9e82..9777a7baf96206caa5c3b32e7b60c04f0abe1b8a 100644
--- a/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-notion/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["NotionPageReader"]
 contains_example = false
 import_path = "llama_index.readers.notion"
 
+[tool.llamahub.class_authors]
+NotionPageReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml
index 80bfd5ca21f264528833c941f71e146cec993af4..8fcd0d66f88192158dbf020bbb55074008828e87 100644
--- a/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-nougat-ocr/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PDFNougatOCR"]
 contains_example = false
 import_path = "llama_index.readers.nougat_ocr"
 
+[tool.llamahub.class_authors]
+PDFNougatOCR = "mdarshad1000"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml
index e49529a7e5c1e03f65353baa6188576003e6ad14..cd4019052bd76c2d9989a16270ccae525e87a7c2 100644
--- a/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-obsidian/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ObsidianReader"]
 contains_example = false
 import_path = "llama_index.readers.obsidian"
 
+[tool.llamahub.class_authors]
+ObsidianReader = "hursh-desai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml
index 5a6a1a9b0faff2b831abd4d238a0b60d6cf692c9..44cf83cd843710de72178f5c2e96256dc9ad39ce 100644
--- a/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-openalex/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAlexReader"]
 contains_example = false
 import_path = "llama_index.readers.openalex"
 
+[tool.llamahub.class_authors]
+OpenAlexReader = "shauryr"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml
index fc7a542060058d1a435bd10b1ea5f9293a51a0d1..ae89ab8123f9c53f7e73648bc98b95c84f3664f9 100644
--- a/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-opendal/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpendalAzblobReader", "OpendalGcsReader", "OpendalReader", "OpendalS3Reader"]
 contains_example = false
 import_path = "llama_index.readers.opendal"
 
+[tool.llamahub.class_authors]
+OpendalAzblobReader = "OpenDAL Contributors"
+OpendalGcsReader = "OpenDAL Contributors"
+OpendalReader = "OpenDAL Contributors"
+OpendalS3Reader = "OpenDAL Contributors"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml
index f82edcae712e85b3923e561d57c27196cb915da3..234d1cc243c42c6ed157ff0fa6c17c985a9de5bb 100644
--- a/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-opensearch/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpensearchReader"]
 contains_example = false
 import_path = "llama_index.readers.opensearch"
 
+[tool.llamahub.class_authors]
+OpensearchReader = "chnsagitchen"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml
index 97ab32367a98035e29631b917ec827d03bbcae15..2f282d972ac97993921ddc728aedc687ff35f113 100644
--- a/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pandas-ai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PandasAIReader"]
 contains_example = false
 import_path = "llama_index.readers.pandas_ai"
 
+[tool.llamahub.class_authors]
+PandasAIReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml
index 22cee84d4ab9f54eb01ee4b9b04c42e1f037d47a..00cf11a171f360068ba84f8ae67c46c6cf6d4315 100644
--- a/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-papers/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ArxivReader", "PubmedReader"]
 contains_example = false
 import_path = "llama_index.readers.papers"
 
+[tool.llamahub.class_authors]
+ArxivReader = "thejessezhang"
+PubmedReader = "thejessezhang"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml
index 0d77c27b6a99f001982160f4f40fc9f254329816..39524e5e131bcf00239cf978bf6cfff2ea087f79 100644
--- a/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-patentsview/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PatentsviewReader"]
 contains_example = false
 import_path = "llama_index.readers.patentsview"
 
+[tool.llamahub.class_authors]
+PatentsviewReader = "shao-shuai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-pathway/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pathway/pyproject.toml
index c2456fe493ff6a5919c3523e5f4903e71b94f9d9..3776507ee5dfb03310b4ad9c4746bc2fc3422809 100644
--- a/llama-index-integrations/readers/llama-index-readers-pathway/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pathway/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PathwayReader"]
 contains_example = false
 import_path = "llama_index.readers.pathway"
 
+[tool.llamahub.class_authors]
+PathwayReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml
index ec06937b8ffc45bf0cf33795feac754645c9e151..78f3a4a94f7fcbe9f8a699a9eb4b07d8fb2e7430 100644
--- a/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pdb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PdbAbstractReader"]
 contains_example = false
 import_path = "llama_index.readers.pdb"
 
+[tool.llamahub.class_authors]
+PdbAbstractReader = "joshuakto"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml
index 2c06b0b8abe06a7346e729ee913b66780a22e825..92d0534f99256317c741cbc6c53ce36baf952dd3 100644
--- a/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pdf-table/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PDFTableReader"]
 contains_example = false
 import_path = "llama_index.readers.pdf_table"
 
+[tool.llamahub.class_authors]
+PDFTableReader = "yy0867"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml
index 453cd44fa4b3a99a342c1dc8e3a961f68a3b933d..8c15d3d7fe5dc0eb957a5e5c68529a8e314c561a 100644
--- a/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-pinecone/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PineconeReader"]
 contains_example = false
 import_path = "llama_index.readers.pinecone"
 
+[tool.llamahub.class_authors]
+PineconeReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml
index 01c60fec8530d168676f7f25087b8128666ab647..79a6329e414f04aecd9ca82cd7e3b05438be1760 100644
--- a/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-preprocess/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PreprocessReader"]
 contains_example = false
 import_path = "llama_index.readers.preprocess"
 
+[tool.llamahub.class_authors]
+PreprocessReader = "preprocess"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-psychic/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-psychic/pyproject.toml
index 94660f80e3609ca8922db01e804415ae385e7fbd..a5b65128afb3fe44f8cff3ea7c2f6238fa283539 100644
--- a/llama-index-integrations/readers/llama-index-readers-psychic/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-psychic/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PsychicReader"]
 contains_example = false
 import_path = "llama_index.readers.psychic"
 
+[tool.llamahub.class_authors]
+PsychicReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml
index 5fa835e55e911ce913847f18bf106770871f979b..8a764a4cc29c232e1acecedd2f32bbebedb86415 100644
--- a/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-qdrant/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["QdrantReader"]
 contains_example = false
 import_path = "llama_index.readers.qdrant"
 
+[tool.llamahub.class_authors]
+QdrantReader = "kacperlukawski"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml
index 17596e4afe7ba70a9182af2101c42d6cdf3d6c65..d0fe33d6d9a6b4ab6bd7566c983e0eed40d3bea0 100644
--- a/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-rayyan/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RayyanReader"]
 contains_example = false
 import_path = "llama_index.readers.rayyan"
 
+[tool.llamahub.class_authors]
+RayyanReader = "hammady"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml
index d5936a44a8c5d370d5bd5c189e61b3eb23d8da5f..8ce058fa7a0a31eb542585e764aaeb6bfd304f29 100644
--- a/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-readwise/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ReadwiseReader"]
 contains_example = false
 import_path = "llama_index.readers.readwise"
 
+[tool.llamahub.class_authors]
+ReadwiseReader = "alexbowe"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml
index 02475b4e4f9013fd9df07612660bb51fde847659..5fdf4423d26790c8acaf717062f7621a15536462 100644
--- a/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-reddit/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedditReader"]
 contains_example = false
 import_path = "llama_index.readers.reddit"
 
+[tool.llamahub.class_authors]
+RedditReader = "vanessahlyan"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml
index 3ec2b73139d145b11aebc360cfaf7f35489dd96c..ff392a928b4e0f178198e47f5b707c9b6120f680 100644
--- a/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-remote-depth/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RemoteDepthReader"]
 contains_example = false
 import_path = "llama_index.readers.remote_depth"
 
+[tool.llamahub.class_authors]
+RemoteDepthReader = "simonMoisselin"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml
index d284c93bc2ab43bdcc1d6a0e04e354a1ead12e1c..f737f6f65d5bc59828acb14a4393902a55b00ada 100644
--- a/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-remote/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RemoteReader"]
 contains_example = false
 import_path = "llama_index.readers.remote"
 
+[tool.llamahub.class_authors]
+RemoteReader = "thejessezhang"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml
index 45e0a8006e88a664a3547345b2d1ce4c58c6c7ff..748660a4420ed983101532ad3117069c180851c6 100644
--- a/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-s3/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["S3Reader"]
 contains_example = false
 import_path = "llama_index.readers.s3"
 
+[tool.llamahub.class_authors]
+S3Reader = "thejessezhang"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml
index 6a358c84fb8ea7e81339bb273519f70e260c1d80..85bf9581d70628a19a0c423577cce4aa8ec52098 100644
--- a/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-sec-filings/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SECFilingsLoader"]
 contains_example = false
 import_path = "llama_index.readers.sec_filings"
 
+[tool.llamahub.class_authors]
+SECFilingsLoader = "Athe-kunal"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml
index 7704ffefcc0965a9b2e19a64d3b1fc2c620bb9db..31a138b9e61d704e13753684eb296670564fd3d6 100644
--- a/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-semanticscholar/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SemanticScholarReader"]
 contains_example = false
 import_path = "llama_index.readers.semanticscholar"
 
+[tool.llamahub.class_authors]
+SemanticScholarReader = "shauryr"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml
index fabb37e55f1006af01de26a47b291b87b517fe1b..1eb41419eb0e0c2a1b1ca0258d1698eed8e4e117 100644
--- a/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-singlestore/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SingleStoreReader"]
 contains_example = false
 import_path = "llama_index.readers.singlestore"
 
+[tool.llamahub.class_authors]
+SingleStoreReader = "singlestore"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml
index 6f9cd9b11868c688b07fb664c2d51d126bde05cb..2a614b88effdc7ff02849084b6103fea746a812d 100644
--- a/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-slack/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SlackReader"]
 contains_example = false
 import_path = "llama_index.readers.slack"
 
+[tool.llamahub.class_authors]
+SlackReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml
index 4b7882813650ff3d2ef1d267aabd0ac6b15355bb..cacfdcfbea63f0d48f55a8f7ae245d8285498530 100644
--- a/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-smart-pdf-loader/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SmartPDFLoader"]
 contains_example = false
 import_path = "llama_index.readers.smart_pdf_loader"
 
+[tool.llamahub.class_authors]
+SmartPDFLoader = "ansukla"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml
index 1a596dbc0b5342b43365315829ee6d352d3acba2..1360f368f784aef6fb29e29e42883d1c65236558 100644
--- a/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-snowflake/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SnowflakeReader"]
 contains_example = false
 import_path = "llama_index.readers.snowflake"
 
+[tool.llamahub.class_authors]
+SnowflakeReader = "godwin3737"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml
index 5a4d41d851bd7e8e6d469b08f430d8ec2ed7e26b..ba8f043cd5be96e0f06c48f079bd9d17e63174d3 100644
--- a/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-snscrape-twitter/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SnscrapeTwitterReader"]
 contains_example = false
 import_path = "llama_index.readers.snscrape_twitter"
 
+[tool.llamahub.class_authors]
+SnscrapeTwitterReader = "smyja"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml
index 8dca1aff4b39af86d86ef2e5b7ddb41530dd0a6f..36d2970c864438fc6b7582091d47831f89970ee8 100644
--- a/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-spotify/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SpotifyReader"]
 contains_example = false
 import_path = "llama_index.readers.spotify"
 
+[tool.llamahub.class_authors]
+SpotifyReader = "ong"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml
index d2c1f0d6de526b9e1315879c5e146af07f09cd85..76121558c9837e54e1c7281237bb162d5e00c5c9 100644
--- a/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-stackoverflow/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["StackoverflowReader"]
 contains_example = false
 import_path = "llama_index.readers.stackoverflow"
 
+[tool.llamahub.class_authors]
+StackoverflowReader = "allen-munsch"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml
index 1c38870bd52eba4c0e9b05e5f8ed3ce6b843427e..7842b090c9462901c4ed859bac9c04bd9f991032 100644
--- a/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-steamship/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SteamshipFileReader"]
 contains_example = false
 import_path = "llama_index.readers.steamship"
 
+[tool.llamahub.class_authors]
+SteamshipFileReader = "douglas-reid"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-string-iterable/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-string-iterable/pyproject.toml
index 9dd0df5540b5679d58ff4bbd11a20452fcbda3ae..2faecebf74a296ddf39e06e018ca5b67002dd67f 100644
--- a/llama-index-integrations/readers/llama-index-readers-string-iterable/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-string-iterable/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["StringIterableReader"]
 contains_example = false
 import_path = "llama_index.readers.string_iterable"
 
+[tool.llamahub.class_authors]
+StringIterableReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml
index 14feb2ff501e4081a13c2046f817e1d3dd518341..29822ce68dc7f7189c83d8842d72172dcbb427ef 100644
--- a/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-stripe-docs/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["StripeDocsReader"]
 contains_example = false
 import_path = "llama_index.readers.stripe_docs"
 
+[tool.llamahub.class_authors]
+StripeDocsReader = "amorriscode"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml
index 28ab06298b949f1652dd69fa46dc228457b766a0..6ea28bdfdcc8e8b0ada8110b98aaf030d8dd094d 100644
--- a/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-telegram/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TelegramReader"]
 contains_example = false
 import_path = "llama_index.readers.telegram"
 
+[tool.llamahub.class_authors]
+TelegramReader = "diicell"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml
index 711f942e626ed5a6c73ee661ae5fe3511a535781..9b1d3a878b10a898ada52f3c108f63d9010a6a18 100644
--- a/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-trello/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TrelloReader"]
 contains_example = false
 import_path = "llama_index.readers.trello"
 
+[tool.llamahub.class_authors]
+TrelloReader = "bluzir"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml
index df7b8a165d18cc100ce523d131f9780f2f74aa28..979cc73e16d66bfd09f0151bc246c0aa15baa7c6 100644
--- a/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-twitter/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TwitterTweetReader"]
 contains_example = false
 import_path = "llama_index.readers.twitter"
 
+[tool.llamahub.class_authors]
+TwitterTweetReader = "ravi03071991"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-txtai/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-txtai/pyproject.toml
index 2842af27557d2f1f8042fb7f53b53b49cb4f5c62..ba16f7dabdfc66f0984c97fd77689a1d1f37f39e 100644
--- a/llama-index-integrations/readers/llama-index-readers-txtai/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-txtai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TxtaiReader"]
 contains_example = false
 import_path = "llama_index.readers.txtai"
 
+[tool.llamahub.class_authors]
+TxtaiReader = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml
index a7a92eb30f7b863cb466c78c2d090cbffa1cef99..9f7c337f2d3444cf55555fb55ed15da30e5db597 100644
--- a/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-weather/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WeatherReader"]
 contains_example = false
 import_path = "llama_index.readers.weather"
 
+[tool.llamahub.class_authors]
+WeatherReader = "iamadhee"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml
index 703e61b83a9738876ff5d14e2e4973a335835c10..ee31430df7f358a378a5ddc32bc03fb4557e8d2a 100644
--- a/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-weaviate/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WeaviateReader"]
 contains_example = false
 import_path = "llama_index.readers.weaviate"
 
+[tool.llamahub.class_authors]
+WeaviateReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml
index 549cde86955e49c1e8ef987a0eabf73032134594..cf729bfab115f73de9a97ddb4b799c0cc349a46f 100644
--- a/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-web/pyproject.toml
@@ -8,10 +8,24 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AsyncWebPageReader", "BeautifulSoupWebReader", "KnowledgeBaseWebReader", "MainContentExtractorReader", "NewsArticleReader", "ReadabilityWebPageReader", "RssNewsReader", "RssReader", "SimpleWebPageReader", "SitemapReader", "TrafilaturaWebReader", "UnstructuredURLLoader", "WholeSiteReader"]
 contains_example = false
 import_path = "llama_index.readers.web"
 
+[tool.llamahub.class_authors]
+AsyncWebPageReader = "Hironsan"
+BeautifulSoupWebReader = "thejessezhang"
+KnowledgeBaseWebReader = "jasonwcfan"
+MainContentExtractorReader = "HawkClaws"
+NewsArticleReader = "ruze00"
+ReadabilityWebPageReader = "pandazki"
+RssNewsReader = "ruze00"
+RssReader = "bborn"
+SimpleWebPageReader = "thejessezhang"
+SitemapReader = "selamanse"
+TrafilaturaWebReader = "NA"
+UnstructuredURLLoader = "kravetsmic"
+WholeSiteReader = "an-bluecat"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml
index 779675dacfc4d90649deb3b0f072001a54554d9b..446735f21ceb10736de9e3f86451d45008e76ff8 100644
--- a/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-whatsapp/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WhatsappChatLoader"]
 contains_example = false
 import_path = "llama_index.readers.whatsapp"
 
+[tool.llamahub.class_authors]
+WhatsappChatLoader = "batmanscode"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml
index 896b9fc277f029c2e092fa0817faac59cd9b6846..231224e1081fa1547cdb4b6436b48a9d9b8051d8 100644
--- a/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-wikipedia/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WikipediaReader"]
 contains_example = false
 import_path = "llama_index.readers.wikipedia"
 
+[tool.llamahub.class_authors]
+WikipediaReader = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml
index 365118486aab11d23a53a7432af59c0ada6685f6..f99b673701f9cba3992daa7fd67d15f5d6c1c710 100644
--- a/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-wordlift/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WordLiftLoader"]
 contains_example = false
 import_path = "llama_index.readers.wordlift"
 
+[tool.llamahub.class_authors]
+WordLiftLoader = "msftwarelab"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml
index b8e8458713d55149b274c020799ab1d81cf1b185..07e5292eb160666778a1365d3a9a6eee1bfb57c3 100644
--- a/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-wordpress/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WordpressReader"]
 contains_example = false
 import_path = "llama_index.readers.wordpress"
 
+[tool.llamahub.class_authors]
+WordpressReader = "bbornsztein"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml
index 8598d7603c3b8cd66106a403602151d30584f1f3..8d6a149d3fe12cc1c6db51e9a76e82eb596f9652 100644
--- a/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-youtube-transcript/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["YoutubeTranscriptReader"]
 contains_example = false
 import_path = "llama_index.readers.youtube_transcript"
 
+[tool.llamahub.class_authors]
+YoutubeTranscriptReader = "ravi03071991"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml
index ced8df1a16ca2a3a97959895d439b0e872d64b92..c31578d2d1f868445ebdb5f036c67232bf18a753 100644
--- a/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-zendesk/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ZendeskReader"]
 contains_example = false
 import_path = "llama_index.readers.zendesk"
 
+[tool.llamahub.class_authors]
+ZendeskReader = "bbornsztein"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml
index 9b31ea1f16b835216261f50bdfac664ca7eb4016..1e0b6e27bd2c08ccfd2c416dbd15e028fcf59ba2 100644
--- a/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-zep/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ZepReader"]
 contains_example = false
 import_path = "llama_index.readers.zep"
 
+[tool.llamahub.class_authors]
+ZepReader = "zep"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml
index 18c7579f9a4aaafbd8da873e9b9e04f6d3d1a8db..ff6f0ea029346e137a59cbf80fd7c91853d7212b 100644
--- a/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml
+++ b/llama-index-integrations/readers/llama-index-readers-zulip/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ZulipReader"]
 contains_example = false
 import_path = "llama_index.readers.zulip"
 
+[tool.llamahub.class_authors]
+ZulipReader = "plurigrid"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/response_synthesizers/llama-index-response-synthesizers-google/pyproject.toml b/llama-index-integrations/response_synthesizers/llama-index-response-synthesizers-google/pyproject.toml
index 64ff11248432e7e577a022b3bfb1a9adfe7ff7c8..8337744c23240a180092fd5df5e1a28e2994c679 100644
--- a/llama-index-integrations/response_synthesizers/llama-index-response-synthesizers-google/pyproject.toml
+++ b/llama-index-integrations/response_synthesizers/llama-index-response-synthesizers-google/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GoogleTextSynthesizer", "SynthesizedResponse", "set_google_config"]
 contains_example = false
 import_path = "llama_index.response_synthesizers.google"
 
+[tool.llamahub.class_authors]
+GoogleTextSynthesizer = "llama-index"
+SynthesizedResponse = "llama-index"
+set_google_config = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/retrievers/llama-index-retrievers-bm25/pyproject.toml b/llama-index-integrations/retrievers/llama-index-retrievers-bm25/pyproject.toml
index 0706f51c05863725d864764b7dd1a567ab8ae4a5..f9bba7a3e60403be5c06a05f7b23791f3bfa6273 100644
--- a/llama-index-integrations/retrievers/llama-index-retrievers-bm25/pyproject.toml
+++ b/llama-index-integrations/retrievers/llama-index-retrievers-bm25/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BM25Retriever"]
 contains_example = false
 import_path = "llama_index.retrievers.bm25"
 
+[tool.llamahub.class_authors]
+BM25Retriever = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/retrievers/llama-index-retrievers-pathway/pyproject.toml b/llama-index-integrations/retrievers/llama-index-retrievers-pathway/pyproject.toml
index be8ae1c24c689c3dab51a26b352ed8c74b9c6e86..2fcbedeaa00bf9614f1396f0c7cdee93ecf19630 100644
--- a/llama-index-integrations/retrievers/llama-index-retrievers-pathway/pyproject.toml
+++ b/llama-index-integrations/retrievers/llama-index-retrievers-pathway/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PathwayRetriever"]
 contains_example = false
 import_path = "llama_index.retrievers.pathway"
 
+[tool.llamahub.class_authors]
+PathwayRetriever = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/retrievers/llama-index-retrievers-you/pyproject.toml b/llama-index-integrations/retrievers/llama-index-retrievers-you/pyproject.toml
index fd053d45a4460d7155871af80765b4b9f8411f2d..49abfeec267a82c2e612991673de9d068bdb1153 100644
--- a/llama-index-integrations/retrievers/llama-index-retrievers-you/pyproject.toml
+++ b/llama-index-integrations/retrievers/llama-index-retrievers-you/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["YouRetriever"]
 contains_example = false
 import_path = "llama_index.retrievers.you"
 
+[tool.llamahub.class_authors]
+YouRetriever = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/chat_store/llama-index-storage-chat-store-redis/pyproject.toml b/llama-index-integrations/storage/chat_store/llama-index-storage-chat-store-redis/pyproject.toml
index 197ba8622719a9256d65883391eb4780e181c2fc..f9dd4a626c14c545e2444a4952e07ac3de3128cd 100644
--- a/llama-index-integrations/storage/chat_store/llama-index-storage-chat-store-redis/pyproject.toml
+++ b/llama-index-integrations/storage/chat_store/llama-index-storage-chat-store-redis/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedisChatStore"]
 contains_example = false
 import_path = "llama_index.storage.chat_store.redis"
 
+[tool.llamahub.class_authors]
+RedisChatStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-dynamodb/pyproject.toml b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-dynamodb/pyproject.toml
index 0c2a38ad046abe572a62150f0c9e37e9a7ee7310..3d5769e7436cbb6b1ba1dc65655142b1f1515130 100644
--- a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-dynamodb/pyproject.toml
+++ b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-dynamodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DynamoDBDocumentStore"]
 contains_example = false
 import_path = "llama_index.storage.docstore.dynamodb"
 
+[tool.llamahub.class_authors]
+DynamoDBDocumentStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-firestore/pyproject.toml b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-firestore/pyproject.toml
index b07de9bc1df29d8a049879e68f31f78afda526a4..21220592ea94a4e8292e5ac71788fef9526619c1 100644
--- a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-firestore/pyproject.toml
+++ b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-firestore/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FirestoreDocumentStore"]
 contains_example = false
 import_path = "llama_index.storage.docstore.firestore"
 
+[tool.llamahub.class_authors]
+FirestoreDocumentStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-mongodb/pyproject.toml b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-mongodb/pyproject.toml
index dc87884c4b9393a4a1699721926d417eb29076a6..aeb38f0557ef46d5d1d4aff95f921d1233a981d4 100644
--- a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-mongodb/pyproject.toml
+++ b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-mongodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MongoDocumentStore"]
 contains_example = false
 import_path = "llama_index.storage.docstore.mongodb"
 
+[tool.llamahub.class_authors]
+MongoDocumentStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-postgres/pyproject.toml b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-postgres/pyproject.toml
index d4239e22f25fbc41e8857b4944b458024254272b..691e46e12c914bffdfd1d23edfc37e9085e824f2 100644
--- a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-postgres/pyproject.toml
+++ b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-postgres/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PostgresDocumentStore"]
 contains_example = false
 import_path = "llama_index.storage.docstore.postgres"
 
+[tool.llamahub.class_authors]
+PostgresDocumentStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-redis/pyproject.toml b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-redis/pyproject.toml
index 2df0180cd8d4b8461a8756f7f481b9664681f46f..1bb866d265f7bdbc589d40f057b54083a7436162 100644
--- a/llama-index-integrations/storage/docstore/llama-index-storage-docstore-redis/pyproject.toml
+++ b/llama-index-integrations/storage/docstore/llama-index-storage-docstore-redis/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedisDocumentStore"]
 contains_example = false
 import_path = "llama_index.storage.docstore.redis"
 
+[tool.llamahub.class_authors]
+RedisDocumentStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-dynamodb/pyproject.toml b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-dynamodb/pyproject.toml
index e5704881186408fa39957d347d6d63108ab04d69..2af09f5b3edacbadef74c31c6dd4b11854a3bae9 100644
--- a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-dynamodb/pyproject.toml
+++ b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-dynamodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DynamoDBIndexStore"]
 contains_example = false
 import_path = "llama_index.storage.index_store.dynamodb"
 
+[tool.llamahub.class_authors]
+DynamoDBIndexStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-firestore/pyproject.toml b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-firestore/pyproject.toml
index a4f079cdf511c9d72c49233ad2026046c28df6da..8a0696620fc139c99167ce55f78cd2f6570d3b19 100644
--- a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-firestore/pyproject.toml
+++ b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-firestore/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FirestoreIndexStore"]
 contains_example = false
 import_path = "llama_index.storage.index_store.firestore"
 
+[tool.llamahub.class_authors]
+FirestoreIndexStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-mongodb/pyproject.toml b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-mongodb/pyproject.toml
index 98ed69e4077006ac473a1f6790caf5cd8d946102..038d5e3e7a2ee5d1ea335d948935b23e20041de0 100644
--- a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-mongodb/pyproject.toml
+++ b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-mongodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MongoIndexStore"]
 contains_example = false
 import_path = "llama_index.storage.index_store.mongodb"
 
+[tool.llamahub.class_authors]
+MongoIndexStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-postgres/pyproject.toml b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-postgres/pyproject.toml
index 84885d4f7091a2de12d2d2c56f5b5afda0651318..6b72d3e22ac151653d09d94a4e4cae78d5b7fb77 100644
--- a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-postgres/pyproject.toml
+++ b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-postgres/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PostgresIndexStore"]
 contains_example = false
 import_path = "llama_index.storage.index_store.postgres"
 
+[tool.llamahub.class_authors]
+PostgresIndexStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-redis/pyproject.toml b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-redis/pyproject.toml
index e5e08584d87325a228021e8272960cbd10fcf926..1f481aed1abec036b3e138831769b526c518308e 100644
--- a/llama-index-integrations/storage/index_store/llama-index-storage-index-store-redis/pyproject.toml
+++ b/llama-index-integrations/storage/index_store/llama-index-storage-index-store-redis/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedisIndexStore"]
 contains_example = false
 import_path = "llama_index.storage.index_store.redis"
 
+[tool.llamahub.class_authors]
+RedisIndexStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-dynamodb/pyproject.toml b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-dynamodb/pyproject.toml
index 34c633576ef661ec332287967155ab63cb3ca4e5..4a1b0faf559979c4c92190072d92d5756271c0ab 100644
--- a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-dynamodb/pyproject.toml
+++ b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-dynamodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DynamoDBKVStore"]
 contains_example = false
 import_path = "llama_index.storage.kvstore.dynamodb"
 
+[tool.llamahub.class_authors]
+DynamoDBKVStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-firestore/pyproject.toml b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-firestore/pyproject.toml
index a5099c22817d0bc438c8613a757191b08949ec1d..a9ebfa6a702a76c772a893b0ec94b195dfba2d5c 100644
--- a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-firestore/pyproject.toml
+++ b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-firestore/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FirestoreKVStore"]
 contains_example = false
 import_path = "llama_index.storage.kvstore.firestore"
 
+[tool.llamahub.class_authors]
+FirestoreKVStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-mongodb/pyproject.toml b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-mongodb/pyproject.toml
index 8033c338b2229de3d61c610117ef05499b26bdb4..0d8cbb2b8f81b5ce8cd3be488df8dac8a81d89d6 100644
--- a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-mongodb/pyproject.toml
+++ b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-mongodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MongoDBKVStore"]
 contains_example = false
 import_path = "llama_index.storage.kvstore.mongodb"
 
+[tool.llamahub.class_authors]
+MongoDBKVStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-postgres/pyproject.toml b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-postgres/pyproject.toml
index 6adb76d163df2eb0c789c8a16ee0c30fd13ab6d0..e6bda3e7df17d1ddb08f671d8b69b1361400379d 100644
--- a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-postgres/pyproject.toml
+++ b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-postgres/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PostgresKVStore"]
 contains_example = false
 import_path = "llama_index.storage.kvstore.postgres"
 
+[tool.llamahub.class_authors]
+PostgresKVStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-redis/pyproject.toml b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-redis/pyproject.toml
index 204b777c9f4982aa483907e60287475a908b236a..23448bc9cadc47fcdf311a4e01d888d882f49f2f 100644
--- a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-redis/pyproject.toml
+++ b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-redis/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedisKVStore"]
 contains_example = false
 import_path = "llama_index.storage.kvstore.redis"
 
+[tool.llamahub.class_authors]
+RedisKVStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-s3/pyproject.toml b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-s3/pyproject.toml
index 98a849fefc7813b9688385e64cf9403bd43bc1ba..7e3e6cad51b366040193ede00163d6b9086a3377 100644
--- a/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-s3/pyproject.toml
+++ b/llama-index-integrations/storage/kvstore/llama-index-storage-kvstore-s3/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["S3DBKVStore"]
 contains_example = false
 import_path = "llama_index.storage.kvstore.s3"
 
+[tool.llamahub.class_authors]
+S3DBKVStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml
index f17f24a3ec7ac32acd3daf32efea1554bca79c99..b075a106889d5306c0f7642b1ab914ff837f331a 100644
--- a/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-arxiv/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ArxivToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.arxiv"
 
+[tool.llamahub.class_authors]
+ArxivToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml
index 7d4aaea01c11ff4f2642e744775a9c375f257a5d..807073cd7b3f1328c8353b2708ed0306cd973ced 100644
--- a/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-azure-cv/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzureCVToolSpec", "CV_URL_TMPL"]
 contains_example = false
 import_path = "llama_index.tools.azure_cv"
 
+[tool.llamahub.class_authors]
+AzureCVToolSpec = "ajhofmann"
+CV_URL_TMPL = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml
index 6502d7231aea4490cc10f733b44a5f4219395cd3..2e7d2c4667092917e28329ac79571c218d29f5ce 100644
--- a/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-azure-speech/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzureSpeechToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.azure_speech"
 
+[tool.llamahub.class_authors]
+AzureSpeechToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml
index b9f202005d213da28f01010394fe037f97875e5a..db00e83ee9e4b69000cbae66193266ed25fb246c 100644
--- a/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-azure-translate/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzureTranslateToolSpec", "ENDPOINT_BASE_URL"]
 contains_example = false
 import_path = "llama_index.tools.azure_translate"
 
+[tool.llamahub.class_authors]
+AzureTranslateToolSpec = "ajhofmann"
+ENDPOINT_BASE_URL = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml
index 1a1f4d09cb4113806fa580de78ac68958ecac76d..04d944631ef873f75b32de3c33a6095e5a8420d6 100644
--- a/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-bing-search/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BingSearchToolSpec", "ENDPOINT_BASE_URL"]
 contains_example = false
 import_path = "llama_index.tools.bing_search"
 
+[tool.llamahub.class_authors]
+BingSearchToolSpec = "ajhofmann"
+ENDPOINT_BASE_URL = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml
index 26aa11645c62b8e828f7d52f3fcda888c321b324..cca1eb97decda099fa7b3a6b8fd71b56b12f44a7 100644
--- a/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-chatgpt-plugin/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChatGPTPluginToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.chatgpt_plugin"
 
+[tool.llamahub.class_authors]
+ChatGPTPluginToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml
index 163c8ca879e731b2b252d477abc7147a3e300ca2..90a8a83da56866149eccdc5a1297cac65e9b9868 100644
--- a/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-code-interpreter/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CodeInterpreterToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.code_interpreter"
 
+[tool.llamahub.class_authors]
+CodeInterpreterToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml
index 33c2baf429cfcc0c8bedd3d75579ef4557c59448..e9d70d3c4c66c6052046ce4c9c4cf9bf78809217 100644
--- a/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-cogniswitch/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CogniswitchToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.cogniswitch"
 
+[tool.llamahub.class_authors]
+CogniswitchToolSpec = "cogniswitch"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml
index ee4f13ef2771c866449f5fda48963baf3d4417bd..474191a33485d49eb122fb0a51135a2eaf9a07ab 100644
--- a/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-database/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DatabaseToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.database"
 
+[tool.llamahub.class_authors]
+DatabaseToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml
index 30ec02b8e8266cf7469950078c73048f0f3d47eb..b8886238d8c6720e5aeb1e2ae5b8de4bbd7c1805 100644
--- a/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-exa/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ExaToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.exa"
 
+[tool.llamahub.class_authors]
+ExaToolSpec = "jeffzwang"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml
index b5a7c511aa9fde996bbafb479af1411473aa616e..1ff733f7698b86f65020a27e1a5a198c0b502c3e 100644
--- a/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-google/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GmailToolSpec", "GoogleCalendarToolSpec", "GoogleSearchToolSpec", "QUERY_URL_TMPL"]
 contains_example = false
 import_path = "llama_index.tools.google"
 
+[tool.llamahub.class_authors]
+GmailToolSpec = "ajhofmann"
+GoogleCalendarToolSpec = "ajhofmann"
+GoogleSearchToolSpec = "ajhofmann"
+QUERY_URL_TMPL = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml
index bf2b2622b490f61cb1585a1d5a4ea4a8dd090cef..50150b9e9cf3a49df360ac45101fe68ecd95eab9 100644
--- a/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-graphql/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GraphQLToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.graphql"
 
+[tool.llamahub.class_authors]
+GraphQLToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml
index 2841043b51b4aea49151b7c011f2ab40632820fa..18c600a3ce819d572d3ded0b40e0d76c6e073bb3 100644
--- a/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-ionic-shopping/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["IonicShoppingToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.ionic_shopping"
 
+[tool.llamahub.class_authors]
+IonicShoppingToolSpec = "stewartjarod"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml
index ab1cfb5a393aa336502f9d655ce78b18586cad63..1c71f5c38382e06b3e5598f020ba527b8b5a32a9 100644
--- a/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-metaphor/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MetaphorToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.metaphor"
 
+[tool.llamahub.class_authors]
+MetaphorToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml
index 583514512cb9e84d94b582e52adc5b0445b29223..1ad332255aebfe82ea27e3238feb8f2d8ad6d980 100644
--- a/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-multion/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MultionToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.multion"
 
+[tool.llamahub.class_authors]
+MultionToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml
index 820796d60a1591d536f75b414e26600cc6741325..73f33d841f0e9c2a400e824aa67af3f6125edcbc 100644
--- a/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-neo4j/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Neo4jQueryToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.neo4j"
 
+[tool.llamahub.class_authors]
+Neo4jQueryToolSpec = "shahafp"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml
index 671df4d15cfebc1ad8487e6bd4da770eedbb1ee3..d76dfaa2c2996075bcfd5efc442321355bc9288b 100644
--- a/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-notion/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["NotionToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.notion"
 
+[tool.llamahub.class_authors]
+NotionToolSpec = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml
index 578d90c9dd21775b8ca495300e21efad07a28f66..b8f86907d7b017a00e9fef863ed5c7a56715994d 100644
--- a/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-openai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAIImageGenerationToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.openai"
 
+[tool.llamahub.class_authors]
+OpenAIImageGenerationToolSpec = "manelferreira_"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml
index 1ce1469fc8a45b9764168237ba9bb3a022e50535..58b1e747faa425a5741a5a9943f4d0610eb0310e 100644
--- a/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-openapi/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenAPIToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.openapi"
 
+[tool.llamahub.class_authors]
+OpenAPIToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml
index abc58adb42c5028c6df53219ddc44ed1d8584c6e..e36ac253b23725917a203afbc75e7939c7cc4de6 100644
--- a/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-playgrounds/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PlaygroundsSubgraphConnectorToolSpec", "PlaygroundsSubgraphInspectorToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.playgrounds"
 
+[tool.llamahub.class_authors]
+PlaygroundsSubgraphConnectorToolSpec = "tachi"
+PlaygroundsSubgraphInspectorToolSpec = "tachi"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml
index f33fed7edafe88d821e106fb0dc8304513d09031..fef3a43cc235997cd1ffccbe76def75af566d085 100644
--- a/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-python-file/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PythonFileToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.python_file"
 
+[tool.llamahub.class_authors]
+PythonFileToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml
index abd7098925a851b161ce90202b5b2e35c30f4615..3c0170879d5a600aa15d6639f6f2fbfad714e7fb 100644
--- a/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-requests/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["INVALID_URL_PROMPT", "RequestsToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.requests"
 
+[tool.llamahub.class_authors]
+INVALID_URL_PROMPT = "llama-index"
+RequestsToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml
index b5dca1445d5fce9bb628f19cc0b56c1b7f3f6bec..4ff7b1640723efcb4cceebca812c0b677053b564 100644
--- a/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-salesforce/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SalesforceToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.salesforce"
 
+[tool.llamahub.class_authors]
+SalesforceToolSpec = "chrispangg"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml
index 8ff003b4f16c86afd5d485ca718c25b74f47275c..b14cff64872625b49d68fe6bebdedd323849a182 100644
--- a/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-shopify/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ShopifyToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.shopify"
 
+[tool.llamahub.class_authors]
+ShopifyToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml
index 024f3b6715a8de579f1e185c4bb04a31c3ead796..7ea1bede38f030f8c703f108a31a28a579c42379 100644
--- a/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-slack/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SlackToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.slack"
 
+[tool.llamahub.class_authors]
+SlackToolSpec = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml
index b647d965ee2af09459ce53cad626b5f82707c750..0ed195a33a7002421946a9aa81c59ee823d7f0d2 100644
--- a/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-tavily-research/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TavilyToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.tavily_research"
 
+[tool.llamahub.class_authors]
+TavilyToolSpec = "rotemweiss57"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml
index b939a09c2e2eb78781473a0cc609e54d7b5cd9d1..6e2bced594e0f269bd2a39d186d2dc916b1d906b 100644
--- a/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-text-to-image/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TextToImageToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.text_to_image"
 
+[tool.llamahub.class_authors]
+TextToImageToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml
index deb5f0a90e102f39c66a46430856d5b33cb2e319..5f2912792a53bcc4de163e31d5713fbf85308ef6 100644
--- a/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-vector-db/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["VectorDB", "VectorDBToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.vector_db"
 
+[tool.llamahub.class_authors]
+VectorDB = "llama-index"
+VectorDBToolSpec = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml
index 1cfe59ab143857116ff143be40cbb44b38d3d97f..a0fcb0d3ab1268650e45ed675fbe8369db59831c 100644
--- a/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-waii/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WaiiToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.waii"
 
+[tool.llamahub.class_authors]
+WaiiToolSpec = "wangdatan"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml
index 746fff567add3031ee0867baceb537ebf2173e1d..1f609fcf19e6ad98968cee0fd856a1980972ca3e 100644
--- a/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-weather/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OpenWeatherMapToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.weather"
 
+[tool.llamahub.class_authors]
+OpenWeatherMapToolSpec = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml
index 090acb1d7f16a039cdd740e2f74578e2a1ccdfde..975b678d84ecde2dd8332c6a8deb7fee598bd90a 100644
--- a/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-wikipedia/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WikipediaToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.wikipedia"
 
+[tool.llamahub.class_authors]
+WikipediaToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml
index 059e51c748be113bace808c195775643123ed56e..df33d73c8df08a8d92f61160ddafd8303b9ed4eb 100644
--- a/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-wolfram-alpha/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["QUERY_URL_TMPL", "WolframAlphaToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.wolfram_alpha"
 
+[tool.llamahub.class_authors]
+QUERY_URL_TMPL = "llama-index"
+WolframAlphaToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml
index e007c5d4b1f94adee7e891337f581d7ed3168d68..869b80a06f101acb32e0b6105826add4f0dd955b 100644
--- a/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-yahoo-finance/pyproject.toml
@@ -7,9 +7,15 @@ check-filenames = true
 check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
+[tool.llamahub]
+contains_example = false
+import_path = "llama_index.tools.yahoo_finance"
+
+[tool.llamahub.class_authors]
+YahooFinanceToolSpec = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -19,7 +25,6 @@ authors = ["Your Name <you@example.com>"]
 description = "llama-index tools yahoo_finance integration"
 license = "MIT"
 name = "llama-index-tools-yahoo-finance"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -29,8 +34,6 @@ llama-index-core = "^0.10.0"
 yfinance = "^0.2.36"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -46,3 +49,14 @@ types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
 types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml
index 68958994b172a0e07ff1118dfba4a53c5d3c9ec8..6f5abe470cc76f93fd630c75f258c4750c015831 100644
--- a/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-yelp/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["YelpToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.yelp"
 
+[tool.llamahub.class_authors]
+YelpToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml
index dc6fe869686fae8a23fe923cda98c966794a3ac3..2a47bd758ad7ee453e7f2463c19125b556b647aa 100644
--- a/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml
+++ b/llama-index-integrations/tools/llama-index-tools-zapier/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ACTION_URL_TMPL", "ZapierToolSpec"]
 contains_example = false
 import_path = "llama_index.tools.zapier"
 
+[tool.llamahub.class_authors]
+ACTION_URL_TMPL = "llama-index"
+ZapierToolSpec = "ajhofmann"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-astra/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-astra/pyproject.toml
index ab20365ef219b311ebf9d3a43ab6f425264ea5c2..360fef5258a71b623b061b72c353448b5b7ea4bd 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-astra/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-astra/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AstraDBVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.astra"
 
+[tool.llamahub.class_authors]
+AstraDBVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-awadb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-awadb/pyproject.toml
index 15a2d3e845d108458e5bc854bd1e534ece39f2f9..c9b18bcbf2c3e46994be989faa8a4de7d7c07f37 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-awadb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-awadb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AwaDBVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.awadb"
 
+[tool.llamahub.class_authors]
+AwaDBVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
index d67e58f397cef2b0f7cdbe086b1f9d45ac4e248a..7477b363ab92c4d7bbaef9e4c18520d7110f2c57 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-azureaisearch/pyproject.toml
@@ -8,10 +8,15 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzureAISearchVectorStore", "CognitiveSearchVectorStore", "IndexManagement"]
 contains_example = false
 import_path = "llama_index.vector_stores.azureaisearch"
 
+[tool.llamahub.class_authors]
+AzureAISearchVectorStore = "llama-index"
+CognitiveSearchVectorStore = "llama-index"
+IndexManagement = "llama-index"
+MetadataIndexFieldType = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-azurecosmosmongo/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-azurecosmosmongo/pyproject.toml
index 4e951ded03661477454c461704547307cc539afa..aa917b647ce4e1f2422056d711d1b3126fa1c20c 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-azurecosmosmongo/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-azurecosmosmongo/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AzureCosmosDBMongoDBVectorSearch"]
 contains_example = false
 import_path = "llama_index.vector_stores.azurecosmosmongo"
 
+[tool.llamahub.class_authors]
+AzureCosmosDBMongoDBVectorSearch = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-bagel/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-bagel/pyproject.toml
index 17f1733a8c0921c490f6249b48ee12b29aa2ce34..d231833ec32c866ffe21b4c1bcfc3c0137db3d57 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-bagel/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-bagel/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["BagelVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.bagel"
 
+[tool.llamahub.class_authors]
+BagelVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-cassandra/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-cassandra/pyproject.toml
index 85904ea988411c9d27a9003e891d94c48d07e7da..94093ae3f07992cc5d0b397db0bd0c9f45837c39 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-cassandra/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-cassandra/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CassandraVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.cassandra"
 
+[tool.llamahub.class_authors]
+CassandraVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-chatgpt-plugin/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-chatgpt-plugin/pyproject.toml
index c1588e7e94061245f778d4076fd6b033f9af942f..26782cefb1f0ed961afd0b884e8a23b7fda7c1c6 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-chatgpt-plugin/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-chatgpt-plugin/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChatGPTRetrievalPluginClient"]
 contains_example = false
 import_path = "llama_index.vector_stores.chatgpt_plugin"
 
+[tool.llamahub.class_authors]
+ChatGPTRetrievalPluginClient = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/pyproject.toml
index 58c36ebef2ffcf3155a15f185d02e0b80ee77af6..30f01554b510075991cd0cb63836b024265931eb 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChromaVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.chroma"
 
+[tool.llamahub.class_authors]
+ChromaVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-clickhouse/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-clickhouse/pyproject.toml
index 43fc6290c852f6c6aa800c6c3bcddc12a77ee9ca..1fb1f1cb22efacc2b40cceff2b305ca269e02d92 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-clickhouse/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-clickhouse/pyproject.toml
@@ -7,6 +7,13 @@ check-filenames = true
 check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
+[tool.llamahub]
+contains_example = false
+import_path = "llama_index.vector_stores.clickhouse"
+
+[tool.llamahub.class_authors]
+ClickHouseVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-dashvector/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-dashvector/pyproject.toml
index f3c79181efbb8ae676027e3f4540d99763de15b9..dd6c8a845560d6e141d16a5ab187d5e26cefc093 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-dashvector/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-dashvector/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DashVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.dashvector"
 
+[tool.llamahub.class_authors]
+DashVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/pyproject.toml
index c4a7aa11ebfc15eacef0bf651d2673c63336f647..a488545708e2b34c6cf259e44d96dcbe6e41bc15 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-deeplake/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DeepLakeVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.deeplake"
 
+[tool.llamahub.class_authors]
+DeepLakeVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-docarray/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-docarray/pyproject.toml
index 1cae4f58cce261b23f5b355866fa13717fc2ce3e..50a7a982b4cee336454305938f19c2559c985fb2 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-docarray/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-docarray/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DocArrayHnswVectorStore", "DocArrayInMemoryVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.docarray"
 
+[tool.llamahub.class_authors]
+DocArrayHnswVectorStore = "llama-index"
+DocArrayInMemoryVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-duckdb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-duckdb/pyproject.toml
index 0a4c52e95f8d894c0947919621525ee3c6dc0117..36fd194d4ad79c9dc7c7acf130cd207fec8ac65c 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-duckdb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-duckdb/pyproject.toml
@@ -5,18 +5,17 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DuckDBVectorStore"]
-contains_example = true
+contains_example = false
 import_path = "llama_index.vector_stores.duckdb"
 
+[tool.llamahub.class_authors]
+DuckDBVectorStore = "krish-adi"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -27,7 +26,6 @@ description = "llama-index vector_stores duckdb integration"
 license = "MIT"
 maintainers = ["krish-adi"]
 name = "llama-index-vector-stores-duckdb"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -37,8 +35,6 @@ llama-index-core = "^0.10.0"
 duckdb = "0.9.2"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -52,5 +48,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-dynamodb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-dynamodb/pyproject.toml
index d9765258b5de04e397b4cc0467ede49c514c363a..2cd10dcc4cd08c870483b63c4d88e13ce6e28326 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-dynamodb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-dynamodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DynamoDBVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.dynamodb"
 
+[tool.llamahub.class_authors]
+DynamoDBVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-elasticsearch/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-elasticsearch/pyproject.toml
index 76424b7f7e42fe53e1913c5a995e498adf1e33f8..b60cf16058ae1b1daec443c6335b07053ac00f93 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-elasticsearch/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-elasticsearch/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ElasticsearchStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.elasticsearch"
 
+[tool.llamahub.class_authors]
+ElasticsearchStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-epsilla/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-epsilla/pyproject.toml
index 6cd302eeb31db119b2109d8d260586280b00e61e..85e6af35d0353399f372207791cc41ace1b26f9c 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-epsilla/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-epsilla/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["EpsillaVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.epsilla"
 
+[tool.llamahub.class_authors]
+EpsillaVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-faiss/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-faiss/pyproject.toml
index 07cfdff7fb3a1b71342547a5182fdd06cf9a4dbf..f379b8f0324d49d514d7d53179ab76d130ba49ca 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-faiss/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-faiss/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FaissVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.faiss"
 
+[tool.llamahub.class_authors]
+FaissVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-google/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-google/pyproject.toml
index 755fa0ce0fdcf98356bc3f1850dba8b479d73743..16f43be73c3b1e57bd74db9e446b7f91fd31f9ca 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-google/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-google/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GoogleVectorStore", "set_google_config"]
 contains_example = false
 import_path = "llama_index.vector_stores.google"
 
+[tool.llamahub.class_authors]
+GoogleVectorStore = "llama-index"
+set_google_config = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-jaguar/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-jaguar/pyproject.toml
index 683e2da873b520c35fc2367a99fda740dd7093e6..0ebd8c28b5f7f1e8e2946f149e03ef2fad71bd0d 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-jaguar/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-jaguar/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["JaguarVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.jaguar"
 
+[tool.llamahub.class_authors]
+JaguarVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-lancedb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-lancedb/pyproject.toml
index 8fdaeec2d36b8f378130a8e8f4b53e313e1864fc..898b647263d3d2d527d38275ef0f34a90d35902d 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-lancedb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-lancedb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LanceDBVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.lancedb"
 
+[tool.llamahub.class_authors]
+LanceDBVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-lantern/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-lantern/pyproject.toml
index 0a9b95f7f37cfc5127c068ecd7a2006ddca5dab6..27138447e64e9eeaccab0a96e983c0a58def5c8e 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-lantern/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-lantern/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LanternVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.lantern"
 
+[tool.llamahub.class_authors]
+LanternVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-metal/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-metal/pyproject.toml
index 3db1d2e45c6f58bd10eff4eb5c21afe11d81c9f2..69996424921d79a93b7307de536d1224833e77cd 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-metal/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-metal/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MetalVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.metal"
 
+[tool.llamahub.class_authors]
+MetalVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml
index 46024c4a58996ade6b45187ffe22762bf4963111..24d4c0234cc51278b0246997b8c16cc563370aed 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-milvus/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MilvusVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.milvus"
 
+[tool.llamahub.class_authors]
+MilvusVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml
index de01ba5aae5e6c185054219d9e2ae6742ad95905..f9ed57ec00f52797c57e82500c1e18e87bf2f086 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-mongodb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MongoDBAtlasVectorSearch"]
 contains_example = false
 import_path = "llama_index.vector_stores.mongodb"
 
+[tool.llamahub.class_authors]
+MongoDBAtlasVectorSearch = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-myscale/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-myscale/pyproject.toml
index 85d8c243cb4489f162c8833cf84d751309beadf0..9873cf9f92bd96a85a240586afccfef82f2e83b1 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-myscale/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-myscale/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MyScaleVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.myscale"
 
+[tool.llamahub.class_authors]
+MyScaleVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-neo4jvector/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-neo4jvector/pyproject.toml
index 4f7ad8d68165c576279974590fd2887551379a5c..a97f93cd0af25df0f559f9a019869d9420cc04f6 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-neo4jvector/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-neo4jvector/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Neo4jVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.neo4jvector"
 
+[tool.llamahub.class_authors]
+Neo4jVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-opensearch/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-opensearch/pyproject.toml
index 758666af08f11296e65ff63d9ba7da0a24c7d0cb..f6234fc472b82abe701fd3d1effa0c8d9ea54be0 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-opensearch/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-opensearch/pyproject.toml
@@ -7,6 +7,14 @@ check-filenames = true
 check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
+[tool.llamahub]
+contains_example = false
+import_path = "llama_index.vector_stores.opensearch"
+
+[tool.llamahub.class_authors]
+OpensearchVectorClient = "llama-index"
+OpensearchVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-pgvecto-rs/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-pgvecto-rs/pyproject.toml
index eaac7fe721730818caafa2125233fce75f8a47dd..81016f48a848ff999d5fc60518b0ca67eadec192 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-pgvecto-rs/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-pgvecto-rs/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PGVectoRsStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.pgvecto_rs"
 
+[tool.llamahub.class_authors]
+PGVectoRsStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-pinecone/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-pinecone/pyproject.toml
index 71f772d2d553e1598928e36a8c633dcbec6e2508..5ad7d4225606f5173c3a0ae64d381e1dc115f48a 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-pinecone/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-pinecone/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PineconeVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.pinecone"
 
+[tool.llamahub.class_authors]
+PineconeVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/pyproject.toml
index 19a0deeeae100d7af34ee537fdcfa0ce841b0c2a..bcd4af562f05fb97aeba24ae74e2f292591241c1 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PGVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.postgres"
 
+[tool.llamahub.class_authors]
+PGVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-qdrant/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-qdrant/pyproject.toml
index ebf87539a1c3f74802a2d964b295a9593dc540f9..841c98618a7b96f65748b1534e44eef59adc34d3 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-qdrant/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-qdrant/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["QdrantVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.qdrant"
 
+[tool.llamahub.class_authors]
+QdrantVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-redis/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-redis/pyproject.toml
index 7d407dbcdb9c617d17e34460d5dd5cd3329823e1..66d2b1ef6c335cdc115b5756501389b1fc9eeb74 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-redis/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-redis/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedisVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.redis"
 
+[tool.llamahub.class_authors]
+RedisVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-rocksetdb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-rocksetdb/pyproject.toml
index f5e47fa60c3d841b83d82a358cb617a8d86907b2..ade3f98c101a264ac2472ff209cf2d846e725184 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-rocksetdb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-rocksetdb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RocksetVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.rocksetdb"
 
+[tool.llamahub.class_authors]
+RocksetVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-singlestoredb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-singlestoredb/pyproject.toml
index 1b6052fd6ca408ee6d79b6a85c63deb35e88eba6..999785e3fc45d8f2266535ccb2e6ffcdbbf83515 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-singlestoredb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-singlestoredb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SingleStoreVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.singlestoredb"
 
+[tool.llamahub.class_authors]
+SingleStoreVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-supabase/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-supabase/pyproject.toml
index e80453273645c7bea5de7d909170af7a5554868e..350d9930a2775935ddf7f909293c8b5e26e6e45c 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-supabase/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-supabase/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SupabaseVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.supabase"
 
+[tool.llamahub.class_authors]
+SupabaseVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-tair/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-tair/pyproject.toml
index 7073036150294ee9ff14cf6d4b12019b25510b53..ae6a08d3e1b3506209b09192e39c7b51ac4ed8c5 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-tair/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-tair/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TairVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.tair"
 
+[tool.llamahub.class_authors]
+TairVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-tencentvectordb/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-tencentvectordb/pyproject.toml
index f796d9f3e5716e775e5de4679527e5bec7df4d92..30d4dbd185fb4cbe7cb3c696e7c9b01c29ab84f2 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-tencentvectordb/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-tencentvectordb/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TencentVectorDB"]
 contains_example = false
 import_path = "llama_index.vector_stores.tencentvectordb"
 
+[tool.llamahub.class_authors]
+TencentVectorDB = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-timescalevector/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-timescalevector/pyproject.toml
index 33e973300ce5f7fb29f0ef87c468e735c85b8d14..421766cf8c225c236df2f6b895f876ef932c3f68 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-timescalevector/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-timescalevector/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TimescaleVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.timescalevector"
 
+[tool.llamahub.class_authors]
+TimescaleVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-txtai/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-txtai/pyproject.toml
index 5268d723211ee5b94c9a9ba8a1aff3f7f99ed6e8..0003d3db5d9e861713f592fb8c46cab57fa1305b 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-txtai/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-txtai/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TxtaiVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.txtai"
 
+[tool.llamahub.class_authors]
+TxtaiVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-typesense/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-typesense/pyproject.toml
index af764c269f13d67083d2be0e371a1f3035c8a232..095688e9eca141f7ddbb807b3e78fa1ac32bb02c 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-typesense/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-typesense/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TypesenseVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.typesense"
 
+[tool.llamahub.class_authors]
+TypesenseVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-upstash/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-upstash/pyproject.toml
index 7b7e8bc8e904556e1914372848dd04bb8bf2b45e..29223903068a7e9b8a216bf3200916a506d7a617 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-upstash/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-upstash/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["UpstashVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.upstash"
 
+[tool.llamahub.class_authors]
+UpstashVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-weaviate/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-weaviate/pyproject.toml
index d0861a9bee05e5b747b578a29ecfdca14bb552e0..f939dc42f2ca2a7008f19d23ef414dfc9dda2374 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-weaviate/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-weaviate/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WeaviateVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.weaviate"
 
+[tool.llamahub.class_authors]
+WeaviateVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-integrations/vector_stores/llama-index-vector-stores-zep/pyproject.toml b/llama-index-integrations/vector_stores/llama-index-vector-stores-zep/pyproject.toml
index c554ecbfaca9afccae19a5b24324fa83bef30426..81d1d7a3875149504bee34a0c299c271b71219eb 100644
--- a/llama-index-integrations/vector_stores/llama-index-vector-stores-zep/pyproject.toml
+++ b/llama-index-integrations/vector_stores/llama-index-vector-stores-zep/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ZepVectorStore"]
 contains_example = false
 import_path = "llama_index.vector_stores.zep"
 
+[tool.llamahub.class_authors]
+ZepVectorStore = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml
index abca133f0a77f36e597a1b49b23f24c3799021cb..4adbfffc6c7cb543d07c466ebb79eeb23d481c22 100644
--- a/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-agent-search-retriever/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AgentSearchRetriever", "AgentSearchRetrieverPack"]
 contains_example = true
 import_path = "llama_index.packs.agent_search_retriever"
 
+[tool.llamahub.class_authors]
+AgentSearchRetriever = "llama-index"
+AgentSearchRetrieverPack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml b/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml
index dfb4c9051e0f75adefec266281b9a03388d9c844..632ccda5183f670ac64b6a390985b6e3e78e17a4 100644
--- a/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-agents-llm-compiler/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LLMCompilerAgentPack"]
 contains_example = false
 import_path = "llama_index.packs.agents_llm_compiler"
 
+[tool.llamahub.class_authors]
+LLMCompilerAgentPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml b/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml
index f5aefa2aa75149debf4d0098f316ae3a00b8cf76..f75ea33069a3620ab436eb923d2a1d43619bdfe6 100644
--- a/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-amazon-product-extraction/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AmazonProductExtractionPack"]
 contains_example = false
 import_path = "llama_index.packs.amazon_product_extraction"
 
+[tool.llamahub.class_authors]
+AmazonProductExtractionPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml
index 0b021cedbc93c580aae20e45337d71a70a2bf34a..a377d8c9ce1833c9a986d7212eab4101ac79b929 100644
--- a/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-arize-phoenix-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ArizePhoenixQueryEnginePack"]
 contains_example = true
 import_path = "llama_index.packs.arize_phoenix_query_engine"
 
+[tool.llamahub.class_authors]
+ArizePhoenixQueryEnginePack = "axiomofjoy"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-auto-merging-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-auto-merging-retriever/pyproject.toml
index 5ed7a2dbd2b9bbc3ffdbb1c6074ff636bd39738b..3071b71ab2a46f92592cf1406be4b3be901fc858 100644
--- a/llama-index-packs/llama-index-packs-auto-merging-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-auto-merging-retriever/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["AutoMergingRetrieverPack"]
 contains_example = true
 import_path = "llama_index.packs.auto_merging_retriever"
 
+[tool.llamahub.class_authors]
+AutoMergingRetrieverPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-chroma-autoretrieval/pyproject.toml b/llama-index-packs/llama-index-packs-chroma-autoretrieval/pyproject.toml
index 3d00dd3d031b164b007e29a812a31f35b730ec02..6dd79c9a0a6f45176d02db8ab2ce39e029f27e97 100644
--- a/llama-index-packs/llama-index-packs-chroma-autoretrieval/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-chroma-autoretrieval/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChromaAutoretrievalPack"]
 contains_example = false
 import_path = "llama_index.packs.chroma_autoretrieval"
 
+[tool.llamahub.class_authors]
+ChromaAutoretrievalPack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-cogniswitch-agent/pyproject.toml b/llama-index-packs/llama-index-packs-cogniswitch-agent/pyproject.toml
index 6393b705035cb12ce3d641fd29b73e0008657c79..1f4f7a9acab1fd6d08df12fa68c92d39c15e5b2b 100644
--- a/llama-index-packs/llama-index-packs-cogniswitch-agent/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-cogniswitch-agent/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CogniswitchAgentPack"]
 contains_example = true
 import_path = "llama_index.packs.cogniswitch_agent"
 
+[tool.llamahub.class_authors]
+CogniswitchAgentPack = "cogniswitch"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-corrective-rag/pyproject.toml b/llama-index-packs/llama-index-packs-corrective-rag/pyproject.toml
index da27bb775c0bf8dcbbf956283058632fdb149f17..41884a8c86482d8d4cb9b9f59856b10981503518 100644
--- a/llama-index-packs/llama-index-packs-corrective-rag/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-corrective-rag/pyproject.toml
@@ -5,18 +5,17 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["CorrectiveRAGPack"]
-contains_example = false
+contains_example = true
 import_path = "llama_index.packs.corrective_rag"
 
+[tool.llamahub.class_authors]
+CorrectiveRAGPack = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -28,7 +27,6 @@ keywords = ["corrective", "corrective_rag", "crag", "rag", "retrieve"]
 license = "MIT"
 maintainers = ["ravi-theja"]
 name = "llama-index-packs-corrective-rag"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -38,8 +36,6 @@ llama-index-core = "^0.10.0"
 tavily-python = "^0.3.1"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -53,5 +49,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-packs/llama-index-packs-deeplake-deepmemory-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-deeplake-deepmemory-retriever/pyproject.toml
index 6d6eb870e3a27d38c41c31d5bf830dc085eccc3a..8a32d90d8bb6fcfa283c943d5121e3a630f3cb6d 100644
--- a/llama-index-packs/llama-index-packs-deeplake-deepmemory-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-deeplake-deepmemory-retriever/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DeepMemoryRetrieverPack"]
 contains_example = false
 import_path = "llama_index.packs.deeplake_deepmemory_retriever"
 
+[tool.llamahub.class_authors]
+DeepMemoryRetrieverPack = "AdkSarsen"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-deeplake-multimodal-retrieval/pyproject.toml b/llama-index-packs/llama-index-packs-deeplake-multimodal-retrieval/pyproject.toml
index 9cb4e5612f00125ea4f4255d709a992af606ae8f..99c66328867a7d6ffc6137b94cea12fb0c2037b8 100644
--- a/llama-index-packs/llama-index-packs-deeplake-multimodal-retrieval/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-deeplake-multimodal-retrieval/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DeepLakeMultimodalRetrieverPack"]
 contains_example = false
 import_path = "llama_index.packs.deeplake_multimodal_retrieval"
 
+[tool.llamahub.class_authors]
+DeepLakeMultimodalRetrieverPack = "AdkSarsen"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-dense-x-retrieval/pyproject.toml b/llama-index-packs/llama-index-packs-dense-x-retrieval/pyproject.toml
index 55aa02097b72a1ad67fdefadef3e88f6d97cd4bf..e29d35520d42d8bc526a3641be061bc0a2f3e9ec 100644
--- a/llama-index-packs/llama-index-packs-dense-x-retrieval/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-dense-x-retrieval/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["DenseXRetrievalPack"]
 contains_example = true
 import_path = "llama_index.packs.dense_x_retrieval"
 
+[tool.llamahub.class_authors]
+DenseXRetrievalPack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-evaluator-benchmarker/pyproject.toml b/llama-index-packs/llama-index-packs-evaluator-benchmarker/pyproject.toml
index 151637e8ba747e6b1beb035b70f2bfc625757dd4..2274c7dde214c04abf2e6a5d5a5b1dead927796d 100644
--- a/llama-index-packs/llama-index-packs-evaluator-benchmarker/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-evaluator-benchmarker/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["EvaluatorBenchmarkerPack"]
 contains_example = false
 import_path = "llama_index.packs.evaluator_benchmarker"
 
+[tool.llamahub.class_authors]
+EvaluatorBenchmarkerPack = "nerdai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-fusion-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-fusion-retriever/pyproject.toml
index c8ae962c1a5038fe5d6331b6a3ed2b5f850310e1..706ba1719774a8a235d83a4319a30e54dbb0baaa 100644
--- a/llama-index-packs/llama-index-packs-fusion-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-fusion-retriever/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["HybridFusionRetrieverPack", "QueryRewritingRetrieverPack"]
 contains_example = false
 import_path = "llama_index.packs.fusion_retriever"
 
+[tool.llamahub.class_authors]
+HybridFusionRetrieverPack = "jerryjliu"
+QueryRewritingRetrieverPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-fuzzy-citation/pyproject.toml b/llama-index-packs/llama-index-packs-fuzzy-citation/pyproject.toml
index 990430951098da92e5c140aed9da7ee206abfecd..f58be8a4240242371adc2540936e97c0d798321a 100644
--- a/llama-index-packs/llama-index-packs-fuzzy-citation/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-fuzzy-citation/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["FuzzyCitationEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.fuzzy_citation"
 
+[tool.llamahub.class_authors]
+FuzzyCitationEnginePack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-gmail-openai-agent/pyproject.toml b/llama-index-packs/llama-index-packs-gmail-openai-agent/pyproject.toml
index 4b4c5ed5c744242f8ae7bee545ec942fc2b49308..d136a78d54237a88ba2c4144f012d5ae3c4f5f44 100644
--- a/llama-index-packs/llama-index-packs-gmail-openai-agent/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-gmail-openai-agent/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GmailOpenAIAgentPack"]
 contains_example = false
 import_path = "llama_index.packs.gmail_openai_agent"
 
+[tool.llamahub.class_authors]
+GmailOpenAIAgentPack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-gradio-agent-chat/pyproject.toml b/llama-index-packs/llama-index-packs-gradio-agent-chat/pyproject.toml
index fd06c1df43f61913e7972f1f100dcfe942c8bf9e..7eee80230e7391a110965500a8adb29a21e5f5cf 100644
--- a/llama-index-packs/llama-index-packs-gradio-agent-chat/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-gradio-agent-chat/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GradioAgentChatPack"]
 contains_example = false
 import_path = "llama_index.packs.gradio_agent_chat"
 
+[tool.llamahub.class_authors]
+GradioAgentChatPack = "nerdai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-gradio-react-agent-chatbot/pyproject.toml b/llama-index-packs/llama-index-packs-gradio-react-agent-chatbot/pyproject.toml
index 7b91155c0780333ca424bfce9c83bd3e08cdf79d..ed32656f7d071088c2d768901ff67c11cbe451ca 100644
--- a/llama-index-packs/llama-index-packs-gradio-react-agent-chatbot/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-gradio-react-agent-chatbot/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["GradioReActAgentPack"]
 contains_example = false
 import_path = "llama_index.packs.gradio_react_agent_chatbot"
 
+[tool.llamahub.class_authors]
+GradioReActAgentPack = "nerdai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-infer-retrieve-rerank/pyproject.toml b/llama-index-packs/llama-index-packs-infer-retrieve-rerank/pyproject.toml
index c0bc1e68f148a00aea4dd22cd98be2fb54f9a771..9ad69b5dc21281fc42bf240fca01ac2d0131b336 100644
--- a/llama-index-packs/llama-index-packs-infer-retrieve-rerank/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-infer-retrieve-rerank/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["InferRetrieveRerankPack"]
 contains_example = false
 import_path = "llama_index.packs.infer_retrieve_rerank"
 
+[tool.llamahub.class_authors]
+InferRetrieveRerankPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-llama-dataset-metadata/pyproject.toml b/llama-index-packs/llama-index-packs-llama-dataset-metadata/pyproject.toml
index 49bc31ad456ab9dbb509123aec4edf344c6893ee..5e0fc523859dc9a6cf76f55c1b5e8de14a6efe40 100644
--- a/llama-index-packs/llama-index-packs-llama-dataset-metadata/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-llama-dataset-metadata/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LlamaDatasetMetadataPack"]
 contains_example = false
 import_path = "llama_index.packs.llama_dataset_metadata"
 
+[tool.llamahub.class_authors]
+LlamaDatasetMetadataPack = "nerdai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-llama-guard-moderator/pyproject.toml b/llama-index-packs/llama-index-packs-llama-guard-moderator/pyproject.toml
index 1c5935710115e28c2f065f8099ecbcd56a113170..6730547adf39d7219f1e08954b9cdb92a56a7ff9 100644
--- a/llama-index-packs/llama-index-packs-llama-guard-moderator/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-llama-guard-moderator/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LlamaGuardModeratorPack"]
 contains_example = false
 import_path = "llama_index.packs.llama_guard_moderator"
 
+[tool.llamahub.class_authors]
+LlamaGuardModeratorPack = "wenqiglantz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-llava-completion/pyproject.toml b/llama-index-packs/llama-index-packs-llava-completion/pyproject.toml
index caaec55e7cb2ec28698b9d539b1e6d5f92049e9e..2cc57080e98c0b91b7cb88f964cda267c2d91925 100644
--- a/llama-index-packs/llama-index-packs-llava-completion/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-llava-completion/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LlavaCompletionPack"]
 contains_example = false
 import_path = "llama_index.packs.llava_completion"
 
+[tool.llamahub.class_authors]
+LlavaCompletionPack = "wenqiglantz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-multi-document-agents/pyproject.toml b/llama-index-packs/llama-index-packs-multi-document-agents/pyproject.toml
index 88c2d8faaeb2b1915143157b723d8ed63e59fd4b..c2303d9e634721e14bbe5d9dc6c834be2a7d0897 100644
--- a/llama-index-packs/llama-index-packs-multi-document-agents/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-multi-document-agents/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MultiDocumentAgentsPack"]
 contains_example = false
 import_path = "llama_index.packs.multi_document_agents"
 
+[tool.llamahub.class_authors]
+MultiDocumentAgentsPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-multi-tenancy-rag/pyproject.toml b/llama-index-packs/llama-index-packs-multi-tenancy-rag/pyproject.toml
index 1aa280776a66ddba5461aa582052af93cbfab6f0..24e6ef979a6927e2acabcdbf7aaf705dccf3185a 100644
--- a/llama-index-packs/llama-index-packs-multi-tenancy-rag/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-multi-tenancy-rag/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MultiTenancyRAGPack"]
 contains_example = false
 import_path = "llama_index.packs.multi_tenancy_rag"
 
+[tool.llamahub.class_authors]
+MultiTenancyRAGPack = "ravi03071991"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-multidoc-autoretrieval/pyproject.toml b/llama-index-packs/llama-index-packs-multidoc-autoretrieval/pyproject.toml
index 80060133b34e77b1d58c3f957456a1437eaec373..2883df2086d5a58ace756709da95faee7bacf278 100644
--- a/llama-index-packs/llama-index-packs-multidoc-autoretrieval/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-multidoc-autoretrieval/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["MultiDocAutoRetrieverPack"]
 contains_example = false
 import_path = "llama_index.packs.multidoc_autoretrieval"
 
+[tool.llamahub.class_authors]
+MultiDocAutoRetrieverPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-nebulagraph-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-nebulagraph-query-engine/pyproject.toml
index 59c0db4158e5dfd5fe3f98e35e98faf971e69bdd..88e9d600dae8abc8588b2c8bf3eeaa27ff8d6c57 100644
--- a/llama-index-packs/llama-index-packs-nebulagraph-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-nebulagraph-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["NebulaGraphQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.nebulagraph_query_engine"
 
+[tool.llamahub.class_authors]
+NebulaGraphQueryEnginePack = "wenqiglantz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-neo4j-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-neo4j-query-engine/pyproject.toml
index 15de137809271e3fe39202cc23a2c7d7890d60a8..68f919f9b5721c25933deba151a497b777e2d16d 100644
--- a/llama-index-packs/llama-index-packs-neo4j-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-neo4j-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["Neo4jQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.neo4j_query_engine"
 
+[tool.llamahub.class_authors]
+Neo4jQueryEnginePack = "wenqiglantz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-node-parser-semantic-chunking/pyproject.toml b/llama-index-packs/llama-index-packs-node-parser-semantic-chunking/pyproject.toml
index 6b87d742f0e8f1a9f784c126631cb9c89173c9cd..03597061f0d3e452c8a033f40c46506ef0e0f9df 100644
--- a/llama-index-packs/llama-index-packs-node-parser-semantic-chunking/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-node-parser-semantic-chunking/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SemanticChunkingQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.node_parser_semantic_chunking"
 
+[tool.llamahub.class_authors]
+SemanticChunkingQueryEnginePack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-ollama-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-ollama-query-engine/pyproject.toml
index 3f9da7981fc8ab44c80d9e665cbe480103ce47a7..d1ac035f687640dc6706a568d7ff3c4542d87a6f 100644
--- a/llama-index-packs/llama-index-packs-ollama-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-ollama-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["OllamaQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.ollama_query_engine"
 
+[tool.llamahub.class_authors]
+OllamaQueryEnginePack = "chnsagitchen"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-panel-chatbot/pyproject.toml b/llama-index-packs/llama-index-packs-panel-chatbot/pyproject.toml
index 94d089c211795a095b1020497c7fb4e5271cdcf1..9049870d6f9d448b9b0651c6934222a9752a87b8 100644
--- a/llama-index-packs/llama-index-packs-panel-chatbot/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-panel-chatbot/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["PanelChatPack"]
 contains_example = false
 import_path = "llama_index.packs.panel_chatbot"
 
+[tool.llamahub.class_authors]
+PanelChatPack = "MarcSkovMadsen"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-rag-cli-local/pyproject.toml b/llama-index-packs/llama-index-packs-rag-cli-local/pyproject.toml
index 0ea07f6ee79abc129f74649cd2d8c446ca86d861..ff712ede9cfc860f72d4970e5a96ddf29bfbe3e2 100644
--- a/llama-index-packs/llama-index-packs-rag-cli-local/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-rag-cli-local/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["LocalRAGCLIPack"]
 contains_example = false
 import_path = "llama_index.packs.rag_cli_local"
 
+[tool.llamahub.class_authors]
+LocalRAGCLIPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-rag-evaluator/pyproject.toml b/llama-index-packs/llama-index-packs-rag-evaluator/pyproject.toml
index 552cb200302a418033b80385960a230f7225fa8a..6ea5e00f37df82b5ecdb5ffaf9671c76dd6e7629 100644
--- a/llama-index-packs/llama-index-packs-rag-evaluator/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-rag-evaluator/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RagEvaluatorPack"]
 contains_example = true
 import_path = "llama_index.packs.rag_evaluator"
 
+[tool.llamahub.class_authors]
+RagEvaluatorPack = "nerdai"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-rag-fusion-query-pipeline/pyproject.toml b/llama-index-packs/llama-index-packs-rag-fusion-query-pipeline/pyproject.toml
index 24ae39abdc4cd88df93245878bf04ca1366fdb48..d55aa6c79b041d9e75c829768a24d616f3cb94c3 100644
--- a/llama-index-packs/llama-index-packs-rag-fusion-query-pipeline/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-rag-fusion-query-pipeline/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RAGFusionPipelinePack"]
 contains_example = true
 import_path = "llama_index.packs.rag_fusion_query_pipeline"
 
+[tool.llamahub.class_authors]
+RAGFusionPipelinePack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-ragatouille-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-ragatouille-retriever/pyproject.toml
index 4fe2e41129f8a01fee8d7bd373d91672e007f36c..c7525d218881aa9114d6417a9a6e00703cc1a07a 100644
--- a/llama-index-packs/llama-index-packs-ragatouille-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-ragatouille-retriever/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RAGatouilleRetrieverPack"]
 contains_example = false
 import_path = "llama_index.packs.ragatouille_retriever"
 
+[tool.llamahub.class_authors]
+RAGatouilleRetrieverPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-recursive-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-recursive-retriever/pyproject.toml
index e3ce570b7e967f2718718413f9362a6973379022..d859e9be24e7619c878325a85a0270c203cb6b26 100644
--- a/llama-index-packs/llama-index-packs-recursive-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-recursive-retriever/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["EmbeddedTablesUnstructuredRetrieverPack", "RecursiveRetrieverSmallToBigPack"]
 contains_example = false
 import_path = "llama_index.packs.recursive_retriever"
 
+[tool.llamahub.class_authors]
+EmbeddedTablesUnstructuredRetrieverPack = "jerryjliu"
+RecursiveRetrieverSmallToBigPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-redis-ingestion-pipeline/pyproject.toml b/llama-index-packs/llama-index-packs-redis-ingestion-pipeline/pyproject.toml
index 7e84d85431985e8d2a0d063d44cac1d55dccd025..6ad3b9d359dc723e9feef207f330f9bc6d82fbe7 100644
--- a/llama-index-packs/llama-index-packs-redis-ingestion-pipeline/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-redis-ingestion-pipeline/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["RedisIngestionPipelinePack"]
 contains_example = false
 import_path = "llama_index.packs.redis_ingestion_pipeline"
 
+[tool.llamahub.class_authors]
+RedisIngestionPipelinePack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-resume-screener/pyproject.toml b/llama-index-packs/llama-index-packs-resume-screener/pyproject.toml
index c93738145ff6dbebbc078aefbee378b3075aa2df..1437c9ec36f06c0a490f0c4d9793a729c30275ee 100644
--- a/llama-index-packs/llama-index-packs-resume-screener/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-resume-screener/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ResumeScreenerPack"]
 contains_example = false
 import_path = "llama_index.packs.resume_screener"
 
+[tool.llamahub.class_authors]
+ResumeScreenerPack = "Disiok"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-retry-engine-weaviate/pyproject.toml b/llama-index-packs/llama-index-packs-retry-engine-weaviate/pyproject.toml
index 41a3a60373070c7944b3d572906187096fec1f0a..30e2a75b96897c733608210af32aa4b919015204 100644
--- a/llama-index-packs/llama-index-packs-retry-engine-weaviate/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-retry-engine-weaviate/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WeaviateRetryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.retry_engine_weaviate"
 
+[tool.llamahub.class_authors]
+WeaviateRetryEnginePack = "erika-cardenas"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-self-discover/pyproject.toml b/llama-index-packs/llama-index-packs-self-discover/pyproject.toml
index be1dd917f0f47e530ab17d743e5448c0bfea9fb7..db4f1f25381e7dcab67a12537c304034ad0ccfb4 100644
--- a/llama-index-packs/llama-index-packs-self-discover/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-self-discover/pyproject.toml
@@ -5,18 +5,17 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SelfDiscoverPack"]
-contains_example = true
+contains_example = false
 import_path = "llama_index.packs.self_discover"
 
+[tool.llamahub.class_authors]
+SelfDiscoverPack = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -27,7 +26,6 @@ description = "llama-index packs self_discover paper implementation"
 keywords = ["discover", "self", "self-discover", "task"]
 license = "MIT"
 name = "llama-index-packs-self-discover"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -36,8 +34,6 @@ python = ">=3.8.1,<3.12"
 llama-index-core = "^0.10.0"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -51,5 +47,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-packs/llama-index-packs-self-rag/pyproject.toml b/llama-index-packs/llama-index-packs-self-rag/pyproject.toml
index cdcba219cf42439df574dc7eff666e4ad4987bbd..7e0456fe2be5f225ea0f6fc4a1195e61d0eea37a 100644
--- a/llama-index-packs/llama-index-packs-self-rag/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-self-rag/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SelfRAGPack", "SelfRAGQueryEngine"]
 contains_example = false
 import_path = "llama_index.packs.self_rag"
 
+[tool.llamahub.class_authors]
+SelfRAGPack = "mmaatouk"
+SelfRAGQueryEngine = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-sentence-window-retriever/pyproject.toml b/llama-index-packs/llama-index-packs-sentence-window-retriever/pyproject.toml
index 8356a1c9de17c0cc2c25dbcdcdc31a005e0ff1af..228be1116f8be615492a47e6fe1047c2c922c0da 100644
--- a/llama-index-packs/llama-index-packs-sentence-window-retriever/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-sentence-window-retriever/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SentenceWindowRetrieverPack"]
 contains_example = false
 import_path = "llama_index.packs.sentence_window_retriever"
 
+[tool.llamahub.class_authors]
+SentenceWindowRetrieverPack = "jerryjliu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-snowflake-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-snowflake-query-engine/pyproject.toml
index 5b3bfe8781b5506c8ffa9df4bb7ec4096c5b0871..f067b637a7d7e94ee4646cc28c8ab08bec06c342 100644
--- a/llama-index-packs/llama-index-packs-snowflake-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-snowflake-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SnowflakeQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.snowflake_query_engine"
 
+[tool.llamahub.class_authors]
+SnowflakeQueryEnginePack = "wenqiglantz"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-stock-market-data-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-stock-market-data-query-engine/pyproject.toml
index dbebe455898aaeb2b84bbba3941292cb58e40980..d4431211abb3d4e1bdde74481f90c00d0254a477 100644
--- a/llama-index-packs/llama-index-packs-stock-market-data-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-stock-market-data-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["StockMarketDataQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.stock_market_data_query_engine"
 
+[tool.llamahub.class_authors]
+StockMarketDataQueryEnginePack = "anoopshrma"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-streamlit-chatbot/pyproject.toml b/llama-index-packs/llama-index-packs-streamlit-chatbot/pyproject.toml
index 785665cd4d7be939f8d6c56e873a0778995e305b..b10fe6984ad70c9304092b990c141aa5e9866a83 100644
--- a/llama-index-packs/llama-index-packs-streamlit-chatbot/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-streamlit-chatbot/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["StreamlitChatPack"]
 contains_example = false
 import_path = "llama_index.packs.streamlit_chatbot"
 
+[tool.llamahub.class_authors]
+StreamlitChatPack = "carolinedlu"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-sub-question-weaviate/pyproject.toml b/llama-index-packs/llama-index-packs-sub-question-weaviate/pyproject.toml
index 05af56e63294f17b0e564a9e9b9bd7354ee1f2f6..f80fc6192beb08d50f65f8434c89e2984aa0f1a2 100644
--- a/llama-index-packs/llama-index-packs-sub-question-weaviate/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-sub-question-weaviate/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["WeaviateSubQuestionPack"]
 contains_example = false
 import_path = "llama_index.packs.sub_question_weaviate"
 
+[tool.llamahub.class_authors]
+WeaviateSubQuestionPack = "erika-cardenas"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-subdoc-summary/pyproject.toml b/llama-index-packs/llama-index-packs-subdoc-summary/pyproject.toml
index 6b7c25b8691f98aaf8152d0692b2055306803f1b..85bf67a444e4133b1345e0e69845795b9aa26c19 100644
--- a/llama-index-packs/llama-index-packs-subdoc-summary/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-subdoc-summary/pyproject.toml
@@ -5,18 +5,17 @@ requires = ["poetry-core"]
 [tool.codespell]
 check-filenames = true
 check-hidden = true
-# Feel free to un-skip examples, and experimental, you will just need to
-# work through many typos (--write-changes and --interactive will help)
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["SubDocSummaryPack"]
 contains_example = false
 import_path = "llama_index.packs.subdoc_summary"
 
+[tool.llamahub.class_authors]
+SubDocSummaryPack = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
-# Remove venv skip when integrated with pre-commit
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
 ignore_missing_imports = true
 python_version = "3.8"
@@ -26,7 +25,6 @@ authors = ["Your Name <you@example.com>"]
 description = "llama-index packs subdoc-summary implementation"
 license = "MIT"
 name = "llama-index-packs-subdoc-summary"
-packages = [{include = "llama_index/"}]
 readme = "README.md"
 version = "0.1.0"
 
@@ -35,8 +33,6 @@ python = ">=3.8.1,<3.12"
 llama-index-core = "^0.10.0"
 
 [tool.poetry.group.dev.dependencies]
-black = {extras = ["jupyter"], version = "<=23.9.1,>=23.7.0"}
-codespell = {extras = ["toml"], version = ">=v2.2.6"}
 ipython = "8.10.0"
 jupyter = "^1.0.0"
 mypy = "0.991"
@@ -50,5 +46,16 @@ types-Deprecated = ">=0.1.0"
 types-PyYAML = "^6.0.12.12"
 types-protobuf = "^4.24.0.4"
 types-redis = "4.5.5.0"
-types-requests = "2.28.11.8"  # TODO: unpin when mypy>0.991
+types-requests = "2.28.11.8"
 types-setuptools = "67.1.0.0"
+
+[tool.poetry.group.dev.dependencies.black]
+extras = ["jupyter"]
+version = "<=23.9.1,>=23.7.0"
+
+[tool.poetry.group.dev.dependencies.codespell]
+extras = ["toml"]
+version = ">=v2.2.6"
+
+[[tool.poetry.packages]]
+include = "llama_index/"
diff --git a/llama-index-packs/llama-index-packs-tables/pyproject.toml b/llama-index-packs/llama-index-packs-tables/pyproject.toml
index 6cffb85b0ec15b997443bcada04038163eb62744..e8c9c6562de07e67061d622d715ad9fa2d5cc128 100644
--- a/llama-index-packs/llama-index-packs-tables/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-tables/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ChainOfTablePack", "MixSelfConsistencyPack"]
 contains_example = false
 import_path = "llama_index.packs.tables"
 
+[tool.llamahub.class_authors]
+ChainOfTablePack = "jerryjliu"
+MixSelfConsistencyPack = "Disiok"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-timescale-vector-autoretrieval/pyproject.toml b/llama-index-packs/llama-index-packs-timescale-vector-autoretrieval/pyproject.toml
index 43307e1f835bbca80cafb854be1d33d6fe0dc194..9d7f6ca2378f84f32cd044bb2b7c2e4bfb0cd118 100644
--- a/llama-index-packs/llama-index-packs-timescale-vector-autoretrieval/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-timescale-vector-autoretrieval/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TimescaleVectorAutoretrievalPack"]
 contains_example = false
 import_path = "llama_index.packs.timescale_vector_autoretrieval"
 
+[tool.llamahub.class_authors]
+TimescaleVectorAutoretrievalPack = "cevian"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-trulens-eval-packs/pyproject.toml b/llama-index-packs/llama-index-packs-trulens-eval-packs/pyproject.toml
index dac0e675d75ea96999644acf88974d3cbb76c997..8fc5ad3164228a7c6166ef6dcb81a02a66b90fda 100644
--- a/llama-index-packs/llama-index-packs-trulens-eval-packs/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-trulens-eval-packs/pyproject.toml
@@ -8,10 +8,14 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["TruLensHarmlessPack", "TruLensHelpfulPack", "TruLensRAGTriadPack"]
 contains_example = false
 import_path = "llama_index.packs.trulens_eval_packs"
 
+[tool.llamahub.class_authors]
+TruLensHarmlessPack = "joshreini1"
+TruLensHelpfulPack = "joshreini1"
+TruLensRAGTriadPack = "joshreini1"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-vanna/pyproject.toml b/llama-index-packs/llama-index-packs-vanna/pyproject.toml
index ac49cb9f44df6a92235f530efd1436af55d859a7..5a18b392a0d9aae2b795fcaff908a087e5012106 100644
--- a/llama-index-packs/llama-index-packs-vanna/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-vanna/pyproject.toml
@@ -8,10 +8,13 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["VannaPack", "VannaQueryEngine"]
 contains_example = false
 import_path = "llama_index.packs.vanna"
 
+[tool.llamahub.class_authors]
+VannaPack = "jerryjliu"
+VannaQueryEngine = "llama-index"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-vectara-rag/pyproject.toml b/llama-index-packs/llama-index-packs-vectara-rag/pyproject.toml
index 5e25f1a6b633fe7faf3a265a34181b3596fec3be..63ce5550e01177317e27cc112c06f366ee1f1526 100644
--- a/llama-index-packs/llama-index-packs-vectara-rag/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-vectara-rag/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["VectaraRagPack"]
 contains_example = false
 import_path = "llama_index.packs.vectara_rag"
 
+[tool.llamahub.class_authors]
+VectaraRagPack = "ofermend"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-voyage-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-voyage-query-engine/pyproject.toml
index d8f59b79a783c62fd733a5f6782bcf2ace01742d..139f2535ad4bf8876afbf472eb16eef6875f8564 100644
--- a/llama-index-packs/llama-index-packs-voyage-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-voyage-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["VoyageQueryEnginePack"]
 contains_example = true
 import_path = "llama_index.packs.voyage_query_engine"
 
+[tool.llamahub.class_authors]
+VoyageQueryEnginePack = "Liuhong99"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]
diff --git a/llama-index-packs/llama-index-packs-zephyr-query-engine/pyproject.toml b/llama-index-packs/llama-index-packs-zephyr-query-engine/pyproject.toml
index e942c4ab337b36eb9f07904c030608197fd5e8c0..a93ff74239423abe9853a87f0c2e3de68b80c942 100644
--- a/llama-index-packs/llama-index-packs-zephyr-query-engine/pyproject.toml
+++ b/llama-index-packs/llama-index-packs-zephyr-query-engine/pyproject.toml
@@ -8,10 +8,12 @@ check-hidden = true
 skip = "*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb"
 
 [tool.llamahub]
-classes = ["ZephyrQueryEnginePack"]
 contains_example = false
 import_path = "llama_index.packs.zephyr_query_engine"
 
+[tool.llamahub.class_authors]
+ZephyrQueryEnginePack = "logan-markewich"
+
 [tool.mypy]
 disallow_untyped_defs = true
 exclude = ["_static", "build", "examples", "notebooks", "venv"]