agentwire-dev 1.0.3__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.
- agentwire_dev-1.0.3/.github/ISSUE_TEMPLATE/bug_report.md +42 -0
- agentwire_dev-1.0.3/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- agentwire_dev-1.0.3/.github/ISSUE_TEMPLATE/question.md +22 -0
- agentwire_dev-1.0.3/.github/PULL_REQUEST_TEMPLATE.md +45 -0
- agentwire_dev-1.0.3/.github/workflows/ci.yml +28 -0
- agentwire_dev-1.0.3/.gitignore +52 -0
- agentwire_dev-1.0.3/CHANGELOG.md +69 -0
- agentwire_dev-1.0.3/CLA.md +54 -0
- agentwire_dev-1.0.3/CODE_OF_CONDUCT.md +46 -0
- agentwire_dev-1.0.3/CONTRIBUTING.md +184 -0
- agentwire_dev-1.0.3/Dockerfile.local +75 -0
- agentwire_dev-1.0.3/Dockerfile.runpod +60 -0
- agentwire_dev-1.0.3/LICENSE +661 -0
- agentwire_dev-1.0.3/PKG-INFO +506 -0
- agentwire_dev-1.0.3/README.md +453 -0
- agentwire_dev-1.0.3/SECURITY.md +46 -0
- agentwire_dev-1.0.3/agentwire/__init__.py +3 -0
- agentwire_dev-1.0.3/agentwire/__main__.py +8097 -0
- agentwire_dev-1.0.3/agentwire/agents/__init__.py +19 -0
- agentwire_dev-1.0.3/agentwire/agents/base.py +96 -0
- agentwire_dev-1.0.3/agentwire/agents/tmux.py +438 -0
- agentwire_dev-1.0.3/agentwire/cached_status.py +120 -0
- agentwire_dev-1.0.3/agentwire/cli_safety.py +517 -0
- agentwire_dev-1.0.3/agentwire/completion.py +493 -0
- agentwire_dev-1.0.3/agentwire/config.py +465 -0
- agentwire_dev-1.0.3/agentwire/errors.py +224 -0
- agentwire_dev-1.0.3/agentwire/history.py +426 -0
- agentwire_dev-1.0.3/agentwire/hooks/__init__.py +1 -0
- agentwire_dev-1.0.3/agentwire/hooks/agentwire-permission.sh +115 -0
- agentwire_dev-1.0.3/agentwire/hooks/damage-control/__init__.py +1 -0
- agentwire_dev-1.0.3/agentwire/hooks/damage-control/audit_logger.py +234 -0
- agentwire_dev-1.0.3/agentwire/hooks/damage-control/bash-tool-damage-control.py +331 -0
- agentwire_dev-1.0.3/agentwire/hooks/damage-control/edit-tool-damage-control.py +145 -0
- agentwire_dev-1.0.3/agentwire/hooks/damage-control/patterns.yaml +720 -0
- agentwire_dev-1.0.3/agentwire/hooks/damage-control/write-tool-damage-control.py +143 -0
- agentwire_dev-1.0.3/agentwire/hooks/suppress-bg-notifications.sh +157 -0
- agentwire_dev-1.0.3/agentwire/init_agentwire.py +197 -0
- agentwire_dev-1.0.3/agentwire/listen.py +376 -0
- agentwire_dev-1.0.3/agentwire/locking.py +300 -0
- agentwire_dev-1.0.3/agentwire/mcp_server.py +1002 -0
- agentwire_dev-1.0.3/agentwire/network.py +205 -0
- agentwire_dev-1.0.3/agentwire/notifications.py +392 -0
- agentwire_dev-1.0.3/agentwire/onboarding.py +1580 -0
- agentwire_dev-1.0.3/agentwire/pane_manager.py +541 -0
- agentwire_dev-1.0.3/agentwire/project_config.py +284 -0
- agentwire_dev-1.0.3/agentwire/projects.py +235 -0
- agentwire_dev-1.0.3/agentwire/prompts/__init__.py +1 -0
- agentwire_dev-1.0.3/agentwire/prompts/init.md +155 -0
- agentwire_dev-1.0.3/agentwire/roles/__init__.py +238 -0
- agentwire_dev-1.0.3/agentwire/roles/chatbot.md +72 -0
- agentwire_dev-1.0.3/agentwire/roles/claude-delegation.md +383 -0
- agentwire_dev-1.0.3/agentwire/roles/claude-worker.md +72 -0
- agentwire_dev-1.0.3/agentwire/roles/glm-delegation.md +438 -0
- agentwire_dev-1.0.3/agentwire/roles/glm-worker.md +65 -0
- agentwire_dev-1.0.3/agentwire/roles/leader.md +477 -0
- agentwire_dev-1.0.3/agentwire/roles/task-runner.md +141 -0
- agentwire_dev-1.0.3/agentwire/roles/worker.md +94 -0
- agentwire_dev-1.0.3/agentwire/server.py +3803 -0
- agentwire_dev-1.0.3/agentwire/static/agentwire-splash--agentwire.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/agentwire-splash--full.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/agentwire-splash--owl.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/agentwire-splash--telephone.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/agentwire-splash--tree.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/css/desktop.css +2367 -0
- agentwire_dev-1.0.3/agentwire/static/favicon.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/android.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/automaton.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/bot.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/cyborg.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/droid.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/drone.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/guardian.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/mech.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/probe.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/robot.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/sentinel.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/machines/unit.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/blob.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/cloud.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/crystal.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/cyclops.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/flame.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/horned.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/moon.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/slime.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/star.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/tentacle.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/projects/winged.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/bear.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/cat.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/crown.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/deer.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/drone.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/eagle.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/fox.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/hawk.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/horse.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/lion.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/robot.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/tiger.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/icons/sessions/wolf.jpeg +0 -0
- agentwire_dev-1.0.3/agentwire/static/js/.gitkeep +0 -0
- agentwire_dev-1.0.3/agentwire/static/js/components/icon-picker.js +136 -0
- agentwire_dev-1.0.3/agentwire/static/js/components/list-card.js +156 -0
- agentwire_dev-1.0.3/agentwire/static/js/components/type-tag.js +45 -0
- agentwire_dev-1.0.3/agentwire/static/js/desktop-manager.js +758 -0
- agentwire_dev-1.0.3/agentwire/static/js/desktop.js +481 -0
- agentwire_dev-1.0.3/agentwire/static/js/icon-manager.js +284 -0
- agentwire_dev-1.0.3/agentwire/static/js/list-window.js +278 -0
- agentwire_dev-1.0.3/agentwire/static/js/session-window.js +1168 -0
- agentwire_dev-1.0.3/agentwire/static/js/utils/auto-refresh.js +64 -0
- agentwire_dev-1.0.3/agentwire/static/js/winbox.bundle.min.js +34 -0
- agentwire_dev-1.0.3/agentwire/static/js/windows/chat-window.js +612 -0
- agentwire_dev-1.0.3/agentwire/static/js/windows/config-window.js +102 -0
- agentwire_dev-1.0.3/agentwire/static/js/windows/machines-window.js +437 -0
- agentwire_dev-1.0.3/agentwire/static/js/windows/projects-window.js +1340 -0
- agentwire_dev-1.0.3/agentwire/static/js/windows/sessions-window.js +376 -0
- agentwire_dev-1.0.3/agentwire/stt/__init__.py +41 -0
- agentwire_dev-1.0.3/agentwire/stt/base.py +26 -0
- agentwire_dev-1.0.3/agentwire/stt/whisperkit.py +90 -0
- agentwire_dev-1.0.3/agentwire/tasks.py +399 -0
- agentwire_dev-1.0.3/agentwire/templates/__init__.py +1 -0
- agentwire_dev-1.0.3/agentwire/templates/base.html +17 -0
- agentwire_dev-1.0.3/agentwire/templates/desktop.html +75 -0
- agentwire_dev-1.0.3/agentwire/templates/email_notification.html +256 -0
- agentwire_dev-1.0.3/agentwire/templating.py +196 -0
- agentwire_dev-1.0.3/agentwire/tts/__init__.py +13 -0
- agentwire_dev-1.0.3/agentwire/tts/base.py +107 -0
- agentwire_dev-1.0.3/agentwire/tts/engines/__init__.py +13 -0
- agentwire_dev-1.0.3/agentwire/tts/engines/chatterbox.py +165 -0
- agentwire_dev-1.0.3/agentwire/tts/engines/qwen_base.py +193 -0
- agentwire_dev-1.0.3/agentwire/tts/engines/qwen_custom.py +189 -0
- agentwire_dev-1.0.3/agentwire/tts/engines/qwen_design.py +170 -0
- agentwire_dev-1.0.3/agentwire/tts/registry.py +136 -0
- agentwire_dev-1.0.3/agentwire/tts/runpod_handler.py +350 -0
- agentwire_dev-1.0.3/agentwire/tts_server.py +389 -0
- agentwire_dev-1.0.3/agentwire/tunnels.py +376 -0
- agentwire_dev-1.0.3/agentwire/utils/__init__.py +37 -0
- agentwire_dev-1.0.3/agentwire/utils/file_io.py +146 -0
- agentwire_dev-1.0.3/agentwire/utils/paths.py +100 -0
- agentwire_dev-1.0.3/agentwire/utils/subprocess.py +128 -0
- agentwire_dev-1.0.3/agentwire/validation.py +360 -0
- agentwire_dev-1.0.3/agentwire/voiceclone.py +464 -0
- agentwire_dev-1.0.3/agentwire/voices/darren.wav +0 -0
- agentwire_dev-1.0.3/agentwire/voices/default.wav +0 -0
- agentwire_dev-1.0.3/agentwire/voices/jessica.wav +0 -0
- agentwire_dev-1.0.3/agentwire/voices/lisa.wav +0 -0
- agentwire_dev-1.0.3/agentwire/voices/may.wav +0 -0
- agentwire_dev-1.0.3/agentwire/worktree.py +197 -0
- agentwire_dev-1.0.3/docs/PORTAL.md +350 -0
- agentwire_dev-1.0.3/docs/SHELL_ESCAPING.md +174 -0
- agentwire_dev-1.0.3/docs/TROUBLESHOOTING.md +512 -0
- agentwire_dev-1.0.3/docs/brainstorms/README.md +23 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-ambient-context-stream.md +129 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-audio-cues.md +420 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-context-compression-protocol.md +535 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-contextual-bookmarks.md +412 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-conversation-archaeology.md +135 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-failure-memory.md +421 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-presence-aware-sessions.md +477 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-session-replay.md +247 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-session-snapshots.md +137 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-session-templates.md +343 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-task-pivot-protocol.md +348 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-voice-handoff.md +131 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-voice-identity.md +358 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-voice-interrupts.md +452 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-voice-macros.md +243 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-voice-transcript-logs.md +441 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-watchdog-mode.md +509 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-worker-file-coordination.md +307 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-worker-health-dashboard.md +194 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-worker-progress-streaming.md +133 -0
- agentwire_dev-1.0.3/docs/brainstorms/idea-worker-warmup.md +305 -0
- agentwire_dev-1.0.3/docs/critical-analysis.md +164 -0
- agentwire_dev-1.0.3/docs/logo.png +0 -0
- agentwire_dev-1.0.3/docs/notification-hooks.md +152 -0
- agentwire_dev-1.0.3/docs/progressive-loading-pattern.md +137 -0
- agentwire_dev-1.0.3/docs/prompts/agentwire-website.md +104 -0
- agentwire_dev-1.0.3/docs/remote-access.md +363 -0
- agentwire_dev-1.0.3/docs/remote-machines.md +176 -0
- agentwire_dev-1.0.3/docs/runpod-tts.md +98 -0
- agentwire_dev-1.0.3/docs/scheduled-workloads.md +336 -0
- agentwire_dev-1.0.3/docs/security/damage-control-migration.md +585 -0
- agentwire_dev-1.0.3/docs/security/damage-control.md +513 -0
- agentwire_dev-1.0.3/docs/tmux-hooks.md +359 -0
- agentwire_dev-1.0.3/docs/tts-self-hosted.md +205 -0
- agentwire_dev-1.0.3/opencode-plugin/agentwire-notify.ts +260 -0
- agentwire_dev-1.0.3/pyproject.toml +132 -0
- agentwire_dev-1.0.3/requirements-tts.txt +24 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Report something that isn't working correctly
|
|
4
|
+
title: '[Bug] '
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
A clear description of the bug.
|
|
12
|
+
|
|
13
|
+
## Steps to Reproduce
|
|
14
|
+
|
|
15
|
+
1.
|
|
16
|
+
2.
|
|
17
|
+
3.
|
|
18
|
+
|
|
19
|
+
## Expected Behavior
|
|
20
|
+
|
|
21
|
+
What should happen.
|
|
22
|
+
|
|
23
|
+
## Actual Behavior
|
|
24
|
+
|
|
25
|
+
What actually happens.
|
|
26
|
+
|
|
27
|
+
## Environment
|
|
28
|
+
|
|
29
|
+
- **OS:** (e.g., macOS 14.2, Ubuntu 22.04)
|
|
30
|
+
- **Python:** (e.g., 3.11.5)
|
|
31
|
+
- **AgentWire version:** (run `agentwire --version`)
|
|
32
|
+
- **Agent:** (Claude Code / OpenCode / Other)
|
|
33
|
+
|
|
34
|
+
## Logs
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Paste relevant logs here (check ~/.agentwire/logs/)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Additional Context
|
|
41
|
+
|
|
42
|
+
Any other information that might help.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request
|
|
3
|
+
about: Suggest a new feature or improvement
|
|
4
|
+
title: '[Feature] '
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
|
|
11
|
+
What problem does this feature solve? What's the use case?
|
|
12
|
+
|
|
13
|
+
## Proposed Solution
|
|
14
|
+
|
|
15
|
+
Describe the feature you'd like to see.
|
|
16
|
+
|
|
17
|
+
## Alternatives Considered
|
|
18
|
+
|
|
19
|
+
Have you considered any alternative solutions or workarounds?
|
|
20
|
+
|
|
21
|
+
## Additional Context
|
|
22
|
+
|
|
23
|
+
Any mockups, examples, or references that help explain the feature.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Question
|
|
3
|
+
about: Ask a question about using AgentWire
|
|
4
|
+
title: '[Question] '
|
|
5
|
+
labels: question
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Question
|
|
10
|
+
|
|
11
|
+
What would you like to know?
|
|
12
|
+
|
|
13
|
+
## Context
|
|
14
|
+
|
|
15
|
+
- What are you trying to accomplish?
|
|
16
|
+
- What have you already tried?
|
|
17
|
+
- Relevant configuration or setup details
|
|
18
|
+
|
|
19
|
+
## Environment (if relevant)
|
|
20
|
+
|
|
21
|
+
- **OS:**
|
|
22
|
+
- **AgentWire version:**
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Thanks for contributing to AgentWire!
|
|
3
|
+
|
|
4
|
+
Before submitting, please make sure:
|
|
5
|
+
|
|
6
|
+
1. You've read the CONTRIBUTING guide: https://github.com/dotdevdotdev/agentwire-dev/blob/main/CONTRIBUTING.md
|
|
7
|
+
2. You've run `uvx ruff check agentwire/` with no errors
|
|
8
|
+
3. You've tested your changes locally
|
|
9
|
+
4. For bug fixes: include a test that would have caught the bug
|
|
10
|
+
5. For new features: include tests and update docs if needed
|
|
11
|
+
|
|
12
|
+
By submitting this PR, you agree to the Contributor License Agreement:
|
|
13
|
+
https://github.com/dotdevdotdev/agentwire-dev/blob/main/CLA.md
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
## Summary
|
|
17
|
+
|
|
18
|
+
<!-- What's the purpose of this change? What problem does it solve? -->
|
|
19
|
+
|
|
20
|
+
## Type of Change
|
|
21
|
+
|
|
22
|
+
- [ ] 🐛 Bug fix (non-breaking change that fixes an issue)
|
|
23
|
+
- [ ] ✨ New feature (non-breaking change that adds functionality)
|
|
24
|
+
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to change)
|
|
25
|
+
- [ ] 📚 Documentation (changes to docs only)
|
|
26
|
+
- [ ] 🧹 Refactor (code change that neither fixes a bug nor adds a feature)
|
|
27
|
+
|
|
28
|
+
## Test Plan
|
|
29
|
+
|
|
30
|
+
<!--
|
|
31
|
+
How did you verify this works? Examples:
|
|
32
|
+
- "Ran `agentwire say 'test'` and confirmed audio played"
|
|
33
|
+
- "Added unit test in test_foo.py"
|
|
34
|
+
- "Tested manually with screenshot below"
|
|
35
|
+
|
|
36
|
+
If you leave this empty, your PR will likely need revision.
|
|
37
|
+
-->
|
|
38
|
+
|
|
39
|
+
## Screenshots
|
|
40
|
+
|
|
41
|
+
<!-- If this changes UI (portal, CLI output), include before/after screenshots -->
|
|
42
|
+
|
|
43
|
+
## Related Issues
|
|
44
|
+
|
|
45
|
+
<!-- Link any related issues: "Fixes #123" or "Related to #456" -->
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Install uv
|
|
16
|
+
uses: astral-sh/setup-uv@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
run: uv python install 3.12
|
|
20
|
+
|
|
21
|
+
- name: Install dependencies
|
|
22
|
+
run: uv sync --dev
|
|
23
|
+
|
|
24
|
+
- name: Run ruff linter
|
|
25
|
+
run: uvx ruff check agentwire/
|
|
26
|
+
|
|
27
|
+
- name: Run ruff formatter check
|
|
28
|
+
run: uvx ruff format --check agentwire/
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
|
|
23
|
+
# Virtual environments
|
|
24
|
+
.venv/
|
|
25
|
+
venv/
|
|
26
|
+
ENV/
|
|
27
|
+
|
|
28
|
+
# IDE
|
|
29
|
+
.idea/
|
|
30
|
+
.vscode/
|
|
31
|
+
*.swp
|
|
32
|
+
*.swo
|
|
33
|
+
|
|
34
|
+
# OS
|
|
35
|
+
.DS_Store
|
|
36
|
+
Thumbs.db
|
|
37
|
+
|
|
38
|
+
# Project specific
|
|
39
|
+
*.log
|
|
40
|
+
.env
|
|
41
|
+
.env.*
|
|
42
|
+
|
|
43
|
+
# Voice clones (user-specific, not distributed)
|
|
44
|
+
# Note: /voices/ ignores root only; agentwire/voices/ contains bundled synthetic voices
|
|
45
|
+
/voices/
|
|
46
|
+
|
|
47
|
+
.agentwire.yml
|
|
48
|
+
|
|
49
|
+
# Test outputs
|
|
50
|
+
test_*.wav
|
|
51
|
+
test_output*.wav
|
|
52
|
+
.agentwire/
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- AGPL v3 licensing with CLA for dual-licensing model
|
|
13
|
+
- GitHub issue templates (bug report, feature request, question)
|
|
14
|
+
- Pull request template
|
|
15
|
+
- Security policy (SECURITY.md)
|
|
16
|
+
- Code of Conduct
|
|
17
|
+
- GitHub Actions CI workflow for linting
|
|
18
|
+
|
|
19
|
+
## [1.0.0] - 2026-01-19
|
|
20
|
+
|
|
21
|
+
Initial public release of AgentWire.
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **Desktop Control Center** - WinBox-powered window management with draggable/resizable session windows
|
|
26
|
+
- **Session Windows** - Monitor mode (read-only output) or Terminal mode (full xterm.js) per session
|
|
27
|
+
- **Push-to-Talk Voice** - Hold to speak, release to send transcription from any device
|
|
28
|
+
- **TTS Playback** - Agent responses spoken back via browser audio with smart routing
|
|
29
|
+
- **Multi-Device Access** - Control sessions from phone, tablet, or laptop on your network
|
|
30
|
+
- **Git Worktrees** - Multiple agents work the same project in parallel on separate branches
|
|
31
|
+
- **Remote Machines** - Orchestrate Claude Code sessions on remote servers via SSH
|
|
32
|
+
- **Safety Hooks** - 300+ dangerous command patterns blocked (rm -rf, git push --force, secret exposure)
|
|
33
|
+
- **Session Roles** - Orchestrator sessions coordinate voice, workers execute focused tasks
|
|
34
|
+
- **Permission Hooks** - Claude Code integration for permission dialogs in the portal
|
|
35
|
+
|
|
36
|
+
### CLI Commands
|
|
37
|
+
|
|
38
|
+
- `agentwire init` - Interactive setup wizard
|
|
39
|
+
- `agentwire portal start/stop/status` - Portal management
|
|
40
|
+
- `agentwire tts start/stop/status` - TTS server management
|
|
41
|
+
- `agentwire stt start/stop/status` - STT server management
|
|
42
|
+
- `agentwire new/list/kill/send/output` - Session management
|
|
43
|
+
- `agentwire spawn/split/detach/jump` - Pane management
|
|
44
|
+
- `agentwire say` - TTS with smart audio routing
|
|
45
|
+
- `agentwire safety check/status/logs` - Security diagnostics
|
|
46
|
+
- `agentwire machine add/remove/list` - Remote machine management
|
|
47
|
+
- `agentwire tunnels up/down/status` - SSH tunnel management
|
|
48
|
+
- `agentwire history list/show/resume` - Session history
|
|
49
|
+
- `agentwire doctor` - Auto-diagnose and fix issues
|
|
50
|
+
- `agentwire generate-certs` - SSL certificate generation
|
|
51
|
+
|
|
52
|
+
### Security
|
|
53
|
+
|
|
54
|
+
- Damage control hooks protecting against 300+ dangerous command patterns
|
|
55
|
+
- Zero-access paths for credentials, SSH keys, and API tokens
|
|
56
|
+
- Read-only paths for system configs
|
|
57
|
+
- No-delete paths for session and mission files
|
|
58
|
+
- Audit logging for all security decisions
|
|
59
|
+
|
|
60
|
+
### Documentation
|
|
61
|
+
|
|
62
|
+
- Comprehensive README with platform-specific installation instructions
|
|
63
|
+
- Architecture documentation
|
|
64
|
+
- Troubleshooting guide
|
|
65
|
+
- TTS setup guide
|
|
66
|
+
- Remote machines guide
|
|
67
|
+
- Security documentation
|
|
68
|
+
|
|
69
|
+
[1.0.0]: https://github.com/dotdevdotdev/agentwire-dev/releases/tag/v1.0.0
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Contributor License Agreement
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to AgentWire ("Project"). This Contributor License Agreement ("Agreement") documents the rights granted by contributors to the Project.
|
|
4
|
+
|
|
5
|
+
## Why a CLA?
|
|
6
|
+
|
|
7
|
+
AgentWire uses a dual-licensing model: the code is available under AGPL v3 for open source use, and under a commercial license for organizations that prefer not to comply with AGPL terms. To maintain this model and protect the project's sustainability, we need contributors to grant us certain rights.
|
|
8
|
+
|
|
9
|
+
## Agreement
|
|
10
|
+
|
|
11
|
+
By submitting a contribution (code, documentation, or other materials) to this Project, you agree to the following terms:
|
|
12
|
+
|
|
13
|
+
### 1. Definitions
|
|
14
|
+
|
|
15
|
+
- **"You"** means the individual or legal entity submitting a Contribution.
|
|
16
|
+
- **"Contribution"** means any original work of authorship, including modifications or additions to existing work, that you submit to the Project.
|
|
17
|
+
|
|
18
|
+
### 2. Grant of Copyright License
|
|
19
|
+
|
|
20
|
+
You grant to the Project maintainers and to recipients of software distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to:
|
|
21
|
+
- Reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your Contributions and such derivative works.
|
|
22
|
+
- Re-license the Contribution under any license, including proprietary licenses.
|
|
23
|
+
|
|
24
|
+
### 3. Grant of Patent License
|
|
25
|
+
|
|
26
|
+
You grant to the Project maintainers and to recipients of software distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Contribution.
|
|
27
|
+
|
|
28
|
+
### 4. Representations
|
|
29
|
+
|
|
30
|
+
You represent that:
|
|
31
|
+
- You are legally entitled to grant the above licenses.
|
|
32
|
+
- Each Contribution is your original creation OR you have sufficient rights to submit the Contribution.
|
|
33
|
+
- Your Contribution does not violate any third-party rights.
|
|
34
|
+
- If your employer has rights to intellectual property you create, you have received permission to make Contributions on behalf of that employer, or your employer has waived such rights.
|
|
35
|
+
|
|
36
|
+
### 5. No Obligation
|
|
37
|
+
|
|
38
|
+
You understand that:
|
|
39
|
+
- The Project is under no obligation to accept or include your Contribution.
|
|
40
|
+
- You are not expected to provide support for your Contributions.
|
|
41
|
+
|
|
42
|
+
### 6. Attribution
|
|
43
|
+
|
|
44
|
+
The Project will maintain a record of all contributors. You may be credited in release notes or other project documentation.
|
|
45
|
+
|
|
46
|
+
## How to Sign
|
|
47
|
+
|
|
48
|
+
By submitting a pull request to this repository, you agree to the terms of this CLA. No separate signature is required.
|
|
49
|
+
|
|
50
|
+
If you are contributing on behalf of your employer, please ensure you have the necessary permissions.
|
|
51
|
+
|
|
52
|
+
## Questions?
|
|
53
|
+
|
|
54
|
+
If you have questions about this CLA, please open an issue.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity
|
|
10
|
+
and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment:
|
|
18
|
+
|
|
19
|
+
- Using welcoming and inclusive language
|
|
20
|
+
- Being respectful of differing viewpoints and experiences
|
|
21
|
+
- Gracefully accepting constructive criticism
|
|
22
|
+
- Focusing on what is best for the community
|
|
23
|
+
- Showing empathy towards other community members
|
|
24
|
+
|
|
25
|
+
Examples of unacceptable behavior:
|
|
26
|
+
|
|
27
|
+
- The use of sexualized language or imagery, and sexual attention or advances
|
|
28
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
29
|
+
- Public or private harassment
|
|
30
|
+
- Publishing others' private information without explicit permission
|
|
31
|
+
- Other conduct which could reasonably be considered inappropriate
|
|
32
|
+
|
|
33
|
+
## Enforcement
|
|
34
|
+
|
|
35
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
36
|
+
reported to the project team at conduct@agentwire.dev.
|
|
37
|
+
|
|
38
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
39
|
+
|
|
40
|
+
Project maintainers are obligated to respect the privacy and security of the
|
|
41
|
+
reporter of any incident.
|
|
42
|
+
|
|
43
|
+
## Attribution
|
|
44
|
+
|
|
45
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
|
|
46
|
+
version 2.0.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Contributing to AgentWire
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to AgentWire!
|
|
4
|
+
|
|
5
|
+
## Contributor License Agreement
|
|
6
|
+
|
|
7
|
+
By submitting a pull request, you agree to the terms of our [Contributor License Agreement](CLA.md). This allows us to maintain our dual-licensing model (AGPL v3 + commercial) while accepting community contributions.
|
|
8
|
+
|
|
9
|
+
## Development Setup
|
|
10
|
+
|
|
11
|
+
### Prerequisites
|
|
12
|
+
|
|
13
|
+
- Python 3.10+
|
|
14
|
+
- [uv](https://github.com/astral-sh/uv) - Fast Python package manager
|
|
15
|
+
- tmux
|
|
16
|
+
|
|
17
|
+
### Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Clone the repository
|
|
21
|
+
git clone https://github.com/dotdevdotdev/agentwire-dev.git
|
|
22
|
+
cd agentwire-dev
|
|
23
|
+
|
|
24
|
+
# Install in development mode
|
|
25
|
+
uv pip install -e .
|
|
26
|
+
|
|
27
|
+
# Run in development mode (picks up code changes instantly)
|
|
28
|
+
agentwire portal start --dev
|
|
29
|
+
|
|
30
|
+
# After structural changes (pyproject.toml, new files)
|
|
31
|
+
agentwire rebuild
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Development Workflow
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Start development session
|
|
38
|
+
agentwire dev
|
|
39
|
+
|
|
40
|
+
# Run linter
|
|
41
|
+
uvx ruff check agentwire/
|
|
42
|
+
|
|
43
|
+
# Run with auto-fix
|
|
44
|
+
uvx ruff check agentwire/ --fix
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Code Style
|
|
48
|
+
|
|
49
|
+
### Linting
|
|
50
|
+
|
|
51
|
+
We use [ruff](https://github.com/astral-sh/ruff) for linting. Configuration is in `pyproject.toml`:
|
|
52
|
+
|
|
53
|
+
```toml
|
|
54
|
+
[tool.ruff.lint]
|
|
55
|
+
select = ["E", "F", "I", "N", "W"]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Docstrings
|
|
59
|
+
|
|
60
|
+
Use Google-style docstrings for all public functions:
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
def function_name(arg1: str, arg2: int = 10) -> dict:
|
|
64
|
+
"""Brief one-line description.
|
|
65
|
+
|
|
66
|
+
Longer description if needed explaining purpose
|
|
67
|
+
and important details.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
arg1: Description of arg1.
|
|
71
|
+
arg2: Description of arg2. Defaults to 10.
|
|
72
|
+
|
|
73
|
+
Returns:
|
|
74
|
+
Description of return value.
|
|
75
|
+
|
|
76
|
+
Raises:
|
|
77
|
+
ValueError: When arg1 is empty.
|
|
78
|
+
"""
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Code Patterns
|
|
82
|
+
|
|
83
|
+
### Use Utility Modules
|
|
84
|
+
|
|
85
|
+
Common operations are centralized in `agentwire/utils/`:
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
# Subprocess execution
|
|
89
|
+
from agentwire.utils import run_command, run_command_check
|
|
90
|
+
|
|
91
|
+
result = run_command(["ls", "-la"])
|
|
92
|
+
if result.success:
|
|
93
|
+
print(result.stdout)
|
|
94
|
+
|
|
95
|
+
# File I/O
|
|
96
|
+
from agentwire.utils import load_json, save_json, load_yaml
|
|
97
|
+
|
|
98
|
+
config = load_json(config_path, default={})
|
|
99
|
+
save_json(config_path, data)
|
|
100
|
+
|
|
101
|
+
# Paths
|
|
102
|
+
from agentwire.utils import agentwire_dir, config_path, logs_dir
|
|
103
|
+
|
|
104
|
+
base = agentwire_dir() # ~/.agentwire/
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Error Handling
|
|
108
|
+
|
|
109
|
+
Use the structured error classes in `agentwire/errors.py`:
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
from agentwire.errors import AgentWireError
|
|
113
|
+
|
|
114
|
+
raise AgentWireError(
|
|
115
|
+
what="Session not found",
|
|
116
|
+
why="No tmux session exists with that name",
|
|
117
|
+
how="Create a new session with 'agentwire new -s name'"
|
|
118
|
+
)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Configuration
|
|
122
|
+
|
|
123
|
+
Use dataclasses for configuration (see `agentwire/config.py`):
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
@dataclass
|
|
127
|
+
class ServerConfig:
|
|
128
|
+
host: str = "0.0.0.0"
|
|
129
|
+
port: int = 8765
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Validation
|
|
133
|
+
|
|
134
|
+
Use structured validation with suggestions (see `agentwire/validation.py`):
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
def validate_config(config: Config) -> tuple[list[ConfigError], list[ConfigWarning]]:
|
|
138
|
+
"""Returns errors and warnings with fix suggestions."""
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## CLI First
|
|
142
|
+
|
|
143
|
+
All session/machine logic lives in CLI commands (`__main__.py`). The web portal is a thin wrapper that:
|
|
144
|
+
|
|
145
|
+
1. Calls CLI via `run_agentwire_cmd(["command", "args"])`
|
|
146
|
+
2. Parses JSON output (`--json` flag)
|
|
147
|
+
3. Adds WebSocket/real-time features
|
|
148
|
+
|
|
149
|
+
When adding new functionality:
|
|
150
|
+
1. Implement in CLI first with `--json` output
|
|
151
|
+
2. Portal calls CLI, doesn't duplicate logic
|
|
152
|
+
3. Never bypass CLI with direct tmux/subprocess calls
|
|
153
|
+
|
|
154
|
+
## Project Structure
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
agentwire/
|
|
158
|
+
├── __main__.py # CLI commands (entry point)
|
|
159
|
+
├── server.py # WebSocket server
|
|
160
|
+
├── config.py # Configuration dataclasses
|
|
161
|
+
├── errors.py # Structured error classes
|
|
162
|
+
├── validation.py # Config validation
|
|
163
|
+
├── utils/ # Shared utilities
|
|
164
|
+
│ ├── subprocess.py # Command execution
|
|
165
|
+
│ ├── file_io.py # JSON/YAML handling
|
|
166
|
+
│ └── paths.py # Path management
|
|
167
|
+
├── agents/ # Agent implementations
|
|
168
|
+
├── tts/ # Text-to-speech backends
|
|
169
|
+
├── stt/ # Speech-to-text backends
|
|
170
|
+
├── hooks/ # Claude Code hooks
|
|
171
|
+
└── roles/ # Role instruction files
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Pull Request Guidelines
|
|
175
|
+
|
|
176
|
+
1. Create a branch from `main`
|
|
177
|
+
2. Make your changes
|
|
178
|
+
3. Run `uvx ruff check agentwire/` - ensure no errors
|
|
179
|
+
4. Commit with descriptive message
|
|
180
|
+
5. Open PR with description of changes
|
|
181
|
+
|
|
182
|
+
## Questions?
|
|
183
|
+
|
|
184
|
+
Open an issue or start a discussion on GitHub.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Local Self-Hosted TTS - Chatterbox with Voice Cloning + Whisper
|
|
2
|
+
# Run on any machine with NVIDIA GPU + Docker
|
|
3
|
+
#
|
|
4
|
+
# Build:
|
|
5
|
+
# docker build -f Dockerfile.local -t agentwire-tts-local --build-arg HF_TOKEN=$HF_TOKEN .
|
|
6
|
+
#
|
|
7
|
+
# Run:
|
|
8
|
+
# docker run --gpus all -p 8100:8100 -v ~/.agentwire/voices:/voices agentwire-tts-local
|
|
9
|
+
|
|
10
|
+
FROM nvidia/cuda:12.1.0-cudnn8-runtime-ubuntu22.04
|
|
11
|
+
|
|
12
|
+
# Prevent interactive prompts during build
|
|
13
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
14
|
+
|
|
15
|
+
# Install Python 3.11 and essentials
|
|
16
|
+
RUN apt-get update && apt-get install -y \
|
|
17
|
+
python3.11 \
|
|
18
|
+
python3.11-dev \
|
|
19
|
+
python3-pip \
|
|
20
|
+
git \
|
|
21
|
+
ffmpeg \
|
|
22
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
23
|
+
|
|
24
|
+
# Set Python 3.11 as default
|
|
25
|
+
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 && \
|
|
26
|
+
update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1
|
|
27
|
+
|
|
28
|
+
# Upgrade pip
|
|
29
|
+
RUN python3 -m pip install --upgrade pip
|
|
30
|
+
|
|
31
|
+
# Set working directory
|
|
32
|
+
WORKDIR /app
|
|
33
|
+
|
|
34
|
+
# Install Python dependencies for HTTP server
|
|
35
|
+
RUN pip install --no-cache-dir \
|
|
36
|
+
torch>=2.0.0 \
|
|
37
|
+
torchaudio>=2.0.0 \
|
|
38
|
+
fastapi \
|
|
39
|
+
uvicorn[standard] \
|
|
40
|
+
faster-whisper \
|
|
41
|
+
pydantic \
|
|
42
|
+
python-multipart
|
|
43
|
+
|
|
44
|
+
# Install Chatterbox TTS
|
|
45
|
+
RUN pip install --no-cache-dir git+https://github.com/resemble-ai/chatterbox.git
|
|
46
|
+
|
|
47
|
+
# Copy AgentWire source code
|
|
48
|
+
COPY agentwire/ ./agentwire/
|
|
49
|
+
|
|
50
|
+
# Pre-download models (requires HF_TOKEN for Chatterbox)
|
|
51
|
+
ARG HF_TOKEN
|
|
52
|
+
ENV HF_TOKEN=${HF_TOKEN}
|
|
53
|
+
ENV HF_HOME=/app/.cache/huggingface
|
|
54
|
+
|
|
55
|
+
# Download Chatterbox model
|
|
56
|
+
RUN python3 -c "from chatterbox.tts_turbo import ChatterboxTurboTTS; ChatterboxTurboTTS.from_pretrained(device='cpu')" || \
|
|
57
|
+
echo "Warning: Model download failed, will retry at runtime"
|
|
58
|
+
|
|
59
|
+
# Download Whisper large-v3 model
|
|
60
|
+
RUN python3 -c "from faster_whisper import WhisperModel; WhisperModel('large-v3', device='cpu', compute_type='int8')" || \
|
|
61
|
+
echo "Warning: Whisper download failed, will retry at runtime"
|
|
62
|
+
|
|
63
|
+
# Copy bundled synthetic voices (can override at runtime with -v mount)
|
|
64
|
+
# Includes: default, darren, jessica, lisa, may
|
|
65
|
+
COPY agentwire/voices/ /voices/
|
|
66
|
+
|
|
67
|
+
# Environment
|
|
68
|
+
ENV PYTHONUNBUFFERED=1
|
|
69
|
+
ENV VOICES_DIR=/voices
|
|
70
|
+
|
|
71
|
+
# Expose HTTP port
|
|
72
|
+
EXPOSE 8100
|
|
73
|
+
|
|
74
|
+
# Run FastAPI server
|
|
75
|
+
CMD ["python3", "-m", "uvicorn", "agentwire.tts_server:app", "--host", "0.0.0.0", "--port", "8100"]
|