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.
Files changed (43) hide show
  1. pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/1-bug_report.yml +105 -0
  2. pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/2-question.yml +85 -0
  3. pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/3-feature_request.yml +52 -0
  4. pipecat_ai_tail-0.0.0.dev0/.github/ISSUE_TEMPLATE/config.yml +1 -0
  5. pipecat_ai_tail-0.0.0.dev0/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  6. pipecat_ai_tail-0.0.0.dev0/.github/workflows/build.yaml +39 -0
  7. pipecat_ai_tail-0.0.0.dev0/.github/workflows/format.yaml +43 -0
  8. pipecat_ai_tail-0.0.0.dev0/.github/workflows/publish.yaml +60 -0
  9. pipecat_ai_tail-0.0.0.dev0/.gitignore +34 -0
  10. pipecat_ai_tail-0.0.0.dev0/CHANGELOG.md +10 -0
  11. pipecat_ai_tail-0.0.0.dev0/CHANGELOG.md.template +62 -0
  12. pipecat_ai_tail-0.0.0.dev0/LICENSE +24 -0
  13. pipecat_ai_tail-0.0.0.dev0/PKG-INFO +105 -0
  14. pipecat_ai_tail-0.0.0.dev0/README.md +82 -0
  15. pipecat_ai_tail-0.0.0.dev0/pyproject.toml +77 -0
  16. pipecat_ai_tail-0.0.0.dev0/setup.cfg +4 -0
  17. pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/PKG-INFO +105 -0
  18. pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/SOURCES.txt +41 -0
  19. pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/dependency_links.txt +1 -0
  20. pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/entry_points.txt +3 -0
  21. pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/requires.txt +4 -0
  22. pipecat_ai_tail-0.0.0.dev0/src/pipecat_ai_tail.egg-info/top_level.txt +1 -0
  23. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/__init__.py +0 -0
  24. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/app.py +437 -0
  25. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/cli.py +123 -0
  26. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/observer.py +141 -0
  27. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/py.typed +0 -0
  28. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/rtvi.py +41 -0
  29. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/runner.py +189 -0
  30. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/tail.tcss +56 -0
  31. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/__init__.py +0 -0
  32. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/audio_level.py +62 -0
  33. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/conversation.py +87 -0
  34. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/llm_service_info.py +92 -0
  35. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/service_metrics.py +92 -0
  36. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/streaming_log.py +182 -0
  37. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/system_info.py +66 -0
  38. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/system_logs.py +32 -0
  39. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/system_status.py +67 -0
  40. pipecat_ai_tail-0.0.0.dev0/src/pipecat_tail/widgets/tts_service_info.py +64 -0
  41. pipecat_ai_tail-0.0.0.dev0/tail-image.gif +0 -0
  42. pipecat_ai_tail-0.0.0.dev0/tail.png +0 -0
  43. 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
+ [![PyPI](https://img.shields.io/pypi/v/pipecat-ai-tail)](https://pypi.org/project/pipecat-ai-tail) [![Discord](https://img.shields.io/discord/1239284677165056021)](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