langchain-ai/deepagents · error · MarketplaceError
Marketplace URL {_redact_url_credentials(url)} contains plug
Error message
Marketplace URL {_redact_url_credentials(url)} contains plugins with unsupported remote sources: [{names}] What it means
URL-based marketplaces only download the catalog JSON file, so every plugin in the catalog must be fetchable remotely. If any plugin in a URL marketplace uses a source type that requires the marketplace's sibling filesystem tree (a remote-unsupported source), the library rejects the whole marketplace and lists the offending plugin names.
Source
Thrown at libs/code/deepagents_code/plugins/marketplace.py:469
local_plugins = [
plugin.name
for plugin in marketplace.plugins
if _source_path(plugin.source) is not None
]
if not local_plugins:
unsupported = [
plugin.name
for plugin in marketplace.plugins
if _plugin_repository_source(plugin) is None
]
if not unsupported:
return
names = ", ".join(sorted(unsupported))
msg = (
f"Marketplace URL {_redact_url_credentials(url)} contains plugins "
f"with unsupported remote sources: [{names}]"
)
raise MarketplaceError(msg)
names = ", ".join(sorted(local_plugins))
msg = (
f"Marketplace URL {_redact_url_credentials(url)} only downloads the "
f"catalog JSON, but plugins [{names}] use local relative sources. "
"Use a git repository or local directory for this marketplace."
)
raise MarketplaceError(msg)
def load_marketplace_location(path: Path) -> PluginMarketplace:
"""Load a marketplace from either a cached directory or JSON file.
Args:
path: Directory or marketplace JSON path.
Returns:
Parsed marketplace.
"""View on GitHub (pinned to a1af029e6e)
Solutions
- Publish the marketplace as a git repository and register it with a git/github source instead of a URL
- Convert the offending plugins to remotely fetchable sources (e.g. their own git URLs)
- Remove the unsupported plugins from the URL catalog
Example fix
// before
add_marketplace_source("https://example.com/catalog.json") # contains plugin with local-relative source
// after
add_marketplace_source("git", RepositoryMarketplaceSource(source_type="git", value="https://github.com/org/catalog.git")) Defensive patterns
Strategy: validation
Validate before calling
unsupported = {
p.name for p in catalog["plugins"]
if p.get("source", {}).get("type") not in ("git", "github", "url")
}
if unsupported:
raise ValueError(f"plugins need a repo marketplace: {sorted(unsupported)}") Try / catch
try:
marketplace, path = materialize_marketplace_source(source)
except MarketplaceError as exc:
if "unsupported remote sources" in str(exc):
log.error("Convert listed plugins to remote sources or host marketplace as a git repo")
raise Prevention
- Audit catalog plugin sources before serving it as a bare URL
- Publish marketplaces as git repositories when plugins have repo-relative sources
- Keep plugin sources remotely fetchable in URL-hosted catalogs
When it happens
Trigger: materialize_marketplace_source with a URL source calls _reject_url_marketplace_with_local_plugins, which scans the catalog and finds plugins whose sources cannot be resolved from a single downloaded JSON file.
Common situations: A catalog designed for a git repository clone being served as a bare JSON URL; plugins referencing sibling directories or repo-relative paths; mixing source kinds in one marketplace.
Related errors
- Unsupported marketplace source type: {source.source_type}
- Marketplace URL {_redact_url_credentials(url)} only download
- {what} must be absolute: {path}
- Home directory is not absolute: {launch_home}. Set $HOME to
- Invalid {SERVER_ENV_PREFIX}ALLOW_FS_TOOLS value: unknown fil
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/fe45cd30f6f3e782.
Report an issue: GitHub.