composio

Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.

29,661 stars TypeScript Markdown Skills API Spec #agentic-ai#agents#ai#ai-agents
AI Prompts & Specs

Repository: ComposioHQ/composio


Stars: 27813

CLAUDE.md

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Overview

This is the Composio SDK v3 repository containing both TypeScript and Python SDKs. The main development focus is on the TypeScript SDK located in /ts/ directory. The project uses a monorepo structure with multiple packages and examples.

Memories and Notes

- For documentation tasks, refer to docs/CLAUDE.md

Effect.ts Reference Source

The CLI package (@composio/cli) is built on the Effect.ts ecosystem. A local copy of the Effect source code is available as a git submodule:

- Location: ts/vendor/effect/
- Repo: Effect-TS/effect
- Branch: main

When working on CLI code, reference the Effect source for accurate patterns:
- ts/vendor/effect/packages/effect/src/ β€” core Effect runtime
- ts/vendor/effect/packages/cli/src/ β€” @effect/cli (Command, Options, Args)
- ts/vendor/effect/packages/platform/src/ β€” @effect/platform (FileSystem, Terminal)

Important: The submodule is for read-only reference only. Do not modify files in ts/vendor/. The CLI's actual dependencies come from npm via pnpm install.

Clack Reference Source

The CLI uses @clack/prompts for interactive terminal UI. A local copy of the Clack source code is available as a git submodule:

- Location: ts/vendor/clack/
- Repo: bombshell-dev/clack

When working on CLI prompts and terminal UI, reference the Clack source for accurate APIs:
- ts/vendor/clack/packages/prompts/src/ β€” @clack/prompts (high-level API: text, select, confirm, spinner, etc.)
- ts/vendor/clack/packages/core/src/ β€” @clack/core (low-level primitives)

See ts/packages/cli/AGENTS.md for detailed Clack usage guidelines.

Important: The submodule is for read-only reference only. Do not modify files in ts/vendor/. The CLI's actual @clack/prompts dependency comes from npm via pnpm install.

Common Development Commands

Build and Development


bash

Build all packages


pnpm build

Build only TypeScript packages


pnpm build:packages

Clean build artifacts


pnpm clean
pnpm clean:workspace

Lint code


pnpm lint
pnpm lint:fix

Format code


pnpm format

Run tests


pnpm test

Package Management


bash

Install dependencies


pnpm install

Check peer dependencies


pnpm check:peer-deps

Update peer dependencies


pnpm update:peer-deps

Creating New Components


bash

Create a new provider


pnpm create:provider <provider-name> [--agentic]

Create a new example


pnpm create:example <example-name>

Release Management


bash

Create changeset for releases


pnpm changeset

Version packages


pnpm changeset:version

Publish packages


pnpm changeset:release

Project Architecture

Repository Structure


text
composio/
β”œβ”€β”€ ts/ # TypeScript SDK (main development)
β”‚ β”œβ”€β”€ packages/
β”‚ β”‚ β”œβ”€β”€ core/ # Core SDK functionality
β”‚ β”‚ β”œβ”€β”€ providers/ # AI provider integrations (OpenAI, Anthropic, etc.)
β”‚ β”‚ β”œβ”€β”€ cli/ # Command-line interface
β”‚ β”‚ β”œβ”€β”€ json-schema-to-zod/ # Schema conversion utility
β”‚ β”‚ └── ts-builders/ # TypeScript code generation utilities
β”‚ └── examples/ # Usage examples for different providers
β”œβ”€β”€ python/ # Python SDK
β”œβ”€β”€ docs/ # Documentation (Fumadocs)
└── examples/ # Cross-platform examples

Core Packages

@composio/core - Main SDK functionality:
- src/composio.ts - Main Composio class
- src/models/ - Core models (Tools, Toolkits, ConnectedAccounts, etc.)
- src/provider/ - Base provider implementations
- src/services/ - Internal services (telemetry, pusher)
- src/types/ - TypeScript type definitions
- src/utils/ - Utility functions and helpers

Provider Packages - AI integrations:
- @composio/openai - OpenAI integration
- @composio/anthropic - Anthropic integration
- @composio/google - Google GenAI integration
- @composio/langchain - LangChain integration
- @composio/vercel - Vercel AI integration
- @composio/mastra - Mastra integration

Key Concepts

Tools - Individual functions that can be executed (e.g., GITHUB_CREATE_REPO, GMAIL_SEND_EMAIL)

Toolkits - Collections of related tools grouped by service (e.g., github, gmail, slack)

Connected Accounts - User authentication/authorization for external services

Auth Configs - Configuration for different authentication methods

Custom Tools - User-defined tools with custom logic

