## CrewAI - Frontegg AI for Python The Frontegg AI Python SDK - [`frontegg-ai-sdk`](https://pypi.org/project/frontegg-ai-sdk/) - connects your AI agent code to the Frontegg platform, allowing you to authenticate agents, set user context, and securely access tools and integrations like Slack, Google Workspace, or HubSpot. br Prerequisites **You’ll need:** - Python 3.8+ - A [Frontegg account](https://www.frontegg.com) - Your Frontegg Client ID, Client Secret, and Agent ID br **Python dependencies:** - `asyncio` - `httpx` - `anyio` - `nest_asyncio` (for Jupyter or nested event loops) - `pydantic` - `modelcontextprotocol` - `crewai` (optional, for CrewAI integration) ### Install the SDK ```bash pip install frontegg-ai-sdk ``` ### Environment configuration Create a `.env` file and populate it with the credentials from your Frontegg dashboard: ```env FRONTEGG_CLIENT_ID=your_client_id // Settings → Keys & domains FRONTEGG_CLIENT_SECRET=your_client_secret // Settings → Domains tab (e.g., https://app-xxxx.frontegg.com) FRONTEGG_AGENT_ID=your_agent_id // AI Agents → Agents → [Your Agent] ``` br #### Supported environments The SDK supports multiple Frontegg environments. Use the appropriate environment enum based on your data residency needs: ```python from frontegg_ai_python_sdk import Environment # Available environments Environment.EU # European servers: '.frontegg.com' Environment.US # US servers: 'us.frontegg.com' Environment.CA # Canadian servers: 'ca.frontegg.com' Environment.AU # Australian servers: 'au.frontegg.com' Environment.UK # UK servers: 'uk.frontegg.com' ``` ### Project setup Use your environment variables to set up the Frontegg AI client: ```python import asyncio import os from frontegg_ai_python_sdk import ( Environment, FronteggAiClientConfig, FronteggAiClient ) # Async usage async def async_example(): # Create client configuration config = FronteggAiClientConfig( environment=Environment.US, agent_id=os.environ.get("FRONTEGG_AGENT_ID"), client_id=os.environ.get("FRONTEGG_CLIENT_ID"), client_secret=os.environ.get("FRONTEGG_CLIENT_SECRET"), ) # Create client client = FronteggAiClient(config) # Set Context manually tenant_id = os.getenv("FRONTEGG_TENANT_ID") user_id = os.getenv("FRONTEGG_USER_ID") client.set_context(tenant_id=tenant_id, user_id=user_id) # Or set the context using the user JWT user_jwt = "Bearer eyJ..." client.set_user_context_by_jwt(user_jwt) # List available tools tools = await client.list_tools() print(f"Available tools: {tools}") # Call a tool with arguments result = await client.call_tool( name="your_tool_name", arguments={"param1": "value1"}, ) print(f"Tool result: {result}") if __name__ == "__main__": # Run async example asyncio.run(async_example()) ``` br ### CrewAI integration You can integrate Frontegg AI tools directly into CrewAI agents for powerful multi-agent orchestration. Use the following example to get started: ```python import os import asyncio from crewai import Agent, Crew, Task from frontegg_ai_python_sdk import ( Environment, FronteggAiClientConfig, FronteggAiClient ) async def get_crewai_tools(): # Configure Frontegg client config = FronteggAiClientConfig( environment=Environment.US, agent_id=os.environ.get("FRONTEGG_AGENT_ID"), client_id=os.environ.get("FRONTEGG_CLIENT_ID"), client_secret=os.environ.get("FRONTEGG_CLIENT_SECRET"), ) # Create client client = FronteggAiClient(config) # Set context manually tenant_id = os.getenv("FRONTEGG_TENANT_ID") user_id = os.getenv("FRONTEGG_USER_ID") client.set_context(tenant_id=tenant_id, user_id=user_id) # Or use a JWT token # user_jwt = "Bearer eyJ..." # client.set_user_context_by_jwt(user_jwt) # Get tools in CrewAI-compatible format tools = await client.list_tools_as_crewai_tools() return tools # Fetch tools for the agent tools = asyncio.run(get_crewai_tools()) # Create a CrewAI agent with Frontegg tools agent = Agent( role="Research Assistant", goal="Find and analyze information", backstory="I am an AI research assistant with access to various tools.", tools=tools, verbose=True ) # Define the task for the agent task = Task( description="Research topic X and provide insights", expected_output="A comprehensive report", agent=agent ) # Launch the crew crew = Crew(agents=[agent], tasks=[task]) result = crew.kickoff() ``` br ### Custom logging To add detailed logging to your Frontegg client, use the built-in `setup_logger` utility: ```python from frontegg_ai_python_sdk import setup_logger import logging # Set up a custom logger logger = setup_logger( name="my_custom_logger", level=logging.DEBUG, format_string="%(asctime)s - %(name)s - %(levelname)s - %(message)s", file_handler="app.log" # Optional: log to a file ) # Initialize client with logger client = FronteggAiClient(config, logger=logger) ```