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.

Why publish

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.

What you can publish

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

Component Purpose Learn more
Tools Add capabilities to agents—call APIs, access databases, interact with services Custom tools
Model providers Integrate LLM APIs beyond the built-in providers Custom model providers
Hook providers Extend or modify agent behavior during lifecycle events such as invocations, tool calls, and model calls Hooks
Session managers Persist conversations to external storage for resumption or sharing Session management
Conversation managers Control how message history grows—trim old messages or summarize context Conversation management

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

Get discovered

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.