Providers - Integrations with AI frameworks (OpenAI, Anthropic, etc.)

Modifiers - Middleware to transform tool inputs/outputs

Development Workflow

For Tool Development


1. Tools are auto-generated from OpenAPI specifications
2. Custom tools can be created using the Custom Tools API
3. Tool execution happens through the main Composio class

For Provider Development


1. Use pnpm create:provider <name> to scaffold new providers
2. Implement required methods: wrapTool, wrapTools
3. For agentic providers, also implement execution handlers
4. Add comprehensive tests and documentation

Testing


- Unit tests use Vitest
- Run tests with pnpm test
- Tests are located in test/ directories within each package
- Mock implementations are available in test/utils/mocks/

Code Quality


- ESLint configuration in eslint.config.mjs
- Prettier for code formatting
- TypeScript strict mode enabled
- Comprehensive TSDoc documentation required
- Husky pre-commit hooks for quality checks

Environment Variables

bash
COMPOSIO_API_KEY          # Required: Your Composio API key
COMPOSIO_BASE_URL # Optional: Custom API base URL
COMPOSIO_LOG_LEVEL # Optional: Logging level (silent, error, warn, info, debug)
COMPOSIO_DISABLE_TELEMETRY # Optional: Set to "true" to disable telemetry
DEVELOPMENT # Development mode flag
CI # CI environment flag

Key Files and Locations

- Main SDK Entry: ts/packages/core/src/index.ts
- Core Composio Class: ts/packages/core/src/composio.ts
- Type Definitions: ts/packages/core/src/types/
- Error Classes: ts/packages/core/src/errors/
- Examples: ts/examples/ and examples/
- Documentation: docs/
- Build Configs: turbo.jsonc, tsconfig.base.json, tsdown.config.base.ts
- E2E Tests: ts/e2e-tests/

Maintenance Tasks

When Updating GitHub Actions

When modifying files in .github/workflows/, update the "Prerequisites" section in ts/docs/internal/release.md with the current tool versions:

- Node.js: cat .nvmrc
- Bun: cat .bun-version
- pnpm: cat package.json | jq -r .packageManager | cut -d'@' -f2

Testing Commands

bash

Run all tests


pnpm test

Run tests for core package only


cd ts/packages/core && pnpm test

Run tests with UI


pnpm test:ui

TypeScript E2E Tests

E2E tests for @composio/core are located in ts/e2e-tests/ and test runtime compatibility across different JavaScript environments.

bash

Run all e2e tests (Node.js + Deno + Cloudflare)


pnpm test:e2e

Run only Node.js e2e tests (CJS/ESM compatibility, runs in Docker)


pnpm test:e2e:node

Run only Deno e2e tests (npm: specifier compatibility, runs in Docker)


pnpm test:e2e:deno

Run only Cloudflare Workers e2e tests


pnpm test:e2e:cloudflare

Run Node.js tests with a specific Node version


COMPOSIO_E2E_NODE_VERSION=22.12.0 pnpm test:e2e:node

Run Deno tests with a specific Deno version


COMPOSIO_E2E_DENO_VERSION=2.6.7 pnpm test:e2e:deno

E2E Test Structure:

text
ts/e2e-tests/
β”œβ”€β”€ _utils/ # Shared Docker infrastructure
β”œβ”€β”€ runtimes/
β”‚ β”œβ”€β”€ node/ # Node.js runtime tests
β”‚ β”‚ β”œβ”€β”€ cjs-basic/ # CommonJS compatibility
β”‚ β”‚ └── esm-basic/ # ESM compatibility
β”‚ β”œβ”€β”€ deno/ # Deno runtime tests
β”‚ β”‚ └── esm-basic/ # npm: specifier compatibility
β”‚ └── cloudflare/ # Cloudflare runtime tests
β”‚ └── cf-workers-basic/ # Cloudflare Workers tests
└── README.md # E2E test documentation

Note: When adding new e2e tests, update ts/e2e-tests/README.md with the new test information.

Common Patterns

Tool Execution


typescript
const composio = new Composio({ apiKey: 'your-key' });
const result = await composio.tools.execute('TOOL_NAME', {
userId: 'user-id',
arguments: { / tool args / }
});

Provider Integration


typescript
import { OpenAIProvider } from '@composio/openai';
const provider = new OpenAIProvider({ apiKey: 'openai-key' });
const tools = await composio.tools.get('user-id', { toolkits: ['github'] });
const wrappedTools = provider.wrapTools(tools);

Custom Tool Creation


typescript
import { z } from 'zod';

const customTool = await composio.tools.createCustomTool({
name: 'My Tool',
description: 'Tool description',
slug: 'MY_TOOL',
inputParams: z.object({
param: z.string().describe('Parameter description')
}),
execute: async (input) => {
// Implementation
return {
data: { result: input.param },
error: null,
successful: true
};
}
});

