Use github with CrewAI Python

A platform for version control and collaboration, allowing you to work together on projects from anywhere.
🔗 Connect and Use github
1. 🔑 Connect your github account
2. ✅ Select an action
3. 🚀 Go live with the agent
What do you want to do?
Actions
meta
- GITHUB API ROOT
security-advisories
apps
classroom
codes-of-conduct
emojis
dependabot
secret-scanning
activity
gists
gitignore
issues
licenses
markdown
orgs
actions
oidc
code-scanning
codespaces
copilot
packages
interactions
migrations
projects
repos
billing
teams
reactions
rate-limit
checks
dependency-graph
git
pulls
search
users
Main

API actions for github for AI assitants/agents

Language
JS
PYTHON
Framework

Orgs

ADD A SECURITY MANAGER TEAM

This text outlines how to add a team as a security manager in an organization. The user must be an admin and use tokens with `write:org` scope. More info is available in the provided GitHub li
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_ADD_A_SECURITY_MANAGER_TEAM])

REMOVE A SECURITY MANAGER TEAM

Removes the security manager role from a team in an organization. Administrators with `admin:org` scope via OAuth or personal access tokens can use this endpoint. For more, visit GitHub docs o
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_REMOVE_A_SECURITY_MANAGER_TEAM])

ENABLE OR DISABLE A SECURITY FEATURE FOR AN ORGANIZATION

This text outlines how to enable/disable security features for all eligible repositories in an organization, requiring the user to be an owner or a security manager with `write:org` scope for
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_ENABLE_OR_DISABLE_A_SECURITY_FEATURE_FOR_AN_ORGANIZATION])

Billing

GET GITHUB ACTIONS BILLING FOR AN ORGANIZATION

The summary discusses GitHub Actions' usage, focusing on paid minutes for private repo workflows and job reruns on GitHub-hosted runners. It mentions OS-specific minute multipliers and the nec
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_GITHUB_ACTIONS_BILLING_FOR_AN_ORGANIZATION])

GET GITHUB PACKAGES BILLING FOR AN ORGANIZATION

GitHub Packages tracks free and paid storage usage in GB. Paid storage is for private repos only. OAuth or personal access tokens with `repo` or `admin:org` scope are needed. Details at GitHub
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_GITHUB_PACKAGES_BILLING_FOR_AN_ORGANIZATION])

GET SHARED STORAGE BILLING FOR AN ORGANIZATION

This text details getting estimates for paid minutes and storage used by GitHub Actions and GitHub Packages, highlighting that charges apply only to private repos. It also mentions necessary t
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_SHARED_STORAGE_BILLING_FOR_AN_ORGANIZATION])

Teams

LIST TEAMS

Lists all teams in an organization that are visible to the authenticated user.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_TEAMS])

CREATE A TEAM

In `{org}`, authenticated users can create teams if they're members or owners, with all members having default creation rights. Owners can limit this ability. Creators automatically become tea
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CREATE_A_TEAM])

GET A TEAM BY NAME

Retrieves a GitHub team using its `slug`, created by lowercasing the name, replacing spaces with `-`, and special characters. Alternatively, specify a team by `org_id` and `team_id`.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_A_TEAM_BY_NAME])

UPDATE A TEAM

To edit a team, the authenticated user must either be an organization owner or a team maintainer. **Note:** You can also specify a team by `org_id` and `team_id` using the route `PATCH /organi
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_UPDATE_A_TEAM])

DELETE A TEAM

To delete a team, one must be an organization owner or a team maintainer. Deleting a parent team also removes its child teams. Teams can be specified for deletion using `org_id` and `team_id`
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_A_TEAM])

LIST DISCUSSIONS

Access all discussions on a team's page via `GET /organizations/{org_id}/team/{team_id}/discussions`, needing OAuth or classic tokens with `read:discussion` scope.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_DISCUSSIONS])

CREATE A DISCUSSION

New endpoint allows creating posts on a team's page, triggering notifications. Excessive use may lead to rate limiting. Supports specifying teams by `org_id` and `team_id`. Requires `write:dis
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CREATE_A_DISCUSSION])

GET A DISCUSSION

Access a discussion on a team's page via `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}`. Use OAuth or personal access tokens with `read:discussion` scope.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_A_DISCUSSION])

UPDATE A DISCUSSION

This endpoint allows editing titles and bodies of discussion posts. Updates are made with specific parameters. For team-specific discussions, use the route with `org_id` and `team_id`. OAuth a
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_UPDATE_A_DISCUSSION])

