-
Notifications
You must be signed in to change notification settings - Fork 2
fix(mcp): converge MCP config for B850 — agent-zero SSE, archon disabled, hostinger + tailscale #2303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(mcp): converge MCP config for B850 — agent-zero SSE, archon disabled, hostinger + tailscale #2303
Changes from all commits
2c2b002
036a35d
870cbd1
da5bb54
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,180 @@ | ||
| # PMOVES.AI Ultimate-TTS-Studio — ROCm (AMD GPU) variant | ||
| # Multi-engine TTS for AMD ROCm nodes (RDNA3/RDNA4: gfx1100, gfx1201) | ||
| # | ||
| # Uses the same pytorch/pytorch conda base as the CUDA Dockerfile to get | ||
| # Python 3.11 + conda + pynini, then replaces CUDA PyTorch with ROCm PyTorch | ||
| # via pip. This avoids conda solver conflicts with pynini on Ubuntu. | ||
| # | ||
| # Build: | ||
| # docker build -f docker/ultimate-tts-studio/Dockerfile.rocm \ | ||
| # -t ghcr.io/powerfulmoves/pmoves-ultimate-tts-studio:rocm-latest \ | ||
| # --build-arg HSA_OVERRIDE_GFX_VERSION=12.0.1 \ | ||
| # ./docker/ultimate-tts-studio/ | ||
| # | ||
| # Usage: | ||
| # make -C pmoves up-voice-amd | ||
|
|
||
| # ── Stage 1: Builder ────────────────────────────────────────────────────────── | ||
| # Same base as CUDA Dockerfile — provides conda + Python 3.11 + pynini | ||
| FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime@sha256:c8268a92a69bd500f8be0e665b2630ee006dadaf7bfbc24249141b15ff622755 AS builder | ||
|
|
||
| ENV DEBIAN_FRONTEND=noninteractive \ | ||
| PYTHONDONTWRITEBYTECODE=1 \ | ||
| PYTHONUNBUFFERED=1 \ | ||
| PIP_DISABLE_PIP_VERSION_CHECK=1 \ | ||
| PIP_NO_CACHE_DIR=1 | ||
|
|
||
| WORKDIR /build | ||
|
|
||
| # System deps for audio + build utilities | ||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
| ffmpeg \ | ||
| espeak-ng \ | ||
| libespeak-ng1 \ | ||
| libespeak-ng-dev \ | ||
| libsndfile1 \ | ||
| libportaudio2 \ | ||
| portaudio19-dev \ | ||
| libaio-dev \ | ||
| libsox-dev \ | ||
| sox \ | ||
| git \ | ||
| curl \ | ||
| build-essential \ | ||
| cmake \ | ||
| protobuf-compiler \ | ||
| libprotobuf-dev \ | ||
| && rm -rf /var/lib/apt/lists/* | ||
|
|
||
| # Conda packages (pynini + scipy/numpy ABI compat — same as CUDA Dockerfile) | ||
| RUN conda install -c conda-forge pynini==2.1.6 portaudio scipy=1.11.4 numpy=1.26.4 -y && \ | ||
| conda clean -afy | ||
|
|
||
| # Replace CUDA PyTorch with ROCm PyTorch | ||
| # The base image ships torch+cu124; we uninstall and reinstall the ROCm wheel | ||
| RUN pip uninstall -y torch torchaudio torchvision 2>/dev/null || true && \ | ||
| pip install --pre torch torchaudio torchvision \ | ||
| --index-url https://download.pytorch.org/whl/nightly/rocm6.3 | ||
|
|
||
| # Clone from PMOVES fork | ||
| RUN git clone --depth 1 https://github.com/POWERFULMOVES/PMOVES-Ultimate-TTS-Studio.git app | ||
|
|
||
| WORKDIR /build/app | ||
|
|
||
| # Install gradio and devicetorch first | ||
| RUN pip install --upgrade pip && \ | ||
| pip install gradio devicetorch | ||
|
|
||
| # Pin huggingface-hub <1.0 before requirements | ||
| RUN pip install "huggingface-hub>=0.25.0,<1.0" | ||
|
|
||
| # Pre-install packages that fail to build from source | ||
| RUN pip install \ | ||
| onnx==1.16.0 \ | ||
| s3tokenizer>=0.1.6 | ||
|
|
||
| # Constraint file (same as CUDA Dockerfile) | ||
| RUN echo "onnx==1.16.0" > /tmp/constraints.txt && \ | ||
| echo "scipy==1.11.4" >> /tmp/constraints.txt && \ | ||
| echo "numpy==1.26.4" >> /tmp/constraints.txt && \ | ||
| echo "pydantic<2.12" >> /tmp/constraints.txt | ||
|
|
||
| # Install upstream requirements.txt | ||
| RUN pip install -c /tmp/constraints.txt -r requirements.txt || \ | ||
| pip install --use-deprecated=legacy-resolver -c /tmp/constraints.txt -r requirements.txt | ||
|
|
||
| # Install supplementary PMOVES requirements (einops, omegaconf, etc.) | ||
| COPY requirements-ultimate-tts.txt /tmp/requirements-ultimate-tts.txt | ||
| RUN pip install -c /tmp/constraints.txt -r /tmp/requirements-ultimate-tts.txt || \ | ||
| echo "WARN: Some supplementary deps failed (non-fatal)" | ||
|
|
||
| # WeTextProcessing without deps | ||
| RUN pip install WeTextProcessing --no-deps || true | ||
|
|
||
| # Fix phonemizer-fork | ||
| RUN pip uninstall -y phonemizer 2>/dev/null || true && \ | ||
| pip install phonemizer-fork | ||
|
|
||
| # onnxruntime (CPU on ROCm — GPU provider needs ROCm-specific build) | ||
| RUN pip install -c /tmp/constraints.txt --upgrade --force-reinstall --no-deps --no-cache-dir onnxruntime==1.22.0 || \ | ||
| pip install -c /tmp/constraints.txt onnxruntime==1.22.0 | ||
|
|
||
| # voxcpm and openai-whisper without deps | ||
| RUN pip install -c /tmp/constraints.txt voxcpm openai-whisper --no-deps || true | ||
|
|
||
| # NOTE: Triton is CUDA-only — skipped on ROCm. PyTorch uses native attention. | ||
|
|
||
| # MCP for Gradio MCP server support | ||
| RUN pip install -c /tmp/constraints.txt mcp | ||
|
|
||
| # Download spacy model | ||
| RUN python -m spacy download en_core_web_sm || true | ||
|
|
||
| # Final numpy/scipy fix | ||
| RUN pip uninstall -y numpy deepspeed 2>/dev/null || true && \ | ||
| rm -rf /opt/conda/lib/python3.11/site-packages/numpy* && \ | ||
| pip install --force-reinstall "numpy==1.26.4" "scipy==1.11.4" && \ | ||
| pip install --upgrade numba llvmlite && \ | ||
| rm -rf /opt/conda/lib/python3.11/site-packages/numpy/_core | ||
|
|
||
| # Pre-download model checkpoint | ||
| RUN huggingface-cli download cocktailpeanut/oa --local-dir ./checkpoints/openaudio-s1-mini --quiet || \ | ||
| echo "Model download will happen at runtime" | ||
|
|
||
| # ── Stage 2: Runtime ────────────────────────────────────────────────────────── | ||
| # Use Ubuntu 22.04 (no CUDA runtime needed — ROCm PyTorch ships its own libs) | ||
| FROM ubuntu:22.04 AS runtime | ||
|
|
||
| ENV DEBIAN_FRONTEND=noninteractive \ | ||
| PYTHONDONTWRITEBYTECODE=1 \ | ||
| PYTHONUNBUFFERED=1 \ | ||
| GRADIO_SERVER_NAME=0.0.0.0 \ | ||
| GRADIO_SERVER_PORT=7861 \ | ||
| GRADIO_MCP_SERVER=false \ | ||
| HF_HOME=/data/hf \ | ||
| HUGGINGFACE_HUB_CACHE=/data/hf \ | ||
| XDG_CACHE_HOME=/data/cache \ | ||
| HSA_OVERRIDE_GFX_VERSION=12.0.1 \ | ||
| PYTORCH_HIP_ALLOC_CONF=garbage_collection_threshold:0.6,max_split_size_mb:512 \ | ||
| LD_LIBRARY_PATH="/opt/conda/lib:/opt/rocm/lib:${LD_LIBRARY_PATH}" \ | ||
| PATH="/opt/conda/bin:${PATH}" \ | ||
| DISABLE_NVIDIA=true | ||
|
|
||
| # Runtime system deps | ||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
| ffmpeg \ | ||
| espeak-ng \ | ||
| libespeak-ng1 \ | ||
| libsndfile1 \ | ||
| libportaudio2 \ | ||
| libaio1 \ | ||
| libsox3 \ | ||
| sox \ | ||
| curl \ | ||
| ca-certificates \ | ||
| && rm -rf /var/lib/apt/lists/* \ | ||
| && apt-get clean | ||
|
|
||
| # Create non-root user | ||
| RUN groupadd -g 65532 pmoves && \ | ||
| useradd -u 65532 -g pmoves -d /app -s /bin/bash pmoves | ||
|
|
||
| # Copy Python environment from builder | ||
| COPY --from=builder /opt/conda /opt/conda | ||
|
|
||
| # Copy application code | ||
| COPY --from=builder /build/app /app | ||
|
|
||
| RUN mkdir -p /app/outputs /app/models /data/hf /data/cache && \ | ||
| chown -R pmoves:pmoves /app /data | ||
|
|
||
| WORKDIR /app | ||
|
|
||
| USER pmoves | ||
|
|
||
| EXPOSE 7861 | ||
|
|
||
| HEALTHCHECK --interval=30s --timeout=10s --start-period=180s --retries=3 \ | ||
| CMD curl -f http://localhost:7861/gradio_api/info || exit 1 | ||
|
|
||
| CMD ["python", "launch.py"] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -63,7 +63,8 @@ for var in \ | |
| HF_TOKEN \ | ||
| OLLAMA_BASE_URL \ | ||
| TAILSCALE_API_KEY \ | ||
| TAILSCALE_TAILNET; do | ||
| TAILSCALE_TAILNET \ | ||
| AGENT_ZERO_MCP_TOKEN; do | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When the new Tailscale secrets are populated only in Useful? React with 👍 / 👎. |
||
| if [ -n "${ENV_MAP[$var]:-}" ] && [ -z "${!var:-}" ]; then | ||
| export "$var"="${ENV_MAP[$var]}" | ||
| fi | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These entries are added only to the generated v1 manifest. The canonical
secrets-funnelrunschit-manifest-sync, which rebuilds this file fromsecrets_manifest_v2.yaml; because neither ID exists there, the next funnel run deletes both entries before hydration, soTAILSCALE_API_KEYandTAILSCALE_TAILNETnever reachenv.tier-agent. Add them to the v2 source and regenerate the v1 file instead.AGENTS.md reference: AGENTS.md:L92-L95
Useful? React with 👍 / 👎.