pipecatcloud 0.0.8__tar.gz → 0.0.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pipecatcloud-0.0.10/.github/workflows/publish-pypi.yml +59 -0
- pipecatcloud-0.0.10/.github/workflows/publish-test.yml +59 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/.github/workflows/python-publish.yml +1 -13
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/CHANGELOG.md +34 -0
- pipecatcloud-0.0.10/LICENSE +24 -0
- pipecatcloud-0.0.10/PKG-INFO +95 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/README.md +33 -25
- pipecatcloud-0.0.10/publish-pypi.yml +59 -0
- pipecatcloud-0.0.10/publish-test.yml +59 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/pyproject.toml +13 -6
- pipecatcloud-0.0.10/src/pipecatcloud/__init__.py +33 -0
- pipecatcloud-0.0.10/src/pipecatcloud/_utils/console_utils.py +124 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/_utils/deploy_utils.py +3 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/api.py +67 -11
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/__init__.py +1 -1
- pipecatcloud-0.0.10/src/pipecatcloud/cli/commands/agent.py +503 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/commands/deploy.py +7 -37
- pipecatcloud-0.0.10/src/pipecatcloud/cli/commands/init.py +112 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/commands/organizations.py +1 -1
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/commands/secrets.py +0 -7
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/entry_point.py +2 -2
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/config.py +3 -3
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/exception.py +14 -12
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/session.py +19 -10
- pipecatcloud-0.0.10/src/pipecatcloud.egg-info/PKG-INFO +95 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud.egg-info/SOURCES.txt +5 -2
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud.egg-info/entry_points.txt +1 -1
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud.egg-info/requires.txt +3 -3
- pipecatcloud-0.0.8/PKG-INFO +0 -13
- pipecatcloud-0.0.8/src/pipecatcloud/__init__.py +0 -7
- pipecatcloud-0.0.8/src/pipecatcloud/_utils/agent_utils.py +0 -9
- pipecatcloud-0.0.8/src/pipecatcloud/_utils/console_utils.py +0 -76
- pipecatcloud-0.0.8/src/pipecatcloud/cli/commands/agent.py +0 -373
- pipecatcloud-0.0.8/src/pipecatcloud/cli/commands/init.py +0 -16
- pipecatcloud-0.0.8/src/pipecatcloud/errors.py +0 -11
- pipecatcloud-0.0.8/src/pipecatcloud.egg-info/PKG-INFO +0 -13
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/.gitignore +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/dev-requirements.txt +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/pipecat-cloud.png +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/setup.cfg +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/__main__.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/__version__.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/_utils/__init__.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/_utils/async_utils.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/_utils/auth_utils.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/_utils/local_runner.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/api.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/commands/__init__.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/commands/auth.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/commands/run.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud/cli/config.py +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud.egg-info/dependency_links.txt +0 -0
- {pipecatcloud-0.0.8 → pipecatcloud-0.0.10}/src/pipecatcloud.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: 'Version to publish (must match pyproject.toml, e.g. 0.0.4)'
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-and-publish:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
environment:
|
|
15
|
+
name: pypi
|
|
16
|
+
url: https://pypi.org/p/pipecat-cloud
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write # IMPORTANT: this permission is needed for trusted publishing
|
|
19
|
+
contents: write # Needed for tagging
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout code
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@v4
|
|
27
|
+
with:
|
|
28
|
+
python-version: '3.10'
|
|
29
|
+
|
|
30
|
+
- name: Verify version matches
|
|
31
|
+
run: |
|
|
32
|
+
pip install tomli
|
|
33
|
+
PROJECT_VERSION=$(python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
|
|
34
|
+
if [ "$PROJECT_VERSION" != "${{ github.event.inputs.version }}" ]; then
|
|
35
|
+
echo "Error: Input version (${{ github.event.inputs.version }}) does not match pyproject.toml version ($PROJECT_VERSION)"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install --upgrade pip
|
|
42
|
+
pip install -r requirements.txt
|
|
43
|
+
pip install build twine
|
|
44
|
+
|
|
45
|
+
- name: Build package
|
|
46
|
+
run: python -m build
|
|
47
|
+
|
|
48
|
+
- name: Create release tag
|
|
49
|
+
run: |
|
|
50
|
+
git config --local user.email "action@github.com"
|
|
51
|
+
git config --local user.name "GitHub Action"
|
|
52
|
+
git tag -a "v${{ github.event.inputs.version }}" -m "Version ${{ github.event.inputs.version }}"
|
|
53
|
+
git push origin "v${{ github.event.inputs.version }}"
|
|
54
|
+
|
|
55
|
+
- name: Publish to PyPI
|
|
56
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
57
|
+
with:
|
|
58
|
+
verbose: true
|
|
59
|
+
print-hash: true
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Publish to TEST PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: 'Version to publish (must match pyproject.toml, e.g. 0.0.4)'
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-and-publish:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
environment:
|
|
15
|
+
name: pypi
|
|
16
|
+
url: https://test.pypi.org/project/pipecat-cloud
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write # IMPORTANT: this permission is needed for trusted publishing
|
|
19
|
+
contents: write # Needed for tagging
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout code
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@v4
|
|
27
|
+
with:
|
|
28
|
+
python-version: '3.10'
|
|
29
|
+
|
|
30
|
+
- name: Verify version matches
|
|
31
|
+
run: |
|
|
32
|
+
pip install tomli
|
|
33
|
+
PROJECT_VERSION=$(python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
|
|
34
|
+
if [ "$PROJECT_VERSION" != "${{ github.event.inputs.version }}" ]; then
|
|
35
|
+
echo "Error: Input version (${{ github.event.inputs.version }}) does not match pyproject.toml version ($PROJECT_VERSION)"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install --upgrade pip
|
|
42
|
+
pip install -r requirements.txt
|
|
43
|
+
pip install build twine
|
|
44
|
+
|
|
45
|
+
- name: Build package
|
|
46
|
+
run: python -m build
|
|
47
|
+
|
|
48
|
+
- name: Create release tag
|
|
49
|
+
run: |
|
|
50
|
+
git config --local user.email "action@github.com"
|
|
51
|
+
git config --local user.name "GitHub Action"
|
|
52
|
+
git tag -a "v${{ github.event.inputs.version }}" -m "Version ${{ github.event.inputs.version }}"
|
|
53
|
+
git push origin "v${{ github.event.inputs.version }}"
|
|
54
|
+
|
|
55
|
+
- name: Publish to PyPI
|
|
56
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
57
|
+
with:
|
|
58
|
+
verbose: true
|
|
59
|
+
print-hash: true
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
|
|
50
50
|
environment:
|
|
51
51
|
name: pypi
|
|
52
|
-
url: https://pypi.org/p/
|
|
52
|
+
url: https://pypi.org/p/pipecat-cloud
|
|
53
53
|
|
|
54
54
|
steps:
|
|
55
55
|
- uses: actions/checkout@v4
|
|
@@ -65,23 +65,11 @@ jobs:
|
|
|
65
65
|
with:
|
|
66
66
|
packages-dir: dist/
|
|
67
67
|
|
|
68
|
-
- name: Read CHANGELOG
|
|
69
|
-
id: changelog
|
|
70
|
-
run: |
|
|
71
|
-
if [ -f "CHANGELOG.md" ]; then
|
|
72
|
-
CHANGELOG_CONTENT=$(cat CHANGELOG.md)
|
|
73
|
-
echo "CHANGELOG_CONTENT=${CHANGELOG_CONTENT}" >> $GITHUB_ENV
|
|
74
|
-
else
|
|
75
|
-
echo "CHANGELOG_CONTENT=No changelog available." >> $GITHUB_ENV
|
|
76
|
-
fi
|
|
77
|
-
|
|
78
68
|
- name: Create GitHub Release
|
|
79
69
|
uses: softprops/action-gh-release@v2
|
|
80
70
|
with:
|
|
81
71
|
tag_name: ${{ github.ref }}
|
|
82
72
|
name: Release ${{ github.ref_name }}
|
|
83
|
-
body: |
|
|
84
|
-
${{ env.CHANGELOG_CONTENT }}
|
|
85
73
|
draft: false
|
|
86
74
|
prerelease: false
|
|
87
75
|
files: |
|
|
@@ -5,6 +5,40 @@ All notable changes to **Pipecat Cloud** will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.0.10] - 2025-03-04
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- `init` convenience command will now populate the working directory with files from the starter project
|
|
12
|
+
- `agent log` allows for optional severity level filtering
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- `agent status` and `deploy` no longer show superfluous data
|
|
16
|
+
- `session.py` now correctly handles errors when starting agents
|
|
17
|
+
- `secrets set` no longer prompts twice for confirmation if the secret set does not exist
|
|
18
|
+
|
|
19
|
+
### Removed
|
|
20
|
+
- `errors.py` removed as redundant (error message and code returned via API)
|
|
21
|
+
- `agent_utils.py` removed as redundant (error message and code returned via API)
|
|
22
|
+
|
|
23
|
+
## [0.0.9] - 2025-02-27
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- `agent status [agent-name]` now shows deployment info and scaling configuration
|
|
27
|
+
- `agent sessions [agent-name]` lists active session count for an agent (will list session details in future)
|
|
28
|
+
- `agent start [agent-name] -D` now shows the Daily room URL (and token) to join in the terminal output
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
- Changed CLI command from `pipecat` to `pipecatcloud` or `pcc`
|
|
32
|
+
- `agent delete` prompts the user for confirmation first
|
|
33
|
+
- `agent start` now checks the target deployment first to ensure it exists and is in a healthy state
|
|
34
|
+
- Changed the information order of `agent status` so the health badge is clearly visible in terminal
|
|
35
|
+
- `agent deploy` now defaults to "Y" for the confirmation prompts
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
- Fixed lint error with payload data in `agent start`
|
|
39
|
+
- Fixed a bug where `pcc-deploy.toml` files were required to be present
|
|
40
|
+
- `deploy` command now correctly passes the secret set to the deployment from the `pcc-deploy.toml` file
|
|
41
|
+
|
|
8
42
|
## [0.0.8] - 2025-02-03
|
|
9
43
|
|
|
10
44
|
### Added
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
BSD 2-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024, Daily
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
19
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
20
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
21
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
22
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
23
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
24
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: pipecatcloud
|
|
3
|
+
Version: 0.0.10
|
|
4
|
+
Summary: Cloud hosting for Pipecat AI applications
|
|
5
|
+
License: BSD 2-Clause License
|
|
6
|
+
Project-URL: Website, https://docs.pipecat.daily.co/
|
|
7
|
+
Keywords: pipecat,pipecat-ai,voice,ai,llm
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: aiohttp<4.0.0,~=3.11.13
|
|
12
|
+
Requires-Dist: fastapi~=0.115.6
|
|
13
|
+
Requires-Dist: loguru~=0.7.3
|
|
14
|
+
Requires-Dist: python-dotenv~=1.0.1
|
|
15
|
+
Requires-Dist: uvicorn~=0.32.0
|
|
16
|
+
Requires-Dist: typer~=0.13.0
|
|
17
|
+
Requires-Dist: synchronicity~=0.7.6
|
|
18
|
+
Requires-Dist: toml~=0.10.2
|
|
19
|
+
Requires-Dist: questionary~=2.1.0
|
|
20
|
+
|
|
21
|
+
<h1><div align="center">
|
|
22
|
+
<img alt="pipecat cloud" width="500px" height="auto" src="./pipecat-cloud.png">
|
|
23
|
+
</div></h1>
|
|
24
|
+
|
|
25
|
+
[](https://docs.pipecat.daily.co)
|
|
26
|
+
[](https://pypi.org/project/pipecatcloud)
|
|
27
|
+
|
|
28
|
+
# Pipecat Cloud
|
|
29
|
+
|
|
30
|
+
Python module and CLI for interacting with [Pipecat Cloud](https://pipecat.daily.co).
|
|
31
|
+
|
|
32
|
+
### Requirements
|
|
33
|
+
|
|
34
|
+
- Python 3.10+
|
|
35
|
+
- Docker and a Docker repository (e.g. Docker Hub)
|
|
36
|
+
- Active [Pipecat Cloud](https://pipecat.daily.co)
|
|
37
|
+
account
|
|
38
|
+
|
|
39
|
+
### Documentation
|
|
40
|
+
|
|
41
|
+
Documentation for Pipecat Cloud is available [here](https://docs.pipecat.daily.co).
|
|
42
|
+
|
|
43
|
+
### Installation
|
|
44
|
+
|
|
45
|
+
```shell
|
|
46
|
+
pip install pipecatcloud
|
|
47
|
+
|
|
48
|
+
pcc --version
|
|
49
|
+
pcc --help
|
|
50
|
+
|
|
51
|
+
# Note: you can use `pcc` or `pipecatcloud` interchangeably
|
|
52
|
+
pcc auth login
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
! All CLI commands have a `--help` flag that will display the command usage and options.
|
|
56
|
+
|
|
57
|
+
## Usage
|
|
58
|
+
|
|
59
|
+
1. Create an account at [Pipecat Cloud](https://pipecat.daily.co)
|
|
60
|
+
|
|
61
|
+
2. Login to your account `pcc auth login`
|
|
62
|
+
|
|
63
|
+
3. (Optional): Clone the starter agent [here](https://github.com/daily-co/pipecat-cloud-starter)
|
|
64
|
+
|
|
65
|
+
4. Build your agent `docker build --platform linux/arm64 -t your-agent-name .`
|
|
66
|
+
|
|
67
|
+
5. Push your Docker image to your repository `docker push your-repository/your-agent-name:0.1`
|
|
68
|
+
|
|
69
|
+
6. Deploy your agent `pcc deploy starter-agent your-repository/your-agent-name:0.1`
|
|
70
|
+
|
|
71
|
+
### Usage in Python scripts
|
|
72
|
+
|
|
73
|
+
If want to programmatically start an agent within a Python script, you can use the `pipecatcloud.session` module.
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
from pipecatcloud.session import Session
|
|
77
|
+
from pipecatcloud.exception import AgentStartError
|
|
78
|
+
import asyncio
|
|
79
|
+
|
|
80
|
+
async def main():
|
|
81
|
+
session = Session(
|
|
82
|
+
agent_name="your-agent-name",
|
|
83
|
+
api_key="pk_...",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
await session.start()
|
|
88
|
+
except AgentStartError as e:
|
|
89
|
+
print(e)
|
|
90
|
+
except Exception as e:
|
|
91
|
+
raise (e)
|
|
92
|
+
|
|
93
|
+
if __name__ == "__main__":
|
|
94
|
+
asyncio.run(main())
|
|
95
|
+
```
|
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
|
|
2
1
|
<h1><div align="center">
|
|
3
2
|
<img alt="pipecat cloud" width="500px" height="auto" src="./pipecat-cloud.png">
|
|
4
3
|
</div></h1>
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
[](https://docs.pipecat.cloud)
|
|
5
|
+
[](https://docs.pipecat.daily.co)
|
|
8
6
|
[](https://pypi.org/project/pipecatcloud)
|
|
9
7
|
|
|
10
8
|
# Pipecat Cloud
|
|
11
9
|
|
|
12
|
-
Python module and CLI for interacting with [Pipecat Cloud](https://pipecat.
|
|
10
|
+
Python module and CLI for interacting with [Pipecat Cloud](https://pipecat.daily.co).
|
|
13
11
|
|
|
14
12
|
### Requirements
|
|
15
13
|
|
|
16
14
|
- Python 3.10+
|
|
17
15
|
- Docker and a Docker repository (e.g. Docker Hub)
|
|
18
|
-
- Active [Pipecat Cloud](https://
|
|
19
|
-
|
|
16
|
+
- Active [Pipecat Cloud](https://pipecat.daily.co)
|
|
17
|
+
account
|
|
20
18
|
|
|
21
19
|
### Documentation
|
|
22
20
|
|
|
23
|
-
Documentation for Pipecat Cloud is available [here](https://docs.pipecat.
|
|
21
|
+
Documentation for Pipecat Cloud is available [here](https://docs.pipecat.daily.co).
|
|
24
22
|
|
|
25
23
|
### Installation
|
|
26
24
|
|
|
27
25
|
```shell
|
|
28
26
|
pip install pipecatcloud
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
pcc --version
|
|
29
|
+
pcc --help
|
|
32
30
|
|
|
33
|
-
# Note: you can use `
|
|
31
|
+
# Note: you can use `pcc` or `pipecatcloud` interchangeably
|
|
34
32
|
pcc auth login
|
|
35
33
|
```
|
|
36
34
|
|
|
@@ -38,30 +36,40 @@ pcc auth login
|
|
|
38
36
|
|
|
39
37
|
## Usage
|
|
40
38
|
|
|
41
|
-
1. Create an account at [Pipecat Cloud](https://pipecat.
|
|
39
|
+
1. Create an account at [Pipecat Cloud](https://pipecat.daily.co)
|
|
42
40
|
|
|
43
|
-
2. Login to your account `
|
|
41
|
+
2. Login to your account `pcc auth login`
|
|
44
42
|
|
|
45
|
-
3. (Optional): Clone the starter agent [here](https://github.com/
|
|
43
|
+
3. (Optional): Clone the starter agent [here](https://github.com/daily-co/pipecat-cloud-starter)
|
|
46
44
|
|
|
47
45
|
4. Build your agent `docker build --platform linux/arm64 -t your-agent-name .`
|
|
48
46
|
|
|
49
47
|
5. Push your Docker image to your repository `docker push your-repository/your-agent-name:0.1`
|
|
50
48
|
|
|
51
|
-
6. Deploy your agent `
|
|
49
|
+
6. Deploy your agent `pcc deploy starter-agent your-repository/your-agent-name:0.1`
|
|
52
50
|
|
|
53
51
|
### Usage in Python scripts
|
|
54
52
|
|
|
55
|
-
If want to programmatically start an agent within a Python script, you can use the `pipecatcloud.
|
|
53
|
+
If want to programmatically start an agent within a Python script, you can use the `pipecatcloud.session` module.
|
|
56
54
|
|
|
57
55
|
```python
|
|
58
|
-
from pipecatcloud.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
56
|
+
from pipecatcloud.session import Session
|
|
57
|
+
from pipecatcloud.exception import AgentStartError
|
|
58
|
+
import asyncio
|
|
59
|
+
|
|
60
|
+
async def main():
|
|
61
|
+
session = Session(
|
|
62
|
+
agent_name="your-agent-name",
|
|
63
|
+
api_key="pk_...",
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
try:
|
|
67
|
+
await session.start()
|
|
68
|
+
except AgentStartError as e:
|
|
69
|
+
print(e)
|
|
70
|
+
except Exception as e:
|
|
71
|
+
raise (e)
|
|
72
|
+
|
|
73
|
+
if __name__ == "__main__":
|
|
74
|
+
asyncio.run(main())
|
|
75
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: 'Version to publish (must match pyproject.toml, e.g. 0.0.4)'
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-and-publish:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
environment:
|
|
15
|
+
name: pypi
|
|
16
|
+
url: https://pypi.org/p/pipecat-cloud
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write # IMPORTANT: this permission is needed for trusted publishing
|
|
19
|
+
contents: write # Needed for tagging
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout code
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@v4
|
|
27
|
+
with:
|
|
28
|
+
python-version: '3.10'
|
|
29
|
+
|
|
30
|
+
- name: Verify version matches
|
|
31
|
+
run: |
|
|
32
|
+
pip install tomli
|
|
33
|
+
PROJECT_VERSION=$(python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
|
|
34
|
+
if [ "$PROJECT_VERSION" != "${{ github.event.inputs.version }}" ]; then
|
|
35
|
+
echo "Error: Input version (${{ github.event.inputs.version }}) does not match pyproject.toml version ($PROJECT_VERSION)"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install --upgrade pip
|
|
42
|
+
pip install -r requirements.txt
|
|
43
|
+
pip install build twine
|
|
44
|
+
|
|
45
|
+
- name: Build package
|
|
46
|
+
run: python -m build
|
|
47
|
+
|
|
48
|
+
- name: Create release tag
|
|
49
|
+
run: |
|
|
50
|
+
git config --local user.email "action@github.com"
|
|
51
|
+
git config --local user.name "GitHub Action"
|
|
52
|
+
git tag -a "v${{ github.event.inputs.version }}" -m "Version ${{ github.event.inputs.version }}"
|
|
53
|
+
git push origin "v${{ github.event.inputs.version }}"
|
|
54
|
+
|
|
55
|
+
- name: Publish to PyPI
|
|
56
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
57
|
+
with:
|
|
58
|
+
verbose: true
|
|
59
|
+
print-hash: true
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Publish to TEST PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: 'Version to publish (must match pyproject.toml, e.g. 0.0.4)'
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-and-publish:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
environment:
|
|
15
|
+
name: pypi
|
|
16
|
+
url: https://test.pypi.org/project/pipecat-cloud
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write # IMPORTANT: this permission is needed for trusted publishing
|
|
19
|
+
contents: write # Needed for tagging
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout code
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@v4
|
|
27
|
+
with:
|
|
28
|
+
python-version: '3.10'
|
|
29
|
+
|
|
30
|
+
- name: Verify version matches
|
|
31
|
+
run: |
|
|
32
|
+
pip install tomli
|
|
33
|
+
PROJECT_VERSION=$(python -c "import tomli; print(tomli.load(open('pyproject.toml', 'rb'))['project']['version'])")
|
|
34
|
+
if [ "$PROJECT_VERSION" != "${{ github.event.inputs.version }}" ]; then
|
|
35
|
+
echo "Error: Input version (${{ github.event.inputs.version }}) does not match pyproject.toml version ($PROJECT_VERSION)"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install --upgrade pip
|
|
42
|
+
pip install -r requirements.txt
|
|
43
|
+
pip install build twine
|
|
44
|
+
|
|
45
|
+
- name: Build package
|
|
46
|
+
run: python -m build
|
|
47
|
+
|
|
48
|
+
- name: Create release tag
|
|
49
|
+
run: |
|
|
50
|
+
git config --local user.email "action@github.com"
|
|
51
|
+
git config --local user.name "GitHub Action"
|
|
52
|
+
git tag -a "v${{ github.event.inputs.version }}" -m "Version ${{ github.event.inputs.version }}"
|
|
53
|
+
git push origin "v${{ github.event.inputs.version }}"
|
|
54
|
+
|
|
55
|
+
- name: Publish to PyPI
|
|
56
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
57
|
+
with:
|
|
58
|
+
verbose: true
|
|
59
|
+
print-hash: true
|
|
@@ -4,23 +4,27 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pipecatcloud"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.10"
|
|
8
8
|
requires-python = ">=3.10"
|
|
9
|
+
description = "Cloud hosting for Pipecat AI applications"
|
|
10
|
+
license = { text = "BSD 2-Clause License" }
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
keywords = ["pipecat", "pipecat-ai", "voice", "ai", "llm"]
|
|
9
13
|
dependencies = [
|
|
10
|
-
"aiohttp~=3.
|
|
11
|
-
"fastapi~=0.115.
|
|
12
|
-
"loguru~=0.7.
|
|
14
|
+
"aiohttp~=3.11.13,<4.0.0",
|
|
15
|
+
"fastapi~=0.115.6",
|
|
16
|
+
"loguru~=0.7.3",
|
|
13
17
|
"python-dotenv~=1.0.1",
|
|
14
18
|
"uvicorn~=0.32.0",
|
|
15
19
|
"typer~=0.13.0",
|
|
16
20
|
"synchronicity~=0.7.6",
|
|
17
21
|
"toml~=0.10.2",
|
|
18
|
-
"questionary~=2.1.0"
|
|
22
|
+
"questionary~=2.1.0"
|
|
19
23
|
]
|
|
20
24
|
|
|
21
25
|
[project.scripts]
|
|
22
26
|
pcc = "pipecatcloud.__main__:main"
|
|
23
|
-
|
|
27
|
+
pipecatcloud = "pipecatcloud.__main__:main"
|
|
24
28
|
|
|
25
29
|
[tool.setuptools]
|
|
26
30
|
package-dir = {"" = "src"}
|
|
@@ -32,3 +36,6 @@ include = ["pipecatcloud*"]
|
|
|
32
36
|
[tool.ruff]
|
|
33
37
|
exclude = ["*_pb2.py"]
|
|
34
38
|
line-length = 100
|
|
39
|
+
|
|
40
|
+
[project.urls]
|
|
41
|
+
Website = "https://docs.pipecat.daily.co/"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
from loguru import logger
|
|
5
|
+
|
|
6
|
+
from .exception import (
|
|
7
|
+
AgentNotHealthyError,
|
|
8
|
+
AgentStartError,
|
|
9
|
+
AuthError,
|
|
10
|
+
ConfigError,
|
|
11
|
+
ConfigFileError,
|
|
12
|
+
Error,
|
|
13
|
+
InvalidError,
|
|
14
|
+
)
|
|
15
|
+
from .session import Session, SessionParams
|
|
16
|
+
|
|
17
|
+
logger.remove()
|
|
18
|
+
logger.add(sys.stderr, level=str(os.getenv("PCC_LOG_LEVEL", "INFO")))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
# Session classes
|
|
23
|
+
"Session",
|
|
24
|
+
"SessionParams",
|
|
25
|
+
# Exception classes
|
|
26
|
+
"Error",
|
|
27
|
+
"ConfigFileError",
|
|
28
|
+
"AuthError",
|
|
29
|
+
"InvalidError",
|
|
30
|
+
"ConfigError",
|
|
31
|
+
"AgentNotHealthyError",
|
|
32
|
+
"AgentStartError",
|
|
33
|
+
]
|