DELETE A DISCUSSION

To remove a team discussion, use `DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}` specifying `org_id` and `team_id`. OAuth and classic tokens require `write:discussi
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_A_DISCUSSION])

LIST DISCUSSION COMMENTS

Retrieve all comments from a team discussion by using the endpoint `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments`. You need `read:discussion` scope on OA
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_DISCUSSION_COMMENTS])

CREATE A DISCUSSION COMMENT

The endpoint enables comment creation on team discussions with notifications; usage may be rate limited. Requires OAuth or tokens with `write:discussion` scope. An alternate route exists for t
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CREATE_A_DISCUSSION_COMMENT])

GET A DISCUSSION COMMENT

To get a specific comment from a team discussion, use `GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}`. Ensure OAuth or personal access tokens
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_A_DISCUSSION_COMMENT])

UPDATE A DISCUSSION COMMENT

This text outlines how to edit discussion comments, specifying teams with `org_id` and `team_id`. It requires `write:discussion` scope for OAuth and classic personal access tokens.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_UPDATE_A_DISCUSSION_COMMENT])

DELETE A DISCUSSION COMMENT

This text explains how to delete a comment in a team discussion, either by specifying an organization and team ID or directly. It notes that OAuth or personal access tokens with the "write:dis
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_A_DISCUSSION_COMMENT])

LIST PENDING TEAM INVITATIONS

The return hash from an Organization Invitation includes a `role` field with values like `direct_member`, `admin`, etc. The `login` field is `null` if the invitee isn't a GitHub member. Option
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_PENDING_TEAM_INVITATIONS])

LIST TEAM MEMBERS

Team members will include the members of child teams. To list members in a team, the team must be visible to the authenticated user.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_TEAM_MEMBERS])

GET TEAM MEMBERSHIP FOR A USER

To access team memberships, which include child members, team visibility is needed. Use specific API endpoints to check membership details like `state` and `role`, noting organization owners a
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_TEAM_MEMBERSHIP_FOR_A_USER])

ADD OR UPDATE TEAM MEMBERSHIP FOR A USER

Organization owners or team maintainers can add members, with non-members receiving email invites. Team sync is available for GitHub Enterprise Cloud, allowing IdP to manage memberships. Use `
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_ADD_OR_UPDATE_TEAM_MEMBERSHIP_FOR_A_USER])

REMOVE TEAM MEMBERSHIP FOR A USER

To remove a team member, 'admin' rights or ownership is needed without deleting the user. On GitHub Enterprise Cloud, team sync is supported, yet API edits to membership with sync on can lead
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_REMOVE_TEAM_MEMBERSHIP_FOR_A_USER])

LIST TEAM PROJECTS

Lists the organization projects for a team. **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/projects`.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_TEAM_PROJECTS])

CHECK TEAM PERMISSIONS FOR A PROJECT

The text explains how to check a team's permissions (`read`, `write`, `admin`) on an organization project, including inherited projects. It also notes the option to specify a team by `org_id`
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CHECK_TEAM_PERMISSIONS_FOR_A_PROJECT])

ADD OR UPDATE TEAM PROJECT PERMISSIONS

To add or update a team's project, the user needs 'admin' rights. Projects and teams must belong to the same organization. A team can be specified by `org_id` and `team_id` via `PUT` request.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_ADD_OR_UPDATE_TEAM_PROJECT_PERMISSIONS])

REMOVE A PROJECT FROM A TEAM

An organization owner or a team maintainer can remove a project from a team. Organization members need `read` or `admin` access to do so. The action doesn't delete the project. Teams can also
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_REMOVE_A_PROJECT_FROM_A_TEAM])

LIST TEAM REPOSITORIES

Lists a team's repositories visible to the authenticated user. **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_TEAM_REPOSITORIES])

CHECK TEAM PERMISSIONS FOR A REPOSITORY

The text guides on verifying a team's permissions for a repository, including inherited permissions, by using a special media type. It elaborates on the necessary permissions for private repos
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CHECK_TEAM_PERMISSIONS_FOR_A_REPOSITORY])

ADD OR UPDATE TEAM REPOSITORY PERMISSIONS

To modify a team's repo permissions, admin access is needed along with team visibility. Repos must be owned or forked by the org. Follow specific conditions and set `Content-Length` to zero fo
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_ADD_OR_UPDATE_TEAM_REPOSITORY_PERMISSIONS])

REMOVE A REPOSITORY FROM A TEAM

Organization owners or team maintainers can remove repositories from their team if they are authenticated. Members need admin access to remove a repository. Removal doesn't delete the repo. Te
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_REMOVE_A_REPOSITORY_FROM_A_TEAM])

LIST CHILD TEAMS

Lists the child teams of the team specified by `{team_slug}`. **Note:** You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/teams`
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_CHILD_TEAMS])