This monorepo uses pnpm workspaces and Turbo for efficient builds and development.

Python SDK Development

Setup


The Python SDK is located in the /python/ directory and uses uv for dependency management and nox for automation.

Environment Setup


bash

Create and setup Python development environment


cd python
make env
source .venv/bin/activate

Python Development Commands


bash

Setup environment (creates virtual env with all dependencies)


make env

Sync dependencies (when in an existing environment)


make sync

Install provider packages


make provider

Format code using ruff


make fmt

Or directly: nox -s fmt

Check linting and type issues


make chk

Or directly: nox -s chk

Fix linting issues


nox -s fix

Run tests (requires implementing tst session)


make tst

Or directly: nox -s tst

Run sanity tests (requires implementing snt session)


make snt

Or directly: nox -s snt

Clean build artifacts


make clean-build

Bump version


make bump

Build packages


make build

Python Project Structure


text
python/
β”œβ”€β”€ composio/ # Main SDK package
β”œβ”€β”€ providers/ # Provider implementations
β”œβ”€β”€ tests/ # Test suite
β”œβ”€β”€ examples/ # Usage examples
β”œβ”€β”€ scripts/ # Development scripts
β”œβ”€β”€ config/ # Configuration files
β”‚ β”œβ”€β”€ pytest.ini # Pytest configuration
β”‚ β”œβ”€β”€ mypy.ini # MyPy type checking config
β”‚ β”œβ”€β”€ ruff.toml # Ruff linter/formatter config
β”‚ └── codecov.yml # Code coverage config
β”œβ”€β”€ Makefile # Development shortcuts
β”œβ”€β”€ noxfile.py # Nox automation sessions
└── pyproject.toml # Project configuration

Python Code Quality


- Formatter: Ruff (Black-compatible, 88 char line length)
- Linter: Ruff with custom configuration
- Type Checker: mypy with strict optional typing
- Test Framework: pytest with custom markers (core, openai, langchain, agno)
- Python Version: >=3.10, <4
- Dependency Managers: uv

Python Testing


bash

Run tests with pytest markers


pytest -m core # Run core tests only
pytest -m openai # Run OpenAI provider tests
pytest -m langchain # Run LangChain provider tests
pytest -m agno # Run Agno provider tests

Python Package Dependencies


- Core: pysher, pydantic>=2.6.4, composio-client==1.4.0, typing-extensions>=4.0.0, openai
- Dev: nox, pytest, ruff, langchain_openai, fastapi, twine, click, semver

Python Environment Variables


Same as TypeScript SDK, with additional:
bash
OPENAI_API_KEY    # Required for OpenAI provider examples

README.md


<div align="center">

<img src="https://raw.githubusercontent.com/ComposioHQ/composio/next/public/cover.png" alt="Composio Logo" width="auto" height="auto" style="margin-bottom: 20px;"/>


Composio SDK

Skills that evolve for your Agents

🌐 Website β€’ πŸ“š Documentation

