Skip to content

Publishing Extensions

You’ve built a tool that calls your company’s internal API. Or a model provider for a regional LLM service. Or a session manager that persists to Redis. It works great for your project—now you want to share it with others.

This guide walks you through packaging and publishing your Strands components so other developers can install them with pip install.

When you build a useful component, you have two choices: keep it in your project, or publish it as a package.

Publishing makes sense when your component solves a problem others face too. A Slack integration, a database session manager, a provider for a popular LLM service—these help the broader community. Publishing also means you own the package. You control when to release updates, what features to add, and how to prioritize bugs.

Your package can get listed in our community catalog, making it discoverable to developers looking for exactly what you built.

Strands has several extension points. Each serves a different purpose in the agent lifecycle.

ComponentPurposeLearn more
ToolsAdd capabilities to agents—call APIs, access databases, interact with servicesCustom tools
Model providersIntegrate LLM APIs beyond the built-in providersCustom model providers
Hook providersExtend or modify agent behavior during lifecycle events such as invocations, tool calls, and model callsHooks
Session managersPersist conversations to external storage for resumption or sharingSession management
Conversation managersControl how message history grows—trim old messages or summarize contextConversation management

Tools are the most common extension type. They let agents interact with specific services like Slack, databases, or internal APIs.

Once you publish, the next step is getting other developers to discover and use your package. See the Get Featured guide for how to add GitHub topics and get listed in our community catalog.