Reactions

LIST REACTIONS FOR A TEAM DISCUSSION COMMENT

API endpoint retrieves reactions to a team discussion comment; specify by `org_id` and `team_id`. Requires `read:discussion` scope with OAuth or personal access tokens.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_REACTIONS_FOR_A_TEAM_DISCUSSION_COMMENT])

CREATE REACTION FOR A TEAM DISCUSSION COMMENT

Adding a reaction to a team discussion comment via GitHub's API results in HTTP `200` if the reaction exists. Specify teams by `org_id` and `team_id`. OAuth tokens require `write:discussion` s
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CREATE_REACTION_FOR_A_TEAM_DISCUSSION_COMMENT])

DELETE TEAM DISCUSSION COMMENT REACTION

To remove a team discussion comment reaction, use DELETE with specific IDs, requiring `write:discussion` scope via OAuth/personal tokens. See documentation for details.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_TEAM_DISCUSSION_COMMENT_REACTION])

LIST REACTIONS FOR A TEAM DISCUSSION

Access reactions to a team discussion via GET request, specifying by `org_id` and `team_id`. OAuth and personal access tokens with `read:discussion` scope are necessary.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_REACTIONS_FOR_A_TEAM_DISCUSSION])

CREATE REACTION FOR A TEAM DISCUSSION

