pipecat-ai-tail 0.0.0.dev0__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.
- pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/1-bug_report.yml +105 -0
- pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/2-question.yml +85 -0
- pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/3-feature_request.yml +52 -0
- pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/config.yml +1 -0
- pipecat_ai_tail-0.0.0.dev0/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- pipecat_ai_tail-0.0.0.dev0/.github/workflows/build.yaml +39 -0
- pipecat_ai_tail-0.0.0.dev0/.github/workflows/format.yaml +43 -0
- pipecat_ai_tail-0.0.0.dev0/.github/workflows/publish.yaml +60 -0
- pipecat_ai_tail-0.0.0.dev0/.gitignore +34 -0
- pipecat_ai_tail-0.0.0.dev0/CHANGELOG.md +10 -0
- pipecat_ai_tail-0.0.0.dev0/CHANGELOG.md.template +62 -0
- pipecat_ai_tail-0.0.0.dev0/LICENSE +24 -0
- pipecat_ai_tail-0.0.0.dev0/PKG-INFO +105 -0
- pipecat_ai_tail-0.0.0.dev0/README.md +82 -0
- pipecat_ai_tail-0.0.0.dev0/pyproject.toml +77 -0
- pipecat_ai_tail-0.0.0.dev0/setup.cfg +4 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/PKG-INFO +105 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/SOURCES.txt +41 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/dependency_links.txt +1 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/entry_points.txt +3 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/requires.txt +4 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/top_level.txt +1 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/__init__.py +0 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/app.py +437 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/cli.py +123 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/observer.py +141 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/py.typed +0 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/rtvi.py +41 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/runner.py +189 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/tail.tcss +56 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/__init__.py +0 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/audio_level.py +62 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/conversation.py +87 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/llm_service_info.py +92 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/service_metrics.py +92 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/streaming_log.py +182 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/system_info.py +66 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/system_logs.py +32 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/system_status.py +67 -0
- pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/tts_service_info.py +64 -0
- pipecat_ai_tail-0.0.0.dev0/tail-image.gif +0 -0
- pipecat_ai_tail-0.0.0.dev0/tail.png +0 -0
- pipecat_ai_tail-0.0.0.dev0/uv.lock +2145 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a bug or unexpected behavior
|
|
3
|
+
type: Bug
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
## Bug Report
|
|
9
|
+
|
|
10
|
+
Thank you for taking the time to fill out this bug report.
|
|
11
|
+
|
|
12
|
+
- type: markdown
|
|
13
|
+
attributes:
|
|
14
|
+
value: |
|
|
15
|
+
### Environment
|
|
16
|
+
|
|
17
|
+
- type: input
|
|
18
|
+
id: tail-version
|
|
19
|
+
attributes:
|
|
20
|
+
label: tail version
|
|
21
|
+
description: Which version are you using?
|
|
22
|
+
placeholder: e.g., 0.0.1
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
|
|
26
|
+
- type: input
|
|
27
|
+
id: pipecat-version
|
|
28
|
+
attributes:
|
|
29
|
+
label: tail version
|
|
30
|
+
description: Which Pipecat version are you using?
|
|
31
|
+
placeholder: e.g., 0.0.81
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
|
|
35
|
+
- type: input
|
|
36
|
+
id: python-version
|
|
37
|
+
attributes:
|
|
38
|
+
label: Python version
|
|
39
|
+
description: Which Python version are you using?
|
|
40
|
+
placeholder: e.g., 3.12.8
|
|
41
|
+
validations:
|
|
42
|
+
required: true
|
|
43
|
+
|
|
44
|
+
- type: input
|
|
45
|
+
id: os
|
|
46
|
+
attributes:
|
|
47
|
+
label: Operating System
|
|
48
|
+
description: Which OS are you using?
|
|
49
|
+
placeholder: e.g., Ubuntu 24.04, Windows 11, macOS 12.5
|
|
50
|
+
validations:
|
|
51
|
+
required: true
|
|
52
|
+
|
|
53
|
+
- type: input
|
|
54
|
+
id: browser
|
|
55
|
+
attributes:
|
|
56
|
+
label: Browser
|
|
57
|
+
description: Which browser are you using?
|
|
58
|
+
placeholder: e.g., Chrome 139.0.7258.127
|
|
59
|
+
validations:
|
|
60
|
+
required: true
|
|
61
|
+
|
|
62
|
+
- type: textarea
|
|
63
|
+
id: description
|
|
64
|
+
attributes:
|
|
65
|
+
label: Issue description
|
|
66
|
+
description: Provide a clear description of the issue.
|
|
67
|
+
validations:
|
|
68
|
+
required: true
|
|
69
|
+
|
|
70
|
+
- type: textarea
|
|
71
|
+
id: repro
|
|
72
|
+
attributes:
|
|
73
|
+
label: Reproduction steps
|
|
74
|
+
description: List the steps to reproduce the issue.
|
|
75
|
+
placeholder: |
|
|
76
|
+
1. Do this...
|
|
77
|
+
2. Then do that...
|
|
78
|
+
3. Observe the error...
|
|
79
|
+
validations:
|
|
80
|
+
required: true
|
|
81
|
+
|
|
82
|
+
- type: textarea
|
|
83
|
+
id: expected
|
|
84
|
+
attributes:
|
|
85
|
+
label: Expected behavior
|
|
86
|
+
description: What did you expect to happen?
|
|
87
|
+
validations:
|
|
88
|
+
required: true
|
|
89
|
+
|
|
90
|
+
- type: textarea
|
|
91
|
+
id: actual
|
|
92
|
+
attributes:
|
|
93
|
+
label: Actual behavior
|
|
94
|
+
description: What actually happened?
|
|
95
|
+
validations:
|
|
96
|
+
required: true
|
|
97
|
+
|
|
98
|
+
- type: textarea
|
|
99
|
+
id: logs
|
|
100
|
+
attributes:
|
|
101
|
+
label: Logs
|
|
102
|
+
description: If applicable, include any relevant logs or error messages
|
|
103
|
+
render: shell
|
|
104
|
+
validations:
|
|
105
|
+
required: false
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: Question
|
|
2
|
+
description: Ask a question or get help
|
|
3
|
+
type: Question
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
## Question
|
|
9
|
+
|
|
10
|
+
Use this form to ask a question about pipecat.
|
|
11
|
+
|
|
12
|
+
- type: markdown
|
|
13
|
+
attributes:
|
|
14
|
+
value: |
|
|
15
|
+
### Environment (if applicable)
|
|
16
|
+
|
|
17
|
+
- type: input
|
|
18
|
+
id: tail-version
|
|
19
|
+
attributes:
|
|
20
|
+
label: tail version
|
|
21
|
+
description: Which version are you using?
|
|
22
|
+
placeholder: e.g., 0.0.1
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
|
|
26
|
+
- type: input
|
|
27
|
+
id: pipecat-version
|
|
28
|
+
attributes:
|
|
29
|
+
label: tail version
|
|
30
|
+
description: Which Pipecat version are you using?
|
|
31
|
+
placeholder: e.g., 0.0.81
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
|
|
35
|
+
- type: input
|
|
36
|
+
id: python-version
|
|
37
|
+
attributes:
|
|
38
|
+
label: Python version
|
|
39
|
+
description: Which Python version are you using? (if applicable)
|
|
40
|
+
placeholder: e.g., 3.12.8
|
|
41
|
+
validations:
|
|
42
|
+
required: false
|
|
43
|
+
|
|
44
|
+
- type: input
|
|
45
|
+
id: os
|
|
46
|
+
attributes:
|
|
47
|
+
label: Operating System
|
|
48
|
+
description: Which OS are you using? (if applicable)
|
|
49
|
+
placeholder: e.g., Ubuntu 24.04, Windows 11, macOS 12.5
|
|
50
|
+
validations:
|
|
51
|
+
required: false
|
|
52
|
+
|
|
53
|
+
- type: input
|
|
54
|
+
id: browser
|
|
55
|
+
attributes:
|
|
56
|
+
label: Browser
|
|
57
|
+
description: Which browser are you using?
|
|
58
|
+
placeholder: e.g., Chrome 139.0.7258.127
|
|
59
|
+
validations:
|
|
60
|
+
required: false
|
|
61
|
+
|
|
62
|
+
- type: textarea
|
|
63
|
+
id: question
|
|
64
|
+
attributes:
|
|
65
|
+
label: Question
|
|
66
|
+
description: Provide your question in detail here.
|
|
67
|
+
validations:
|
|
68
|
+
required: true
|
|
69
|
+
|
|
70
|
+
- type: textarea
|
|
71
|
+
id: tried
|
|
72
|
+
attributes:
|
|
73
|
+
label: What I've tried
|
|
74
|
+
description: Describe what you've already tried or research you've done.
|
|
75
|
+
placeholder: I've looked at the documentation and tried...
|
|
76
|
+
validations:
|
|
77
|
+
required: false
|
|
78
|
+
|
|
79
|
+
- type: textarea
|
|
80
|
+
id: context
|
|
81
|
+
attributes:
|
|
82
|
+
label: Context
|
|
83
|
+
description: Any additional context or information that might help others understand your question better.
|
|
84
|
+
validations:
|
|
85
|
+
required: false
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest an enhancement or new feature
|
|
3
|
+
type: Enhancement
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
## Feature Request
|
|
9
|
+
|
|
10
|
+
Thank you for suggesting an enhancement to pipecat.
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: problem
|
|
14
|
+
attributes:
|
|
15
|
+
label: Problem Statement
|
|
16
|
+
description: A clear description of the problem this feature would solve.
|
|
17
|
+
placeholder: I'm always frustrated when...
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: solution
|
|
23
|
+
attributes:
|
|
24
|
+
label: Proposed Solution
|
|
25
|
+
description: A clear and concise description of what you want to happen.
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
|
|
29
|
+
- type: textarea
|
|
30
|
+
id: alternatives
|
|
31
|
+
attributes:
|
|
32
|
+
label: Alternative Solutions
|
|
33
|
+
description: Any alternative solutions or features you've considered.
|
|
34
|
+
validations:
|
|
35
|
+
required: false
|
|
36
|
+
|
|
37
|
+
- type: textarea
|
|
38
|
+
id: context
|
|
39
|
+
attributes:
|
|
40
|
+
label: Additional Context
|
|
41
|
+
description: Add any other context, mockups, or screenshots about the feature request here.
|
|
42
|
+
placeholder: You can drag and drop images here to include them.
|
|
43
|
+
validations:
|
|
44
|
+
required: false
|
|
45
|
+
|
|
46
|
+
- type: checkboxes
|
|
47
|
+
id: contribution
|
|
48
|
+
attributes:
|
|
49
|
+
label: Would you be willing to help implement this feature?
|
|
50
|
+
options:
|
|
51
|
+
- label: Yes, I'd like to contribute
|
|
52
|
+
- label: No, I'm just suggesting
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#### Please describe the changes in your PR. If it is addressing an issue, please reference that as well.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: build
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- "**"
|
|
11
|
+
- "ui/**"
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: build-${{ github.event.pull_request.number || github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: "Build and Install"
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v3
|
|
26
|
+
with:
|
|
27
|
+
version: "latest"
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
run: uv python install 3.10
|
|
31
|
+
|
|
32
|
+
- name: Install development dependencies
|
|
33
|
+
run: uv sync --group dev
|
|
34
|
+
|
|
35
|
+
- name: Build project
|
|
36
|
+
run: uv build
|
|
37
|
+
|
|
38
|
+
- name: Install project in editable mode
|
|
39
|
+
run: uv pip install --editable .
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: format
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- "**"
|
|
11
|
+
paths-ignore:
|
|
12
|
+
- "ui/**"
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: build-format-${{ github.event.pull_request.number || github.ref }}
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
ruff-format:
|
|
20
|
+
name: "Python code quality checks"
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout repo
|
|
24
|
+
uses: actions/checkout@v4
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v3
|
|
28
|
+
with:
|
|
29
|
+
version: "latest"
|
|
30
|
+
|
|
31
|
+
- name: Set up Python
|
|
32
|
+
run: uv python install 3.10
|
|
33
|
+
|
|
34
|
+
- name: Install development dependencies
|
|
35
|
+
run: uv sync --group dev
|
|
36
|
+
|
|
37
|
+
- name: Ruff formatter
|
|
38
|
+
id: ruff-format
|
|
39
|
+
run: uv run ruff format --diff
|
|
40
|
+
|
|
41
|
+
- name: Ruff linter (all rules)
|
|
42
|
+
id: ruff-check
|
|
43
|
+
run: uv run ruff check
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
gitref:
|
|
7
|
+
type: string
|
|
8
|
+
description: "what git tag to build (e.g. v0.0.1)"
|
|
9
|
+
required: true
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build:
|
|
13
|
+
name: "Build and upload wheels"
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout repo
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
ref: ${{ github.event.inputs.gitref }}
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v3
|
|
23
|
+
with:
|
|
24
|
+
version: "latest"
|
|
25
|
+
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
run: uv python install 3.10
|
|
28
|
+
|
|
29
|
+
- name: Install development dependencies
|
|
30
|
+
run: uv sync --group dev
|
|
31
|
+
|
|
32
|
+
- name: Build project
|
|
33
|
+
run: uv build
|
|
34
|
+
|
|
35
|
+
- name: Upload wheels
|
|
36
|
+
uses: actions/upload-artifact@v4
|
|
37
|
+
with:
|
|
38
|
+
name: wheels
|
|
39
|
+
path: ./pipecat/dist
|
|
40
|
+
|
|
41
|
+
publish-to-pypi:
|
|
42
|
+
name: "Publish to PyPI"
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: [ build ]
|
|
45
|
+
environment:
|
|
46
|
+
name: pypi
|
|
47
|
+
url: https://pypi.org/p/pipecat-ai-tail
|
|
48
|
+
permissions:
|
|
49
|
+
id-token: write
|
|
50
|
+
steps:
|
|
51
|
+
- name: Download wheels
|
|
52
|
+
uses: actions/download-artifact@v4
|
|
53
|
+
with:
|
|
54
|
+
name: wheels
|
|
55
|
+
path: ./dist
|
|
56
|
+
- name: Publish to PyPI
|
|
57
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
58
|
+
with:
|
|
59
|
+
verbose: true
|
|
60
|
+
print-hash: true
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
.vscode
|
|
2
|
+
.idea
|
|
3
|
+
env/
|
|
4
|
+
__pycache__/
|
|
5
|
+
*~
|
|
6
|
+
venv
|
|
7
|
+
.venv
|
|
8
|
+
#*#
|
|
9
|
+
|
|
10
|
+
# Distribution / Packaging
|
|
11
|
+
.Python
|
|
12
|
+
build/
|
|
13
|
+
develop-eggs/
|
|
14
|
+
dist/
|
|
15
|
+
downloads/
|
|
16
|
+
eggs/
|
|
17
|
+
.eggs/
|
|
18
|
+
lib/
|
|
19
|
+
lib64/
|
|
20
|
+
parts/
|
|
21
|
+
sdist/
|
|
22
|
+
var/
|
|
23
|
+
wheels/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
.DS_Store
|
|
30
|
+
.env
|
|
31
|
+
.envrc
|
|
32
|
+
|
|
33
|
+
# uv
|
|
34
|
+
.python-version
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to **Tail** will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.0.1] - 2025-10-02
|
|
9
|
+
|
|
10
|
+
Initial public release.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the **<project name>** SDK will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
Please make sure to add your changes to the appropriate categories:
|
|
9
|
+
|
|
10
|
+
## [Unreleased]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
<!-- for new functionality -->
|
|
15
|
+
|
|
16
|
+
- n/a
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
<!-- for changed functionality -->
|
|
21
|
+
|
|
22
|
+
- n/a
|
|
23
|
+
|
|
24
|
+
### Deprecated
|
|
25
|
+
|
|
26
|
+
<!-- for soon-to-be removed functionality -->
|
|
27
|
+
|
|
28
|
+
- n/a
|
|
29
|
+
|
|
30
|
+
### Removed
|
|
31
|
+
|
|
32
|
+
<!-- for removed functionality -->
|
|
33
|
+
|
|
34
|
+
- n/a
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
<!-- for fixed bugs -->
|
|
39
|
+
|
|
40
|
+
- n/a
|
|
41
|
+
|
|
42
|
+
### Performance
|
|
43
|
+
|
|
44
|
+
<!-- for performance-relevant changes -->
|
|
45
|
+
|
|
46
|
+
- n/a
|
|
47
|
+
|
|
48
|
+
### Security
|
|
49
|
+
|
|
50
|
+
<!-- for security-relevant changes -->
|
|
51
|
+
|
|
52
|
+
- n/a
|
|
53
|
+
|
|
54
|
+
### Other
|
|
55
|
+
|
|
56
|
+
<!-- for everything else -->
|
|
57
|
+
|
|
58
|
+
- n/a
|
|
59
|
+
|
|
60
|
+
## [0.1.0] - YYYY-MM-DD
|
|
61
|
+
|
|
62
|
+
Initial release.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
BSD 2-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, 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,105 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pipecat-ai-tail
|
|
3
|
+
Version: 0.0.0.dev0
|
|
4
|
+
Summary: A pipeline runner for Pipecat
|
|
5
|
+
License-Expression: BSD-2-Clause
|
|
6
|
+
Project-URL: Source, https://github.com/pipecat-ai/tail
|
|
7
|
+
Project-URL: Website, https://pipecat.ai
|
|
8
|
+
Keywords: pipecat,ai
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Topic :: Communications :: Conferencing
|
|
12
|
+
Classifier: Topic :: Multimedia :: Sound/Audio
|
|
13
|
+
Classifier: Topic :: Multimedia :: Video
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Requires-Dist: pipecat-ai>=0.0.87
|
|
19
|
+
Requires-Dist: textual<7,>=6.0.0
|
|
20
|
+
Requires-Dist: textual-plotext<2,>=1.0.0
|
|
21
|
+
Requires-Dist: websockets<15.0,>=13.1
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
<h1><div align="center">
|
|
25
|
+
<img alt="tail" width="300px" height="auto" src="https://github.com/pipecat-ai/tail/raw/refs/heads/main/tail.png">
|
|
26
|
+
</div></h1>
|
|
27
|
+
|
|
28
|
+
[](https://pypi.org/project/pipecat-ai-tail) [](https://discord.gg/pipecat)
|
|
29
|
+
|
|
30
|
+
# ᓚᘏᗢ Tail: A terminal dashboard for Pipecat
|
|
31
|
+
|
|
32
|
+
**Tail** is a terminal dashboard for the [Pipecat](https://github.com/pipecat-ai/pipecat) voice and multimodal conversational AI framework.
|
|
33
|
+
|
|
34
|
+
It lets you monitor your Pipecat sessions in real time with logs, conversations, metrics, and audio levels all in one place.
|
|
35
|
+
|
|
36
|
+
With Tail you can:
|
|
37
|
+
|
|
38
|
+
- 📜 Follow system logs in real time
|
|
39
|
+
- 💬 Track conversations as they happen
|
|
40
|
+
- 🔊 Monitor user and agent audio levels
|
|
41
|
+
- 📈 Keep an eye on service metrics and usage
|
|
42
|
+
- 🖥️ Run locally as a pipeline runner or connect to a remote session
|
|
43
|
+
|
|
44
|
+
<p align="center"><img src="https://raw.githubusercontent.com/pipecat-ai/tail/refs/heads/main/tail-image.gif" alt="Tail" width="500"/></p>
|
|
45
|
+
|
|
46
|
+
## 🧭 Getting started
|
|
47
|
+
|
|
48
|
+
### Requirements
|
|
49
|
+
|
|
50
|
+
- Python 3.10+
|
|
51
|
+
- [Pipecat](https://github.com/pipecat-ai/pipecat) installed
|
|
52
|
+
|
|
53
|
+
### Install Tail for Python
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
uv pip install pipecat-ai-tail
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### ⚡ Option A: Pipeline runner
|
|
60
|
+
|
|
61
|
+
Use `TailRunner` as a drop-in replacement for `PipelineRunner`. For example:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
runner = PipelineRunner()
|
|
65
|
+
|
|
66
|
+
await runner.run(task)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
becomes
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
from pipecat_tail.runner import TailRunner
|
|
73
|
+
|
|
74
|
+
runner = TailRunner()
|
|
75
|
+
|
|
76
|
+
await runner.run(task)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 🏠 Option B: Standalone app
|
|
80
|
+
|
|
81
|
+
You can also start Tail as a standalone application. This lets you connect to a running session, whether local or remote. All you need to do is add the `TailObserver` to your pipeline task:
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
from pipecat_tail.observer import TailObserver
|
|
85
|
+
|
|
86
|
+
task = PipelineTask(..., observers=[TailObserver()])
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Then start the app:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
pctail [--uri URI]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
or
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
pipecat-tail [--uri URI]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
By default, it will connect to `ws://localhost:9292`.
|
|
102
|
+
|
|
103
|
+
## 📚 Next steps
|
|
104
|
+
|
|
105
|
+
- See the [Pipecat documentation](https://docs.pipecat.ai) for more about building bots
|