Skip to content

feat(creator): commit real OmniVoice compose file (not a doc snippet) - #1846

Merged
POWERFULMOVES merged 2 commits into
mainfrom
feat/omnivoice-compose-real
Jun 24, 2026
Merged

POWERFULMOVES merged 2 commits into
mainfrom
feat/omnivoice-compose-real

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented Jun 20, 2026 •

Copy link
Copy Markdown
Owner

Follow-up to #1845. That PR had to leave the OmniVoice compose as a paste-from-doc snippet because docker-compose*.yml is damage-control-protected by basename (even service-local docker-compose.omnivoice.yml was blocked).

Fix: name it omnivoice.compose.yml — outside the docker-compose*.yml glob — and commit it as a real, usable file. make -C pmoves omnivoice-up now works directly (the Makegate's fail-fast 'operator must install it' path is no longer hit). OMNIVOICE_COMPOSE repointed to the new path.

Service definition is identical to the doc snippet: omnivoice-server on :8002, GPU reservation (nvidia/all), /healthz healthcheck, omnivoice-hf-cache volume, profiles [creator, voice], OMNIVOICE_PLATFORM arm64 hook for SPARK. Still a validate-on-SPARK scaffold (arm64 CUDA wheel TODO-confirm-on-node per SPARK_DEPLOY.md). YAML validated.

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Chores
    • Updated the OmniVoice local compose configuration reference used for the voice-enabled setup, aligning it with the committed compose artifact.
    • Added/introduced an OmniVoice server Docker Compose configuration featuring GPU-enabled runtime settings, a /healthz health check, configurable host/port and model-related environment options, and a persisted HuggingFace cache volume.
    • Ensured the service activates only under the relevant compose profiles.

…yml)

#1845 left the compose as a doc snippet because docker-compose*.yml is guard-
protected by basename. Fix: name it omnivoice.compose.yml (outside the glob) and
commit it for real, so 'make -C pmoves omnivoice-up' works without the operator
hand-pasting from SPARK_DEPLOY.md. Repoints OMNIVOICE_COMPOSE to the new path.
Service unchanged (omnivoice-server, :8002, GPU reservation, HF cache volume,
profiles creator/voice, OMNIVOICE_PLATFORM arm64 hook for SPARK).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 20, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6294fded-eaae-4340-8419-2aa5e43f3428

📥 Commits

Reviewing files that changed from the base of the PR and between 444e99f and 0a7729c.

📒 Files selected for processing (1)
  • pmoves/services/creator-operator/omnivoice.compose.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • pmoves/services/creator-operator/omnivoice.compose.yml

📝 Walkthrough

Walkthrough

Renames the OmniVoice Docker Compose file from docker-compose.omnivoice.yml to omnivoice.compose.yml and adds its full content: an omnivoice-server service with CUDA build args, GPU deployment, HuggingFace cache volume, /healthz healthcheck, and creator/voice profile gating. The OMNIVOICE_COMPOSE variable in the Makefile is updated to reference the new filename.

Changes

OmniVoice Compose File Rename and Service Definition

Layer / File(s) Summary
OmniVoice compose service definition and Makefile reference
pmoves/services/creator-operator/omnivoice.compose.yml, pmoves/Makefile
New omnivoice.compose.yml defines the omnivoice-server service with configurable build args (CUDA tag, PyTorch wheel), port 8002, environment variables for host/device/token/model/ASR/ref-voice/HF cache, a named omnivoice-hf-cache volume, an HTTP /healthz healthcheck, NVIDIA GPU reservation via deploy, and activation under creator or voice profiles. The Makefile OMNIVOICE_COMPOSE variable is updated to point to the renamed file.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~5 minutes

Poem

🐇 A file was renamed, neat and bright,
omnivoice.compose.yml shines right,
GPU reserved, healthcheck in place,
Voice and creator profiles, such grace.
Hop hop hooray, the Makefile agrees! 🎙️

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is largely incomplete. It lacks required sections: Summary (missing bullet list format), Testing (no commands/output documented), Required Checks checklist, and Review Coordination checklist. Follow-up Tasks and Reviewer Notes are omitted. Add a Summary section with bullet points, document Testing commands/output, include all required checklists (CHIT Contract Check, contracts/schemas update, documentation), and Review Coordination items.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: committing a real OmniVoice compose file instead of a documentation snippet, with the filename change from docker-compose.omnivoice.yml to omnivoice.compose.yml as the primary technical accomplishment.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/omnivoice-compose-real

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
pmoves/services/creator-operator/omnivoice.compose.yml (1)