Adding a reaction to a team discussion via GitHub API returns HTTP `200` if the reaction exists. Use `POST` with `org_id` and `team_id` for specific teams. OAuth tokens require `write:discussi
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CREATE_REACTION_FOR_A_TEAM_DISCUSSION])

DELETE TEAM DISCUSSION REACTION

Use route `DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions/:reaction_id` to remove a reaction from team discussions. Required `write:discussion` scope for
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_TEAM_DISCUSSION_REACTION])

Projects

GET A PROJECT CARD

Gets information about a project card.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_A_PROJECT_CARD])

UPDATE AN EXISTING PROJECT CARD

Update an existing project card by specifying its unique ID. Allows modifying notes and the archival status. Returns updated card details. For more info, visit: https://docs.github.com/rest/pr
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_UPDATE_AN_EXISTING_PROJECT_CARD])

DELETE A PROJECT CARD

Deletes a project card
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_A_PROJECT_CARD])

MOVE A PROJECT CARD

This endpoint moves a project card to a specified column position using `POST` with `card_id`, `column_id`, and `position` (top, bottom, or after another card). Authentication needed.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_MOVE_A_PROJECT_CARD])

GET A PROJECT COLUMN

Gets information about a project column.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_GET_A_PROJECT_COLUMN])

UPDATE AN EXISTING PROJECT COLUMN

Update an existing GitHub project column by ID. Requires column ID in the path and a JSON request body with column's new name. Supports renaming project columns. Refer to official documentatio
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_UPDATE_AN_EXISTING_PROJECT_COLUMN])

DELETE A PROJECT COLUMN

Deletes a project column.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_DELETE_A_PROJECT_COLUMN])

LIST PROJECT CARDS

Lists the project cards in a project.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_LIST_PROJECT_CARDS])

CREATE A PROJECT CARD

To create a project card, submit a `POST` request with `column_id` and a note or repository content details. Successful submissions return a 201 response with card details.
from composio_crewai import ComposioToolSet, Action tool_set = ComposioToolSet() tools = tool_set.get_tools(actions=[Action.GITHUB_CREATE_A_PROJECT_CARD])

Frequently asked questions

What is Composio.dev?

Composio.dev is a cutting-edge framework for building AI applications, designed to make the process of developing AI solutions super easy and fun! It's a collection of powerful tools and libraries that simplify the process of creating AI applications, allowing you to focus on the creative aspects of your project without getting bogged down by the technical details.

How does Composio.dev support github?

Composio.dev seamlessly integrates with github, making it a breeze to leverage its capabilities within the Composio.dev platform. You can use github to call functions on various platforms like Google, GitHub, and others, allowing you to incorporate different services into your AI applications with ease. It also supports user login via OAuth2 and can work with other popular frameworks such as LangChain and CrewAI, giving you the flexibility to build truly innovative AI solutions.

What models can I use with github and crewAI_python?

When using github and crewAI_python, you have access to a wide range of state-of-the-art language models, including GPT-4o (OpenAI), GPT-3.5 (OpenAI), GPT-4 (OpenAI), Claude (Anthropic), PaLM (Google), LLaMA and LLaMA 2 (Meta), Gemini, and many others. This flexibility allows you to choose the model that best suits your specific use case, whether you're building a chatbot, a content creation tool, or any other AI-powered application. You can experiment with different models and find the one that delivers the best performance for your project.

How can I integrate github with crewAI_python?

Integrating github with crewAI_python is super easy with Composio.dev! You can use the Composio.dev API to call functions from both github and crewAI_python, allowing you to tap into their capabilities with just a few lines of code. The SDK is available in Python, JavaScript, and TypeScript, so you can work with the language you're most comfortable with and integrate these powerful tools into your projects seamlessly.

What is the pricing for github and crewAI_python?

Both github and crewAI_python are completely free to use, with a generous free tier that allows up to 1000 requests per month. This makes them accessible for developers and organizations of all sizes, whether you're a student working on a personal project or a startup building the next big thing. You can get started with these powerful tools without worrying about breaking the bank.

What kind of authentication is supported for github and crewAI_python?

github and crewAI_python support OAuth2 authentication, ensuring secure and authorized access to their functionalities. You can use the Composio.dev API to handle authentication and call functions from both github and crewAI_python seamlessly. The SDK is available in Python, JavaScript, and TypeScript for your convenience, making it easy to integrate authentication into your projects and keep your users' data safe and secure.

Can I add github to my project?

Absolutely! You can easily incorporate github into your project by utilizing the Composio.dev API. This API allows you to call functions from both github and crewAI_python, enabling you to leverage their capabilities within your application. The SDK is available in Python, JavaScript, and TypeScript to facilitate integration, so you can work with the language you're most comfortable with and add these powerful tools to your project with ease.

What is the accuracy of github and crewAI_python?

github and crewAI_python are designed to provide highly accurate and reliable results, ensuring that your AI applications perform at their best. The integration with Composio.dev ensures precise function calls, enabling you to build robust and powerful AI applications with confidence. The comprehensive framework and the ability to leverage state-of-the-art models ensure reliable and accurate outcomes for your AI development needs, whether you're working on a chatbot, a content creation tool, or any other AI-powered project.

What are some common use cases for github and crewAI_python?

github and crewAI_python can be used for a wide range of AI applications, making them versatile tools for developers and creators alike. Some common use cases include natural language processing, text generation, question answering, sentiment analysis, and more. They're particularly useful for building chatbots, virtual assistants, content creation tools, and other AI-powered applications that can help you automate tasks, engage with users, and create compelling content. Whether you're working on a personal project or building a product for your startup, these tools can help you bring your ideas to life.

How does github handle data privacy and security?

Data privacy and security are crucial considerations when working with AI systems, and github takes these issues seriously. It follows industry best practices and adheres to strict data protection regulations, ensuring that your data is kept safe and secure. github provides robust security measures, such as encryption and access controls, to ensure the confidentiality and integrity of your data. You can rest assured that your sensitive information is protected when using github for your AI development needs.

Can I customize github and crewAI_python for my specific needs?

Absolutely! github and crewAI_python are highly customizable and extensible, allowing you to tailor their functionality, models, and configurations to meet your specific requirements. Whether you're building a chatbot, a content creation tool, or any other AI-powered application, you can customize these tools to fit your unique needs. Additionally, Composio.dev provides a flexible platform for integrating and orchestrating various AI tools and services, enabling you to create custom AI solutions that are tailored to your project.

What kind of support and documentation is available for github and crewAI_python?

github and crewAI_python have comprehensive documentation and a supportive community, making it easy for you to get started and find answers to your questions. Composio.dev also provides extensive resources, including tutorials, guides, and a dedicated support team to assist you throughout your AI development journey. Whether you're a beginner or an experienced developer, you'll have access to the resources you need to make the most of these powerful tools.
+ Integrate seamlessly with your agentic frameworks
Composio Works with All Shapes and SizesComposio Works with All Shapes and SizesComposio Works with All Shapes and SizesComposio Works with All Shapes and SizesComposio Works with All Shapes and Sizes
Building for AI across continents🧪