![GitHub Stars](https://github.com/ComposioHQ/composio/stargazers)
![PyPI Downloads](https://pypi.org/project/composio/)
![NPM Downloads](https://www.npmjs.com/package/@composio/core)
![Discord](https://discord.gg/composio)
</div>

This repository contains the official Software Development Kits (SDKs) for Composio, providing seamless integration capabilities for Python and Typescript Agentic Frameworks and Libraries.

Getting Started

TypeScript SDK Installation

bash

Using npm


npm install @composio/core

Using yarn


yarn add @composio/core

Using pnpm


pnpm add @composio/core

#### Quick start:

typescript
import { Composio } from '@composio/core';
// Initialize the SDK
const composio = new Composio({
// apiKey: 'your-api-key',
});

#### Simple Agent with OpenAI Agents

bash
npm install @composio/openai-agents @openai/agents

typescript
import { Composio } from '@composio/core';
import { OpenAIAgentsProvider } from '@composio/openai-agents';
import { Agent, run } from '@openai/agents';

const composio = new Composio({
provider: new OpenAIAgentsProvider(),
});

const userId = '[email protected]';

const tools = await composio.tools.get(userId, {
toolkits: ['HACKERNEWS'],
});

const agent = new Agent({
name: 'Hackernews assistant',
tools: tools,
});

const result = await run(agent, 'What is the latest hackernews post about?');

console.log(JSON.stringify(result.finalOutput, null, 2));
// will return the response from the agent with data from HACKERNEWS API.

Python SDK Installation

bash

Using pip


pip install composio

Using poetry


poetry add composio

#### Quick start:

python
from composio import Composio

composio = Composio(
# api_key="your-api-key",
)

#### Simple Agent with OpenAI Agents

bash
pip install composio_openai_agents openai-agents

python
import asyncio
from agents import Agent, Runner
from composio import Composio
from composio_openai_agents import OpenAIAgentsProvider

Initialize Composio client with OpenAI Agents Provider


composio = Composio(provider=OpenAIAgentsProvider())

user_id = "[email protected]"
tools = composio.tools.get(user_id=user_id, toolkits=["HACKERNEWS"])

Create an agent with the tools


agent = Agent(
name="Hackernews Agent",
instructions="You are a helpful assistant.",
tools=tools,
)

Run the agent


async def main():
result = await Runner.run(
starting_agent=agent,
input="What's the latest Hackernews post about?",
)
print(result.final_output)

asyncio.run(main())

will return the response from the agent with data from HACKERNEWS API.

For more detailed usage instructions and examples, please refer to each SDK's specific documentation.

Open API Specification

To update the OpenAPI specifications used for generating SDK documentation:

bash

Pull the latest API specifications from the backend


pnpm api:pull

This command pulls the OpenAPI specification from https://backend.composio.dev/api/v3/openapi.json and updates the local API documentation files.

This is pulled automatically with build step.

Available SDKs

TypeScript SDK (/ts)

The TypeScript SDK provides a modern, type-safe way to interact with Composio's services. It's designed for both Node.js and browser environments, offering full TypeScript support with comprehensive type definitions.

For detailed information about the TypeScript SDK, please refer to the TypeScript SDK Documentation.

Python SDK (/python)

The Python SDK offers a Pythonic interface to Composio's services, making it easy to integrate Composio into your Python applications. It supports Python 3.10+ and follows modern Python development practices.

For detailed information about the Python SDK, please refer to the Python SDK Documentation.

Provider Support

The following table shows which AI frameworks and platforms are supported in each SDK:

| Provider | TypeScript | Python |
|----------|:----------:|:------:|
| OpenAI | βœ… | βœ… |
| OpenAI Agents | βœ… | βœ… |
| Anthropic | βœ… | βœ… |
| LangChain | βœ… | βœ… |
| LangGraph | βœ…* | βœ… |
| LlamaIndex | βœ… | βœ… |
| Vercel AI SDK | βœ… | ❌ |
| Google Gemini | βœ… | βœ… |
| Google ADK | ❌ | βœ… |
| Mastra | βœ… | ❌ |
| Cloudflare Workers AI | βœ… | ❌ |
| CrewAI | ❌ | βœ… |
| AutoGen | ❌ | βœ… |

\ LangGraph in TypeScript is supported via the @composio/langchain package.*

Don't see your provider? Learn how to build a custom provider to integrate with any AI framework.

Packages

Core Packages

| Package | Version |
|---------|---------|
| TypeScript | |
| @composio/core | !npm version |
| Python | |
| composio | !PyPI version |

Provider Packages

| Package | Version |
|---------|---------|
| TypeScript | |
| @composio/openai | !npm version |
| @composio/openai-agents | !npm version |
| @composio/anthropic | !npm version |
| @composio/langchain | !npm version |
| @composio/llamaindex | !npm version |
| @composio/vercel | !npm version |
| @composio/google | !npm version |
| @composio/mastra | !npm version |
| @composio/cloudflare | !npm version |
| Python | |
| composio-openai | !PyPI version |
| composio-openai-agents | !PyPI version |
| composio-anthropic | !PyPI version |
| composio-langchain | !PyPI version |
| composio-langgraph | !PyPI version |
| composio-llamaindex | !PyPI version |
| composio-crewai | !PyPI version |
| composio-autogen | !PyPI version |
| composio-gemini | !PyPI version |
| composio-google | !PyPI version |
| composio-google-adk | !PyPI version |

Utility Packages

| Package | Version |
|---------|---------|
| @composio/json-schema-to-zod | !npm version |
| @composio/ts-builders | !npm version |

_if you are looking for the older sdk, you can find them here_

Rube

Rube is a Model Context Protocol (MCP) server built with Composio. It connects your AI tools to 500+ apps like Gmail, Slack, GitHub, and Notion. Simply install it in your AI client, authenticate once with your apps, and start asking your AI to perform real actions like "Send an email" or "Create a task."

It integrates with major AI clients like Cursor, Claude Desktop, VS Code, Claude Code and any custom MCP‑compatible client. You can switch between these clients and your integrations follow you.


Contributing

We welcome contributions to both SDKs! Please read our contribution guidelines before submitting pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you encounter any issues or have questions about the SDKs:

- Open an issue in this repository
- Contact our support team
- Check our documentation