30-30: ⚡ Quick win

Consider using *_FILE pattern for OMNIVOICE_TOKEN secret per secret-hardening conventions.

The OMNIVOICE_TOKEN environment variable is read directly from the environment without using a file-based pattern (e.g., OMNIVOICE_TOKEN_FILE). According to PMOVES secret-hardening conventions, critical secrets should prefer file-based loading (*_FILE paths) to avoid plaintext secret exposure in process environment.

While the field is optional (defaults to empty), the pattern still deviates from guideline recommendations. Consider:

  • Using ${OMNIVOICE_TOKEN_FILE:-} and loading the token from a mounted secret file, or
  • Implementing a central env helper that manages token injection

This is a good-to-have hardening improvement rather than a blocker, since the token is optional and the field allows operators to override. If your deployment already handles secret injection at a higher level, you may defer this.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pmoves/services/creator-operator/omnivoice.compose.yml` at line 30, The
OMNIVOICE_TOKEN environment variable in the omnivoice.compose.yml file is using
direct environment variable binding instead of the file-based secret pattern.
Replace the current OMNIVOICE_TOKEN=${OMNIVOICE_TOKEN:-} with a file-based
approach by either changing it to OMNIVOICE_TOKEN_FILE=${OMNIVOICE_TOKEN_FILE:-}
and ensuring your application loads the token from the specified file path, or
implement a central environment helper that manages secure token injection. This
aligns with PMOVES secret-hardening conventions and reduces the risk of
plaintext secret exposure in process environment listings.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@pmoves/services/creator-operator/omnivoice.compose.yml`:
- Line 30: The OMNIVOICE_TOKEN environment variable in the omnivoice.compose.yml
file is using direct environment variable binding instead of the file-based
secret pattern. Replace the current OMNIVOICE_TOKEN=${OMNIVOICE_TOKEN:-} with a
file-based approach by either changing it to
OMNIVOICE_TOKEN_FILE=${OMNIVOICE_TOKEN_FILE:-} and ensuring your application
loads the token from the specified file path, or implement a central environment
helper that manages secure token injection. This aligns with PMOVES
secret-hardening conventions and reduces the risk of plaintext secret exposure
in process environment listings.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 42184683-7467-495d-a66c-0f79820ffd42

📥 Commits

Reviewing files that changed from the base of the PR and between e7ad11c and 444e99f.

📒 Files selected for processing (2)
  • pmoves/Makefile
  • pmoves/services/creator-operator/omnivoice.compose.yml

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 444e99f2e4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread pmoves/services/creator-operator/omnivoice.compose.yml Outdated
@claude

claude Bot commented Jun 20, 2026

Copy link
Copy Markdown

No high-severity findings from coderabbitai[bot].

P2: 0, P3: 2 (omnivoice.compose.yml:30 — OMNIVOICE_TOKEN env-var vs *_FILE pattern convention; PR description missing Testing/Required Checks sections).

@claude

claude Bot commented Jun 20, 2026

Copy link
Copy Markdown

Triage — chatgpt-codex-connector[bot] review

P1:

  • omnivoice.compose.yml:25 — Default bind 127.0.0.1 is unreachable from Docker containers; flute-gateway normalizes OMNIVOICE_URL to host.docker.internal:8002 but on Linux/bridge Docker that resolves to the bridge gateway IP, not loopback, so OmniVoice /healthz//synthesize silently fails unless OMNIVOICE_BIND is overridden.

P2: 0, P3: 0

Use /pr-trim to action P1 items above.

…ach it

Codex P2: flute-gateway normalizes OMNIVOICE_URL 127.0.0.1 ->
host.docker.internal (main.py:183), which on Linux/bridge Docker resolves
to the host gateway interface, not loopback — so a 127.0.0.1-published
OmniVoice port was unreachable from the flute-gateway container, breaking
the default in-stack deployment unless every operator overrode the bind.
Default to 0.0.0.0 (access gated by OMNIVOICE_TOKEN); operators on exposed
nodes with no in-container consumer can still set OMNIVOICE_BIND=127.0.0.1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@POWERFULMOVES
POWERFULMOVES merged commit 622c9e9 into main Jun 24, 2026
22 of 23 checks passed
@POWERFULMOVES
POWERFULMOVES deleted the feat/omnivoice-compose-real branch June 24, 2026 02:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant