From 86ede2a980013177773774b0b0f3ec23391f3986 Mon Sep 17 00:00:00 2001
From: Andrei Fajardo <92402603+nerdai@users.noreply.github.com>
Date: Mon, 19 Feb 2024 19:10:47 -0500
Subject: [PATCH] Revise tool.llamahub data in pyproject.toml (#10996)

---
 .../pyproject.toml                            |  7 +++++-
 .../llama-index-agent-openai/pyproject.toml   |  6 ++++-
 .../llama-index-callbacks-aim/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  9 +++----
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  7 ++++++
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  7 +++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  7 +++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            | 10 +++++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            | 24 ++++++++++++------
 .../pyproject.toml                            |  6 ++++-
 .../pyproject.toml                            |  5 +++-
 .../llms/llama-index-llms-ai21/pyproject.toml |  4 ++-
 .../llama-index-llms-anthropic/pyproject.toml |  4 ++-
 .../llama-index-llms-anyscale/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../llama-index-llms-bedrock/pyproject.toml   |  6 ++++-
 .../llama-index-llms-clarifai/pyproject.toml  |  4 ++-
 .../llama-index-llms-cohere/pyproject.toml    |  4 ++-
 .../llama-index-llms-dashscope/pyproject.toml |  5 +++-
 .../llama-index-llms-everlyai/pyproject.toml  |  4 ++-
 .../llama-index-llms-gemini/pyproject.toml    |  4 ++-
 .../llama-index-llms-gradient/pyproject.toml  |  5 +++-
 .../pyproject.toml                            |  5 +++-
 .../llama-index-llms-konko/pyproject.toml     |  4 ++-
 .../llama-index-llms-langchain/pyproject.toml |  4 ++-
 .../llama-index-llms-litellm/pyproject.toml   |  4 ++-
 .../llama-index-llms-llama-api/pyproject.toml |  4 ++-
 .../llama-index-llms-llama-cpp/pyproject.toml |  4 ++-
 .../llama-index-llms-localai/pyproject.toml   |  4 ++-
 .../llama-index-llms-mistralai/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-llms-mymagic/pyproject.toml   | 23 +++++++++++------
 .../llama-index-llms-neutrino/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-llms-ollama/pyproject.toml    |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-llms-openai/pyproject.toml    |  7 +++++-
 .../llama-index-llms-openllm/pyproject.toml   |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../llms/llama-index-llms-palm/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-llms-portkey/pyproject.toml   |  4 ++-
 .../llama-index-llms-predibase/pyproject.toml |  4 ++-
 .../llama-index-llms-replicate/pyproject.toml |  4 ++-
 .../llama-index-llms-rungpt/pyproject.toml    |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-llms-together/pyproject.toml  |  4 ++-
 .../llama-index-llms-vertex/pyproject.toml    |  4 ++-
 .../llms/llama-index-llms-vllm/pyproject.toml |  5 +++-
 .../llama-index-llms-watsonx/pyproject.toml   |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            | 23 +++++++++++------
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-program-openai/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-apify/pyproject.toml  |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-asana/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-athena/pyproject.toml |  4 ++-
 .../llama-index-readers-awadb/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-bagel/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-chroma/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  9 +++++++
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-faiss/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-file/pyproject.toml   | 24 +++++++++++++++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-genius/pyproject.toml |  4 ++-
 .../llama-index-readers-github/pyproject.toml |  6 ++++-
 .../llama-index-readers-google/pyproject.toml |  9 ++++++-
 .../pyproject.toml                            |  7 +++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-guru/pyproject.toml   |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-hive/pyproject.toml   |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-hwp/pyproject.toml    |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-jaguar/pyproject.toml |  4 ++-
 .../llama-index-readers-jira/pyproject.toml   |  4 ++-
 .../llama-index-readers-joplin/pyproject.toml |  5 +++-
 .../llama-index-readers-json/pyproject.toml   |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-kibela/pyproject.toml |  4 ++-
 .../llama-index-readers-lilac/pyproject.toml  |  4 ++-
 .../llama-index-readers-linear/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-maps/pyproject.toml   |  4 ++-
 .../llama-index-readers-mbox/pyproject.toml   |  4 ++-
 .../llama-index-readers-memos/pyproject.toml  |  4 ++-
 .../llama-index-readers-metal/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-milvus/pyproject.toml |  4 ++-
 .../llama-index-readers-minio/pyproject.toml  |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../llama-index-readers-notion/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  7 +++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-papers/pyproject.toml |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-pdb/pyproject.toml    |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-qdrant/pyproject.toml |  4 ++-
 .../llama-index-readers-rayyan/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-reddit/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-remote/pyproject.toml |  4 ++-
 .../llama-index-readers-s3/pyproject.toml     |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-slack/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-trello/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-txtai/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-web/pyproject.toml    | 16 +++++++++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-readers-zep/pyproject.toml    |  4 ++-
 .../llama-index-readers-zulip/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-retrievers-you/pyproject.toml |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-tools-arxiv/pyproject.toml    |  4 ++-
 .../llama-index-tools-azure-cv/pyproject.toml |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-tools-database/pyproject.toml |  4 ++-
 .../llama-index-tools-exa/pyproject.toml      |  4 ++-
 .../llama-index-tools-google/pyproject.toml   |  7 +++++-
 .../llama-index-tools-graphql/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-tools-metaphor/pyproject.toml |  4 ++-
 .../llama-index-tools-multion/pyproject.toml  |  4 ++-
 .../llama-index-tools-neo4j/pyproject.toml    |  4 ++-
 .../llama-index-tools-notion/pyproject.toml   |  4 ++-
 .../llama-index-tools-openai/pyproject.toml   |  4 ++-
 .../llama-index-tools-openapi/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-tools-requests/pyproject.toml |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../llama-index-tools-shopify/pyproject.toml  |  4 ++-
 .../llama-index-tools-slack/pyproject.toml    |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../llama-index-tools-waii/pyproject.toml     |  4 ++-
 .../llama-index-tools-weather/pyproject.toml  |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            | 22 +++++++++++++---
 .../llama-index-tools-yelp/pyproject.toml     |  4 ++-
 .../llama-index-tools-zapier/pyproject.toml   |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  7 +++++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  7 ++++++
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            | 25 ++++++++++++-------
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  8 ++++++
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            | 25 ++++++++++++-------
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            | 25 ++++++++++++-------
 .../llama-index-packs-self-rag/pyproject.toml |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            | 23 +++++++++++------
 .../llama-index-packs-tables/pyproject.toml   |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  6 ++++-
 .../llama-index-packs-vanna/pyproject.toml    |  5 +++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 .../pyproject.toml                            |  4 ++-
 394 files changed, 1424 insertions(+), 449 deletions(-)

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 911283c403..65e1237c52 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 fec0867b55..6cf6447781 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 47e9c60496..c3e6bc2174 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 8cbbd708a5..359d03c2b1 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 1210ae92cd..37ca25e2d0 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 76201455be..f10f74f3c7 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 c7523f4770..80bc5aeb85 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 697fe0efc5..5aba029073 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 393928b3c2..aa8a519772 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 5cd3d191cc..407ddee252 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 0a51f0a090..afeb43494a 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 c3c2fc05ac..a3f7899c33 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 41d8d4d151..db1bc9cec0 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 a5d5878ef3..53f273eb8e 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 d96ab0f2cc..03f854b9e2 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 2fab3abe92..09ecc97c8e 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 ecf023bef4..cc10dec766 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 7a0b92bfc9..90a4e17bfd 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 b835af46d4..b5ec83e240 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 8366484b74..1c80754cd7 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 b0c93d8c15..0e8f85c1ba 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 dbd9ddf301..5ad535fa2d 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 7e4cc41c90..e12ce622fd 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 18a5b560ff..b939326567 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 608226b7e3..4db881029b 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 8c007e8729..62a9f739d2 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 132a57777d..0a34da1581 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 78a40a5eba..e1e99c19c9 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 c66215aa79..44e94848a0 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 c719d52151..c15eceeb49 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 f4d36d13e2..cccdb84cbb 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 c5709b3cc2..47523a8fea 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 417560b07b..3dbaf5b6a8 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 38bfbe0362..bab5fc085e 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 08ba1c2c5b..c4277768e8 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 fb031b31d3..5e8a943dfb 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 b10681331b..0a9729a3fd 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 a73babfca1..027e33b0ff 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 3b91d206bd..b6778c0796 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 bde6a0c078..fa37deefb8 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 f6e2999c9d..52402eada5 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 0c2ed4a88b..9b7169ba40 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 5c7c58bfd0..1f46f63f96 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 b22a1ab6a0..0161da0c37 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 2ff2348c05..bad604357d 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 eddf4fc426..802b609a59 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 47bbb7279a..092ff703e8 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 d4ddb81313..421fad5472 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 4480ac24e9..b2130a3e12 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 beff068649..1efae3b873 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 f6d75a9c22..0d83f30175 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 99242d4b31..8325f3179f 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 687c3be554..247b562178 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 b3151bcf46..825ebed3fb 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 ddbc8bc222..5d7dd83b57 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 7b8804917b..43169f4d58 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 3ed1662c65..802aa04915 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 64c3118edf..4f7c6a45d6 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 b25347a726..30abaeaa56 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 5205c93513..12274634dd 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 81acbf8f66..0ae86f7c92 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 195369811a..4c78602579 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 726ab6b412..74dbe95d92 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 69768d121a..17a1ce1674 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 fec49c9e66..002497349c 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 11453a5f27..4130bc62b5 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 c475607098..d262b74498 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 a20b456855..46936d8474 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 f293c4eed4..cc7dee54c2 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 27ed28aeae..ec86ce2322 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 ec7838ec77..ca9b5679a7 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 d268fa1af5..568fa1ea32 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 8620cd2ef1..7e8fbab4b9 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 149181c01e..b16e58461d 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 dc714af138..5f79d09686 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 ca6cd0228e..66eb5efc5e 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 a73ec5a710..9894b271dc 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 a848cde96f..f37a9faea0 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 5828017e6f..1c65b99d7c 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 288926a8e9..c562157cd3 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 e0a7597cab..6c46a1d77c 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 8a15c57a9d..7156f586e8 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 6dd781d68e..b6f637173d 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 c84a363dc4..b4b93233e2 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 642f215f4c..81c22efb3a 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 8eef658179..f4d21925a3 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 1a0ea504bd..51b99268ed 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 bdc5238c17..5431f90f5c 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 3e08676380..792638191c 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 afe8e0879b..1bbdcd2fff 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 8474c5e8ba..1513e8541d 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 a54fa5a9ee..63fa01569b 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 c652e573a2..85d97baf3b 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 3317f2c7b3..2a354af0a1 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 d7d28e5ba8..957a453e66 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 208a6b20d3..0e344ece39 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 b6c40702b3..8e38a9eafe 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 3fc38d96c1..73c60c0310 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 fa5333cb08..3159eaacf3 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 b22d12638a..8bb62c0a80 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 6cb688f523..68c0c0a6bd 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 4427bf30fa..4ca556a5b2 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 9f64506a36..530f958e53 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 84bfeef1b4..f4c46c8452 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 6eff45fc3b..0a64592833 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 f75f932e6e..ae08e58c77 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 0d5c79c5f0..effd0d2769 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 e8eab0dc7a..9b89670de8 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 9cd4c8ecc8..3d1091e4a8 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 88d5127ee6..5937538dfc 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 b073ad3039..0cd8a5e82c 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 f51fba175f..d4bfb1e36b 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 c08dcf013b..2c18542f4c 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 361516e9bd..74c8ac5960 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 1331402917..2c9926a0ae 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 3f43f53c3b..47ac0c00e6 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 c5c53ddee8..f4ec94378c 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 462ed15183..a08de76e8a 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 c7b04369ba..eb3701fa24 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 37ecf03b1f..5402e7d4f8 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 4dc51fdab8..887f0c7ede 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 d0940815ba..bd7f875982 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 12369aeede..0b4f440f86 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 6b01018287..f5525e1929 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 1f2c58a8ed..0ad7633c24 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 ca48b874ee..2f4318e471 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 3245e15b86..be3efa89c3 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 7444304051..ad913df7f7 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 d945a5577d..10819b51ec 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 4b05532a02..c0d9185892 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 d212f8c49d..c842b265c9 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 d3364c9977..7604fac3e0 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 8d09147a74..73f3a3875b 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 6cf644c74b..e6bbc70d77 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 a65f13937d..16277a1afa 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 3f2ec978bc..260e2b2156 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 51868f3cbf..a45b036caa 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 db0a46bc6a..3841b10f36 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 82469f45a9..f1373c6e3e 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 3520d7fa27..e223c51500 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 495c38820b..da1a93b5f4 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 2c560b46ea..f26298cf68 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 18eb4bc12f..852c006ff7 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 a5fdda273f..7b880d93f8 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 2dbf69dada..e9fb902a25 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 e21d12ae88..a203f0d6d2 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 d209241ac2..5fd07bcb32 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 6cff99c705..c5bdd4c7e9 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 9cfa60e17d..288e3b2bad 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 8ecf97eb58..a36cfd1d8f 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 a1947d76e7..16e72a9334 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 9b8144ccd1..64611ff3f0 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 baabbdb888..f1b9a98d3b 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 ef841d2af0..ab043530e0 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 03bdabae9e..60873a5ab1 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 2474245032..e18497cf68 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 8cc407bfcb..c316474ce4 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 e1a9576806..e4071e500e 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 5dbc71eabb..1ff80906df 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 c3cde1866a..386ec6f72a 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 c048ae75bb..8f4ea9fb0d 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 d03ea52962..4ac46ee2d2 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 9e3c159042..17059f3a86 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 d52c538c24..755cfbb86a 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 2b5e659e8b..5c0ecb217b 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 6ea3c82e30..d1bc38418d 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 35ece98233..b3b0224c86 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 c381ded7e0..7ba664b770 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 a4205a5d3a..606f499055 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 fed0451e75..3cb5594806 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 ca494af728..7ee9adcaf8 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 df89b882eb..336348187c 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 599f6481ea..1d9f74588b 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 3a478f8a93..254d4e7e90 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 167778265f..20c81d7bd4 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 af4316de53..59e811959c 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 fa86299471..2d2b2ceba4 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 baaaf6e1dd..15502e4823 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 7fbae388d8..a1dbcbb568 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 287e2faa7c..e51071d531 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 1f411b7836..38e5fabbee 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 60c2516f03..c37d8c7619 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 18ce6ec729..66fdde2468 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 1eb2997495..c932b86b6d 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 d27dc91397..df7be79aeb 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 888b7c98e0..3626eab3ef 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 11d582b27d..8f85db6d78 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 6e1ac455a3..7cfca12754 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 9cd8f62873..1aece0840a 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 80f7c1564e..b8bb69ccd2 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 75910e2767..1cdd40dbb0 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 906a708066..6640d97aa2 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 3486732d7d..0bbc1f0fca 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 01debcc674..a9e6dfeb90 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 0e002486aa..9777a7baf9 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 80bfd5ca21..8fcd0d66f8 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 e49529a7e5..cd4019052b 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 5a6a1a9b0f..44cf83cd84 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 fc7a542060..ae89ab8123 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 f82edcae71..234d1cc243 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 97ab32367a..2f282d972a 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 22cee84d4a..00cf11a171 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 0d77c27b6a..39524e5e13 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 c2456fe493..3776507ee5 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 ec06937b8f..78f3a4a94f 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 2c06b0b8ab..92d0534f99 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 453cd44fa4..8c15d3d7fe 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 01c60fec85..79a6329e41 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 94660f80e3..a5b65128af 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 5fa835e55e..8a764a4cc2 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 17596e4afe..d0fe33d6d9 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 d5936a44a8..8ce058fa7a 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 02475b4e4f..5fdf4423d2 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 3ec2b73139..ff392a928b 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 d284c93bc2..f737f6f65d 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 45e0a8006e..748660a442 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 6a358c84fb..85bf9581d7 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 7704ffefcc..31a138b9e6 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 fabb37e55f..1eb41419eb 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 6f9cd9b118..2a614b88ef 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 4b78828136..cacfdcfbea 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 1a596dbc0b..1360f368f7 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 5a4d41d851..ba8f043cd5 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 8dca1aff4b..36d2970c86 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 d2c1f0d6de..76121558c9 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 1c38870bd5..7842b090c9 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 9dd0df5540..2faecebf74 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 14feb2ff50..29822ce68d 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 28ab06298b..6ea28bdfdc 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 711f942e62..9b1d3a878b 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 df7b8a165d..979cc73e16 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 2842af2755..ba16f7dabd 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 a7a92eb30f..9f7c337f2d 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 703e61b83a..ee31430df7 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 549cde8695..cf729bfab1 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 779675dacf..446735f21c 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 896b9fc277..231224e108 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 365118486a..f99b673701 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 b8e8458713..07e5292eb1 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 8598d7603c..8d6a149d3f 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 ced8df1a16..c31578d2d1 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 9b31ea1f16..1e0b6e27bd 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 18c7579f9a..ff6f0ea029 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 64ff112484..8337744c23 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 0706f51c05..f9bba7a3e6 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 be8ae1c24c..2fcbedeaa0 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 fd053d45a4..49abfeec26 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 197ba86227..f9dd4a626c 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 0c2a38ad04..3d5769e743 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 b07de9bc1d..21220592ea 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 dc87884c4b..aeb38f0557 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 d4239e22f2..691e46e12c 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 2df0180cd8..1bb866d265 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 e570488118..2af09f5b3e 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 a4f079cdf5..8a0696620f 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 98ed69e407..038d5e3e7a 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 84885d4f70..6b72d3e22a 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 e5e08584d8..1f481aed1a 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 34c633576e..4a1b0faf55 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 a5099c2281..a9ebfa6a70 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 8033c338b2..0d8cbb2b8f 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 6adb76d163..e6bda3e7df 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 204b777c9f..23448bc9ca 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 98a849fefc..7e3e6cad51 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 f17f24a3ec..b075a10688 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 7d4aaea01c..807073cd7b 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 6502d7231a..2e7d2c4667 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 b9f202005d..db00e83ee9 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 1a1f4d09cb..04d944631e 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 26aa11645c..cca1eb97de 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 163c8ca879..90a8a83da5 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 33c2baf429..e9d70d3c4c 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 ee4f13ef27..474191a334 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 30ec02b8e8..b8886238d8 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 b5a7c511aa..1ff733f769 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 bf2b2622b4..50150b9e9c 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 2841043b51..18c600a3ce 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 ab1cfb5a39..1c71f5c383 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 583514512c..1ad332255a 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 820796d60a..73f33d841f 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 671df4d15c..d76dfaa2c2 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 578d90c9dd..b8f86907d7 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 1ce1469fc8..58b1e747fa 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 abc58adb42..e36ac253b2 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 f33fed7eda..fef3a43cc2 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 abd7098925..3c0170879d 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 b5dca1445d..4ff7b16407 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 8ff003b4f1..b14cff6487 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 024f3b6715..7ea1bede38 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 b647d965ee..0ed195a33a 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 b939a09c2e..6e2bced594 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 deb5f0a90e..5f2912792a 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 1cfe59ab14..a0fcb0d3ab 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 746fff567a..1f609fcf19 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 090acb1d7f..975b678d84 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 059e51c748..df33d73c8d 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 e007c5d4b1..869b80a06f 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 68958994b1..6f5abe470c 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 dc6fe86968..2a47bd758a 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 ab20365ef2..360fef5258 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 15a2d3e845..c9b18bcbf2 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 d67e58f397..7477b363ab 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 4e951ded03..aa917b647c 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 17f1733a8c..d231833ec3 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 85904ea988..94093ae3f0 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 c1588e7e94..26782cefb1 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 58c36ebef2..30f01554b5 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 43fc6290c8..1fb1f1cb22 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 f3c79181ef..dd6c8a8455 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 c4a7aa11eb..a488545708 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 1cae4f58cc..50a7a982b4 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 0a4c52e95f..36fd194d4a 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 d9765258b5..2cd10dcc4c 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 76424b7f7e..b60cf16058 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 6cd302eeb3..85e6af35d0 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 07cfdff7fb..f379b8f032 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 755fa0ce0f..16f43be73c 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 683e2da873..0ebd8c28b5 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 8fdaeec2d3..898b647263 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 0a9b95f7f3..27138447e6 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 3db1d2e45c..6999642492 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 46024c4a58..24d4c0234c 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 de01ba5aae..f9ed57ec00 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 85d8c243cb..9873cf9f92 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 4f7ad8d681..a97f93cd0a 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 758666af08..f6234fc472 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 eaac7fe721..81016f48a8 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 71f772d2d5..5ad7d42256 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 19a0deeeae..bcd4af562f 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 ebf87539a1..841c98618a 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 7d407dbcdb..66d2b1ef6c 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 f5e47fa60c..ade3f98c10 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 1b6052fd6c..999785e3fc 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 e804532736..350d9930a2 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 7073036150..ae6a08d3e1 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 f796d9f3e5..30d4dbd185 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 33e973300c..421766cf8c 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 5268d72321..0003d3db5d 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 af764c269f..095688e9ec 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 7b7e8bc8e9..2922390306 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 d0861a9bee..f939dc42f2 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 c554ecbfac..81d1d7a387 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 abca133f0a..4adbfffc6c 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 dfb4c9051e..632ccda518 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 f5aefa2aa7..f75ea33069 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 0b021cedbc..a377d8c9ce 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 5ed7a2dbd2..3071b71ab2 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 3d00dd3d03..6dd79c9a0a 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 6393b70503..1f4f7a9aca 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 da27bb775c..41884a8c86 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 6d6eb870e3..8a32d90d8b 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 9cb4e5612f..99c6632886 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 55aa02097b..e29d35520d 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 151637e8ba..2274c7dde2 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 c8ae962c1a..706ba17197 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 9904309510..f58be8a424 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 4b4c5ed5c7..d136a78d54 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 fd06c1df43..7eee80230e 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 7b91155c07..ed32656f7d 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 c0bc1e68f1..9ad69b5dc2 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 49bc31ad45..5e0fc52385 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 1c59357101..6730547adf 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 caaec55e7c..2cc57080e9 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 88c2d8faae..c2303d9e63 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 1aa280776a..24e6ef979a 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 80060133b3..2883df2086 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 59c0db4158..88e9d600da 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 15de137809..68f919f9b5 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 6b87d742f0..03597061f0 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 3f9da7981f..d1ac035f68 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 94d089c211..9049870d6f 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 0ea07f6ee7..ff712ede9c 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 552cb20030..6ea5e00f37 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 24ae39abdc..d55aa6c79b 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 4fe2e41129..c7525d2188 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 e3ce570b7e..d859e9be24 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 7e84d85431..6ad3b9d359 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 c93738145f..1437c9ec36 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 41a3a60373..30e2a75b96 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 be1dd917f0..db4f1f2538 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 cdcba219cf..7e0456fe2b 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 8356a1c9de..228be1116f 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 5b3bfe8781..f067b637a7 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 dbebe45589..d4431211ab 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 785665cd4d..b10fe6984a 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 05af56e632..f80fc6192b 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 6b7c25b869..85bf67a444 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 6cffb85b0e..e8c9c6562d 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 43307e1f83..9d7f6ca237 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 dac0e675d7..8fc5ad3164 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 ac49cb9f44..5a18b392a0 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 5e25f1a6b6..63ce5550e0 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 d8f59b79a7..139f2535ad 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 e942c4ab33..a93ff74239 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"]
-- 
GitLab