Toolkit versioning

Pin specific tool versions for consistent behavior in production

Toolkit versioning ensures your tools behave consistently across deployments. You can pin specific versions in production, test new releases in development, and roll back when needed.

Starting from Python SDK v0.9.0 and TypeScript SDK v0.2.0, specifying versions is required for manual tool execution.

Configuration methods

Configure toolkit versions using one of three methods:

SDK initialization

1from composio import Composio
2
3# Pin specific versions for each toolkit
4composio = Composio(
5 api_key="YOUR_API_KEY",
6 toolkit_versions={
7 "github": "20251027_00",
8 "slack": "20251027_00",
9 "gmail": "20251027_00"
10 }
11)

Environment variables

$# Set versions for specific toolkits
>export COMPOSIO_TOOLKIT_VERSION_GITHUB="20251027_00"
>export COMPOSIO_TOOLKIT_VERSION_SLACK="20251027_00"
>export COMPOSIO_TOOLKIT_VERSION_GMAIL="20251027_00"

Per-execution override

1from composio import Composio
2
3composio = Composio(api_key="YOUR_API_KEY")
4
5# Specify version directly in execute call
6result = composio.tools.execute(
7 "GITHUB_LIST_STARGAZERS",
8 arguments={
9 "owner": "ComposioHQ",
10 "repo": "composio"
11 },
12 user_id="user-k7334",
13 version="20251027_00" # Override version for this execution
14)
15print(result)

Version format

Versions follow the format YYYYMMDD_NN:

  • YYYYMMDD: Release date
  • NN: Sequential release number
1# Production
2toolkit_versions = {"github": "20251027_00"}
3
4# Development
5toolkit_versions = {"github": "latest"}

Never use latest in production. It can introduce breaking changes.

Version resolution order

  1. Per-execution version (highest priority)
  2. SDK initialization version
  3. Environment variable (toolkit-specific)

Managing versions

Check available versions using:

1# Get toolkit information including available versions
2toolkit = composio.toolkits.get(slug="github")
3
4# Extract and print version information
5print(f"Toolkit: {toolkit.name}")
6print(f"Current Version: {toolkit.meta.version}")
7print(f"Available Versions: {toolkit.meta.available_versions}")