From 8994ac17ebaa72a37ba4ee39e8370634d4e4aecf Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Sun, 21 Sep 2025 11:24:27 -0400 Subject: [PATCH 1/4] Add a third-party integrations guide --- CONTRIBUTING.md | 4 + THIRD_PARTY_INTEGRATIONS.md | 262 ++++++++++++++++++++++++++++++++++++ 2 files changed, 266 insertions(+) create mode 100644 THIRD_PARTY_INTEGRATIONS.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 95bb20cc7..16f5a8d39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,9 @@ ## Contributing to Pipecat +**Want to add a new service integration?** +We encourage community-maintained integrations! Please see our [Third-Party Integration Guide](THIRD_PARTY_INTEGRATIONS.md) for the process and requirements. + +**Want to contribute to Pipecat core?** We welcome contributions of all kinds! Your help is appreciated. Follow these steps to get involved: 1. **Fork this repository**: Start by forking the Pipecat Documentation repository to your GitHub account. diff --git a/THIRD_PARTY_INTEGRATIONS.md b/THIRD_PARTY_INTEGRATIONS.md new file mode 100644 index 000000000..d02a94f27 --- /dev/null +++ b/THIRD_PARTY_INTEGRATIONS.md @@ -0,0 +1,262 @@ +# Third-Party Integrations Guide + +Pipecat welcomes community-maintained integrations! As our ecosystem grows, we've established a process for third-party developers to create and maintain their own service integrations while ensuring discoverability for the community. + +## Overview + +**What we support:** Third-party maintained integrations that live in separate repositories and are maintained by their authors. + +**What we don't do:** The Pipecat team does not review, test, or maintain third-party integrations. We provide guidance and list approved integrations for discoverability. + +**Why this approach:** This allows the community to move quickly while keeping the Pipecat core team focused on maintaining the framework itself. + +## Requirements for Third-Party Integration Listing + +To be listed as an official third-party integration, your repository must contain: + +### Required Components + +- **Source code** - Complete implementation following Pipecat patterns +- **Foundational example** - Single file example showing basic usage (see [Pipecat examples](https://github.com/pipecat-ai/pipecat/tree/main/examples/foundational)) +- **README.md** - Must include: + - Introduction and explanation of your integration + - Installation instructions + - Usage instructions with Pipecat Pipeline + - How to run your example +- **LICENSE** - Permissive license (BSD-2 like Pipecat, or equivalent open source terms) +- **Code documentation** - Source code with docstrings (we recommend following [Pipecat's docstring conventions](https://github.com/pipecat-ai/pipecat/blob/main/CONTRIBUTING.md#docstring-conventions)) +- **Changelog** - Maintain a changelog for version updates + +### Submission Information Required + +When submitting your integration for listing, provide: + +- Service name +- Service type (STT, LLM, TTS, Image, etc.) +- Link to your repository +- GitHub username(s) of maintainers + +## Submission Process + +1. **Create your integration** following the patterns above +2. **Set up your repository** with all required components +3. **Join our Discord:** https://discord.gg/pipecat +4. **Submit for listing** in the `#third-party-integrations` channel with: + - Service name and type + - Repository link + - Maintainer GitHub usernames + +## Integration Patterns and Examples + +### STT (Speech-to-Text) Services + +#### Websocket-based Services + +**Base class:** `STTService` + +**Examples:** + +- [DeepgramSTTService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/deepgram/stt.py) +- [SpeechmaticsSTTService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/speechmatics/stt.py) + +#### File-based Services + +**Base class:** `SegmentedSTTService` + +**Examples:** + +- [RivaSTTService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/riva/stt.py) +- [FalSTTService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/fal/stt.py) + +#### Key requirements: + +- STT services should push `InterimTranscriptionFrames` and `TranscriptionFrames` +- If confidence values are available, filter for values >50% confidence + +### LLM (Large Language Model) Services + +#### OpenAI-Compatible Services + +**Base class:** `OpenAILLMService` + +**Examples:** + +- [AzureLLMService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/azure/llm.py) +- [GrokLLMService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/grok/llm.py) - Shows overriding the base class where needed + +#### Non-OpenAI Compatible Services + +**Requires:** Full implementation + +**Examples:** + +- [AnthropicLLMService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/anthropic/llm.py) +- [GoogleLLMService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/google/llm.py) + +### TTS (Text-to-Speech) Services + +#### AudioContextWordTTSService + +**Use for:** Websocket-based services supporting word/timestamp alignment + +**Example:** + +- [CartesiaTTSService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/cartesia/tts.py) + +#### InterruptibleTTSService + +**Use for:** Websocket-based services without word/timestamp alignment, requiring disconnection on interruption + +**Example:** + +- [SarvamTTSService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/sarvam/tts.py) + +#### WordTTSService + +**Use for:** HTTP-based services supporting word/timestamp alignment + +**Example:** + +- [ElevenLabsHttpTTSService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/elevenlabs/tts.py) + +#### TTSService + +**Use for:** HTTP-based services without word/timestamp alignment + +**Example:** + +- [GoogleHttpTTSService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/google/tts.py) + +#### TTS Considerations: + +- For websocket services, use asyncio WebSocket implementation (required for v13+ support) +- Handle idle service timeouts with keepalives +- TTSServices push both audio (`TTSRawAudioFrame`) and text (`TTSTextFrame`) frames + +### Telephony Services + +Pipecat supports telephony provider integration using websocket connections to exchange MediaStreams. These services use a FrameSerializer to serialize and deserialize inputs from the FastAPIWebsocketTransport. + +**Examples:** + +- [Twilio](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/serializers/twilio.py) +- [Telnyx](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/serializers/telnyx.py) + +**Considerations:** + +- Include hang-up functionality using the provider's native API, ideally using `aiohttp` + +### Image Generation Services + +**Base class:** `ImageGenService` + +**Examples:** + +- [FalImageGenService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/fal/image.py) +- [GoogleImageGenService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/google/image.py) + +**Requirements:** + +- Must implement `run_image_gen` method returning an `AsyncGenerator` + +## Implementation Guidelines + +### Naming Conventions + +- **STT:** `VendorSTTService` +- **LLM:** `VendorLLMService` +- **TTS:** + - Websocket: `VendorTTSService` + - HTTP: `VendorHttpTTSService` +- **Image:** `VendorImageGenService` +- **Vision:** `VendorVisionService` +- **Telephony:** `VendorFrameSerializer` + +### Metrics Support + +Enable metrics in your service: + +```python +def can_generate_metrics(self) -> bool: + """Check if this service can generate processing metrics. + + Returns: + True, as this service supports metrics. + """ + return True +``` + +### Dynamic Settings Updates + +STT, LLM, and TTS services support `ServiceUpdateSettingsFrame` for dynamic configuration changes. The base STTService has an `_update_settings()` method that handles settings, and the private `_settings` `Dict` is used to store settings and provide access to the subclass. + +```python +async def set_language(self, language: Language): + """Set the recognition language and reconnect. + + Args: + language: The language to use for speech recognition. + """ + logger.info(f"Switching STT language to: [{language}]") + self._settings["language"] = language + await self._disconnect() + await self._connect() +``` + +Note that, in this example, Deepgram requires the websocket connection be disconnected and reconnected to reinitialize the service with the new value. Consider if your service requires reconnection. + +### Sample Rate Handling + +Sample rates are set via PipelineParams and passed to each frame processor at initialization. The pattern is to _not_ set the sample rate value in the constructor of a given service. Instead, use the `start()` method to initialize sample rates from the frame: + +```python +async def start(self, frame: StartFrame): + """Start the service.""" + await super().start(frame) + self._settings["output_format"]["sample_rate"] = self.sample_rate + await self._connect() +``` + +Note that `self.sample_rate` is a `@property` set in the TTSService base class, which provides access to the private sample rate value obtained from the StartFrame. + +### Tracing Decorators + +Use Pipecat's tracing decorators: + +- **STT:** `@traced_stt` - decorate a function that handles `transcript`, `is_final`, `language` as args +- **LLM:** `@traced_llm` - decorate the `_process_context()` method +- **TTS:** `@traced_tts` - decorate the `run_tts()` method + +## Best Practices + +### Packaging and Distribution + +- Use [uv](https://docs.astral.sh/uv/) for packaging (encouraged) +- Consider releasing to PyPI for easier installation +- Follow semantic versioning principles +- Maintain a changelog + +### HTTP Communication + +For REST-based communication, use aiohttp. Pipecat includes this as a required dependency, so using it prevents adding an additional dependency to your integration. + +### Error Handling + +- Wrap API calls in appropriate try/catch blocks +- Handle rate limits and network failures gracefully +- Provide meaningful error messages + +### Testing + +- Your foundational example serves as a valuable integration-level test +- Unit tests are nice to have. As the Pipecat teams provides better guidance, we will encourage unit testing more + +## Disclaimer + +Third-party integrations are community-maintained and not officially supported by the Pipecat team. Users should evaluate these integrations independently. The Pipecat team reserves the right to remove listings that become unmaintained or problematic. + +## Questions? + +Join our Discord community at https://discord.gg/pipecat and post in the `#third-party-integrations` channel for guidance and support. + +For additional questions, you can also reach out to us at pipecat-ai@daily.co. From 37b1345bfa8384bd8662086a618dd9a43248527d Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Tue, 30 Sep 2025 10:27:34 -0400 Subject: [PATCH 2/4] Changes from review feedback --- THIRD_PARTY_INTEGRATIONS.md | 56 ++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/THIRD_PARTY_INTEGRATIONS.md b/THIRD_PARTY_INTEGRATIONS.md index d02a94f27..c72855224 100644 --- a/THIRD_PARTY_INTEGRATIONS.md +++ b/THIRD_PARTY_INTEGRATIONS.md @@ -19,10 +19,14 @@ To be listed as an official third-party integration, your repository must contai - **Source code** - Complete implementation following Pipecat patterns - **Foundational example** - Single file example showing basic usage (see [Pipecat examples](https://github.com/pipecat-ai/pipecat/tree/main/examples/foundational)) - **README.md** - Must include: + - Introduction and explanation of your integration - Installation instructions - Usage instructions with Pipecat Pipeline - How to run your example + - Last Pipecat version tested (e.g., "Tested with Pipecat v0.0.50") + - Company attribution: If you work for the company providing the service, please mention this in your README. This helps build confidence that the integration will be actively maintained. + - **LICENSE** - Permissive license (BSD-2 like Pipecat, or equivalent open source terms) - **Code documentation** - Source code with docstrings (we recommend following [Pipecat's docstring conventions](https://github.com/pipecat-ai/pipecat/blob/main/CONTRIBUTING.md#docstring-conventions)) - **Changelog** - Maintain a changelog for version updates @@ -35,6 +39,9 @@ When submitting your integration for listing, provide: - Service type (STT, LLM, TTS, Image, etc.) - Link to your repository - GitHub username(s) of maintainers +- Demo video (approx 30-60 seconds) showing: + - Core functionality of your integration + - Handling of an interruption (if applicable to service type) ## Submission Process @@ -133,7 +140,7 @@ When submitting your integration for listing, provide: - Handle idle service timeouts with keepalives - TTSServices push both audio (`TTSRawAudioFrame`) and text (`TTSTextFrame`) frames -### Telephony Services +### Telephony Serializers Pipecat supports telephony provider integration using websocket connections to exchange MediaStreams. These services use a FrameSerializer to serialize and deserialize inputs from the FastAPIWebsocketTransport. @@ -145,6 +152,10 @@ Pipecat supports telephony provider integration using websocket connections to e **Considerations:** - Include hang-up functionality using the provider's native API, ideally using `aiohttp` +- Support DTMF (dual-tone multi-frequency) events if the provider supports them: + - Deserialize DTMF events from the provider's protocol to `InputDTMFFrame` + - Use `KeypadEntry` enum for valid keypad entries (0-9, \*, #, A-D) + - Handle invalid DTMF digits gracefully by returning `None` ### Image Generation Services @@ -159,6 +170,22 @@ Pipecat supports telephony provider integration using websocket connections to e - Must implement `run_image_gen` method returning an `AsyncGenerator` +### Vision Services + +Vision services process images and provide analysis such as descriptions, object detection, or visual question answering. + +**Base class:** `VisionService` + +**Example:** + +- [MoondreamVisionService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/moondream/vision.py) + +**Requirements:** + +- Must implement `run_vision` method that takes an `LLMContext` and returns an `AsyncGenerator[Frame, None]` +- The method processes the latest image in the context and yields frames with analysis results +- Typically yields `TextFrame` objects containing descriptions or answers + ## Implementation Guidelines ### Naming Conventions @@ -245,6 +272,20 @@ For REST-based communication, use aiohttp. Pipecat includes this as a required d - Wrap API calls in appropriate try/catch blocks - Handle rate limits and network failures gracefully - Provide meaningful error messages +- When errors occur, raise exceptions AND push `ErrorFrame`s to notify the pipeline: + +```python +from pipecat.frames.frames import ErrorFrame + +try: + # Your API call + result = await self._make_api_call() +except Exception as e: + # Push error frame to pipeline + await self.push_error(ErrorFrame(error=f"{self} error: {e}")) + # Raise or handle as appropriate + raise +``` ### Testing @@ -255,6 +296,19 @@ For REST-based communication, use aiohttp. Pipecat includes this as a required d Third-party integrations are community-maintained and not officially supported by the Pipecat team. Users should evaluate these integrations independently. The Pipecat team reserves the right to remove listings that become unmaintained or problematic. +## Staying Up to Date + +Pipecat evolves rapidly to support the latest AI technologies and patterns. While we strive to minimize breaking changes, they do occur as the framework matures. + +**We strongly recommend:** + +- Join our Discord at https://discord.gg/pipecat and monitor the `#announcements` channel for release notifications +- Follow our changelog: https://github.com/pipecat-ai/pipecat/blob/main/CHANGELOG.md +- Test your integration against new Pipecat releases promptly +- Update your README with the last tested Pipecat version + +This helps ensure your integration remains compatible and your users have clear expectations about version support. + ## Questions? Join our Discord community at https://discord.gg/pipecat and post in the `#third-party-integrations` channel for guidance and support. From 99f1041a478924d93e688a6b8d649f3dce506f12 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Tue, 30 Sep 2025 15:03:22 -0400 Subject: [PATCH 3/4] More review fixes --- THIRD_PARTY_INTEGRATIONS.md | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/THIRD_PARTY_INTEGRATIONS.md b/THIRD_PARTY_INTEGRATIONS.md index c72855224..5cf929602 100644 --- a/THIRD_PARTY_INTEGRATIONS.md +++ b/THIRD_PARTY_INTEGRATIONS.md @@ -16,7 +16,7 @@ To be listed as an official third-party integration, your repository must contai ### Required Components -- **Source code** - Complete implementation following Pipecat patterns +- **Source code** - Complete implementation following Pipecat patterns (See the section below on "Integration Patterns and Examples") - **Foundational example** - Single file example showing basic usage (see [Pipecat examples](https://github.com/pipecat-ai/pipecat/tree/main/examples/foundational)) - **README.md** - Must include: @@ -24,7 +24,7 @@ To be listed as an official third-party integration, your repository must contai - Installation instructions - Usage instructions with Pipecat Pipeline - How to run your example - - Last Pipecat version tested (e.g., "Tested with Pipecat v0.0.50") + - Pipecat version compatibility (e.g., "Tested with Pipecat v0.0.86") - Company attribution: If you work for the company providing the service, please mention this in your README. This helps build confidence that the integration will be actively maintained. - **LICENSE** - Permissive license (BSD-2 like Pipecat, or equivalent open source terms) @@ -38,7 +38,6 @@ When submitting your integration for listing, provide: - Service name - Service type (STT, LLM, TTS, Image, etc.) - Link to your repository -- GitHub username(s) of maintainers - Demo video (approx 30-60 seconds) showing: - Core functionality of your integration - Handling of an interruption (if applicable to service type) @@ -100,6 +99,19 @@ When submitting your integration for listing, provide: - [AnthropicLLMService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/anthropic/llm.py) - [GoogleLLMService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/google/llm.py) +#### Key requirements: + +- **Frame sequence:** Output must follow this frame sequence pattern: + + - `LLMFullResponseStartFrame` - Signals the start of an LLM response + - `LLMTextFrame` - Contains LLM content, typically streamed as tokens + - `LLMFullResponseEndFrame` - Signals the end of an LLM response + +- **Context aggregation:** Implement context aggregation to collect user and assistant content: + - Aggregators come in pairs with a `user()` instance and `assistant()` instance + - Context must adhere to the `LLMContext` universal format + - Aggregators should handle adding messages, function calls, and images to the context + ### TTS (Text-to-Speech) Services #### AudioContextWordTTSService @@ -134,7 +146,7 @@ When submitting your integration for listing, provide: - [GoogleHttpTTSService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/google/tts.py) -#### TTS Considerations: +#### Key requirements: - For websocket services, use asyncio WebSocket implementation (required for v13+ support) - Handle idle service timeouts with keepalives @@ -149,7 +161,7 @@ Pipecat supports telephony provider integration using websocket connections to e - [Twilio](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/serializers/twilio.py) - [Telnyx](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/serializers/telnyx.py) -**Considerations:** +#### Key requirements: - Include hang-up functionality using the provider's native API, ideally using `aiohttp` - Support DTMF (dual-tone multi-frequency) events if the provider supports them: @@ -166,7 +178,7 @@ Pipecat supports telephony provider integration using websocket connections to e - [FalImageGenService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/fal/image.py) - [GoogleImageGenService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/google/image.py) -**Requirements:** +#### Key requirements: - Must implement `run_image_gen` method returning an `AsyncGenerator` @@ -180,7 +192,7 @@ Vision services process images and provide analysis such as descriptions, object - [MoondreamVisionService](https://github.com/pipecat-ai/pipecat/blob/main/src/pipecat/services/moondream/vision.py) -**Requirements:** +#### Key requirements: - Must implement `run_vision` method that takes an `LLMContext` and returns an `AsyncGenerator[Frame, None]` - The method processes the latest image in the context and yields frames with analysis results From b669e3a481e848806b3ea1c5295e8384228b654d Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Thu, 2 Oct 2025 15:45:53 -0400 Subject: [PATCH 4/4] Update name to Community Integrations and streamline guide --- ...TEGRATIONS.md => COMMUNITY_INTEGRATIONS.md | 44 +++++++++---------- CONTRIBUTING.md | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) rename THIRD_PARTY_INTEGRATIONS.md => COMMUNITY_INTEGRATIONS.md (88%) diff --git a/THIRD_PARTY_INTEGRATIONS.md b/COMMUNITY_INTEGRATIONS.md similarity index 88% rename from THIRD_PARTY_INTEGRATIONS.md rename to COMMUNITY_INTEGRATIONS.md index 5cf929602..218ae8443 100644 --- a/THIRD_PARTY_INTEGRATIONS.md +++ b/COMMUNITY_INTEGRATIONS.md @@ -1,22 +1,28 @@ -# Third-Party Integrations Guide +# Community Integrations Guide -Pipecat welcomes community-maintained integrations! As our ecosystem grows, we've established a process for third-party developers to create and maintain their own service integrations while ensuring discoverability for the community. +Pipecat welcomes community-maintained integrations! As our ecosystem grows, we've established a process for any developer to create and maintain their own service integrations while ensuring discoverability for the Pipecat community. ## Overview -**What we support:** Third-party maintained integrations that live in separate repositories and are maintained by their authors. +**What we support:** Community-maintained integrations that live in separate repositories and are maintained by their authors. -**What we don't do:** The Pipecat team does not review, test, or maintain third-party integrations. We provide guidance and list approved integrations for discoverability. +**What we don't do:** The Pipecat team does not code review, test, or maintain community integrations. We provide guidance and list approved integrations for discoverability. **Why this approach:** This allows the community to move quickly while keeping the Pipecat core team focused on maintaining the framework itself. -## Requirements for Third-Party Integration Listing +## Submitting your Integration -To be listed as an official third-party integration, your repository must contain: +To be listed as an official community integration, follow these steps: -### Required Components +### Step 1: Build Your Integration -- **Source code** - Complete implementation following Pipecat patterns (See the section below on "Integration Patterns and Examples") +Create your integration following the patterns and examples shown in the "Integration Patterns and Examples" section below. + +### Step 2: Set Up Your Repository + +Your repository must contain these components: + +- **Source code** - Complete implementation following Pipecat patterns - **Foundational example** - Single file example showing basic usage (see [Pipecat examples](https://github.com/pipecat-ai/pipecat/tree/main/examples/foundational)) - **README.md** - Must include: @@ -31,9 +37,13 @@ To be listed as an official third-party integration, your repository must contai - **Code documentation** - Source code with docstrings (we recommend following [Pipecat's docstring conventions](https://github.com/pipecat-ai/pipecat/blob/main/CONTRIBUTING.md#docstring-conventions)) - **Changelog** - Maintain a changelog for version updates -### Submission Information Required +### Step 3: Join Discord -When submitting your integration for listing, provide: +Join our Discord: https://discord.gg/pipecat + +### Step 4: Submit for Listing + +Post in the `#community-integrations` channel with: - Service name - Service type (STT, LLM, TTS, Image, etc.) @@ -42,16 +52,6 @@ When submitting your integration for listing, provide: - Core functionality of your integration - Handling of an interruption (if applicable to service type) -## Submission Process - -1. **Create your integration** following the patterns above -2. **Set up your repository** with all required components -3. **Join our Discord:** https://discord.gg/pipecat -4. **Submit for listing** in the `#third-party-integrations` channel with: - - Service name and type - - Repository link - - Maintainer GitHub usernames - ## Integration Patterns and Examples ### STT (Speech-to-Text) Services @@ -306,7 +306,7 @@ except Exception as e: ## Disclaimer -Third-party integrations are community-maintained and not officially supported by the Pipecat team. Users should evaluate these integrations independently. The Pipecat team reserves the right to remove listings that become unmaintained or problematic. +Community integrations are community-maintained and not officially supported by the Pipecat team. Users should evaluate these integrations independently. The Pipecat team reserves the right to remove listings that become unmaintained or problematic. ## Staying Up to Date @@ -323,6 +323,6 @@ This helps ensure your integration remains compatible and your users have clear ## Questions? -Join our Discord community at https://discord.gg/pipecat and post in the `#third-party-integrations` channel for guidance and support. +Join our Discord community at https://discord.gg/pipecat and post in the `#community-integrations` channel for guidance and support. For additional questions, you can also reach out to us at pipecat-ai@daily.co. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 16f5a8d39..7a17dff7a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ ## Contributing to Pipecat **Want to add a new service integration?** -We encourage community-maintained integrations! Please see our [Third-Party Integration Guide](THIRD_PARTY_INTEGRATIONS.md) for the process and requirements. +We encourage community-maintained integrations! Please see our [Community Integration Guide](COMMUNITY_INTEGRATIONS.md) for the process and requirements. **Want to contribute to Pipecat core?** We welcome contributions of all kinds! Your help is appreciated. Follow these steps to get involved: