feat(services): add service discovery infrastructure with NATS + Supabase integration - #491
Conversation
Add comprehensive integration document outlining how to incorporate IndyDevDan's Tactical Agentic Coding framework with PMOVES.AI. Includes 12 leverage points, git worktrees, Claude hooks, ARCHON integration, and concrete 4-phase implementation architecture. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Convert CRLF to LF for consistent line endings across environments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update integration plan to clarify that TAC integration is about Claude Code CLI developer tooling that LEVERAGES existing PMOVES infrastructure, not replacing it. Key changes: - Add CRITICAL DISTINCTION section explaining CLI vs runtime agents - Document existing production services (Agent Zero, Hi-RAG, SupaSerch, etc.) - Refocus phases on .claude/ context, custom commands, and hooks - Update implementation priorities to leverage, not duplicate - Provide examples of slash commands that call existing services - Remove unnecessary Docker Compose modifications This ensures Claude Code CLI becomes PMOVES-aware without duplicating the sophisticated multi-agent orchestration already in production. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive .claude/ directory structure following IndyDevDan TAC patterns to make Claude Code CLI PMOVES-aware. This enables developers to leverage existing production infrastructure (Agent Zero, Hi-RAG v2, SupaSerch, NATS, etc.) directly from their coding workflow. Directory structure: - CLAUDE.md: Always-on context with architecture overview and service catalog - commands/: Custom slash commands for service interaction - /search:hirag - Query Hi-RAG v2 hybrid RAG - /health:check-all - Verify all service health - /agents:status - Check Agent Zero orchestrator - /deploy:smoke-test - Run integration tests - /deploy:services - Docker compose status - context/: Detailed reference documentation - services-catalog.md - Complete service listing with APIs - nats-subjects.md - NATS event subject catalog - mcp-api.md - Agent Zero MCP API reference - chit-geometry-bus.md - Structured data exchange format - evoswarm.md - Evolutionary optimization system This transforms Claude Code CLI from a general-purpose coding assistant into a PMOVES-native development tool that understands and integrates with the existing multi-agent orchestration stack. Also include comprehensive PMOVES.AI Services and Integrations documentation for reference. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Refined .claude/commands/ based on TAC continuous improvement loop: Fixes: - Add 'cd pmoves' prefix to all make/compose commands - Update verify-all description with actual capabilities - Document compose file location (pmoves/docker-compose.yml) New command: - /deploy:up - Comprehensive service bring-up with profiles This demonstrates TAC methodology: test commands, discover gaps, refine iteratively based on actual system behavior. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Complete TAC integration enhancements following iterative refinement: TensorZero Integration (Primary Model Provider): - Add comprehensive TensorZero documentation (.claude/context/tensorzero.md) - Prominent placement in CLAUDE.md as primary observability/model provider - Document TensorZero Gateway (port 3030), ClickHouse (8123), UI (4000) - Include usage examples for LLM calls, embeddings, metrics queries - Configuration, troubleshooting, and best practices Claude Code CLI Hooks: - pre-tool.sh: Security validation, blocks dangerous operations - post-tool.sh: Publishes to NATS (claude.code.tool.executed.v1) - Fallback to local logging if NATS unavailable - Comprehensive hooks README with installation and usage Git Worktrees for Parallel Development: - Complete guide for parallel Claude Code CLI instances - PMOVES-specific patterns (monorepo, submodules, docker ports) - Real-world examples and troubleshooting - Enables simultaneous work on multiple features Common Development Tasks: - Add TensorZero examples to CLAUDE.md - LLM calls, embeddings, metrics queries via TensorZero This demonstrates TAC continuous improvement: implement, test, discover gaps, refine, document, and iterate. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix DeepResearch Dockerfile to work with context: ./services - Change COPY paths from absolute (services/...) to relative (deepresearch/...) - Remove unused COPY contracts (not needed by deepresearch) - Quote JSON value in .env.local to prevent shell parsing error - AGENT_ZERO_DECODING now properly quoted with single quotes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
## PBnJ (Pinokio-Based N-tier) Deployment System ### Deployment Scripts (deploy/scripts/) - deploy-k8s.sh: Kubernetes orchestration for ai-lab, kvm4, local targets - deploy-compose.sh: Docker Compose wrapper for local development - Both scripts executable with comprehensive error handling ### Kubernetes Manifests (deploy/k8s/) Base manifests: - namespace.yaml: PMOVES namespace with labels - pmoves-core-deployment.yaml: Core service with security hardening - pmoves-core-service.yaml: ClusterIP service - ingress.yaml: Nginx ingress controller config - kustomization.yaml: Resource aggregation Overlays: - ai-lab/: 5 replicas, pmoves.lab.local, v1.0.0-lab-hardened - kvm4/: 2 replicas, pmoves.kvm4.yourdomain.tld, v1.0.0-kvm4-hardened - local/: dev-local tag, pmoves.localtest.me ### Pinokio Application (pbnj/pinokio/api/pmoves-pbnj/) One-click graphical interface for: - AI Lab K8s cluster management (start/stop/status) - KVM4 gateway deployment controls - Local Docker Compose stack management (up/down/logs) - 10 JSON workflow files + pinokio.js manifest ### Documentation - deploy/README.md: Comprehensive deployment guide - pbnj/README.md: Pinokio integration and usage ## Critical Security Fixes ### Kubernetes Security Hardening deploy/k8s/base/pmoves-core-deployment.yaml: - Pod-level securityContext: runAsNonRoot, runAsUser 1000, fsGroup 1000 - Container securityContext: readOnlyRootFilesystem, no privilege escalation - Capability drop ALL - tmpfs volumes for /tmp and /var/cache ### Dependency Management .github/dependabot.yml: - Automated updates for pip, docker, github-actions - Weekly schedule with max 10 PRs per ecosystem - Conventional commit messages ### Credential Sanitization pmoves/env.shared.example: - Removed exposed Google OAuth credentials (GOCSPX-*) - Replaced real email addresses with example.com placeholders - Removed real domain references (cataclysmstudios.com) ## Documentation Updates Open-Source Model Recommendations: - Added comprehensive TensorZero Gateway section (~180 lines) - Model routing architecture and configurations - ClickHouse observability patterns - Hardware deployment matrix - Integration examples (TOML, Python) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Document the complete PBnJ (Pinokio-Based N-tier) deployment system design and implementation details. ## Contents (1,353 lines) ### Deployment Architecture - Multi-environment strategy: AI Lab K8s, KVM4 gateway, local dev - Service orchestration via deploy-k8s.sh and deploy-compose.sh - Kustomize-based Kubernetes manifest management ### Implementation Artifacts **Deployment Scripts:** - deploy-k8s.sh: K8s orchestration with target-specific config - Supports: ai-lab, kvm4, local targets - Environment variable overrides for context/namespace - Built-in validation and error handling - deploy-compose.sh: Docker Compose wrapper - Detects docker-compose vs docker compose - Project and compose file customization **Kubernetes Manifests:** - Base manifests: namespace, deployment, service, ingress - Overlays: ai-lab (5 replicas), kvm4 (2 replicas), local (dev) - Kustomize patches for environment-specific configuration **Pinokio Integration:** - pinokio.js manifest with menu structure - JSON workflows for each deployment target: - lab-up/down, kvm4-up/down, local-up/down/logs, status ### Security Considerations - SecurityContext configuration patterns - NetworkPolicy examples - Secret management strategies - TLS termination with cert-manager ### Cloud School IAM Integration - WorkOS identity provider patterns - Role-based access control design - Audit logging architecture ## Related Implementations - /deploy/ directory structure - /pbnj/ Pinokio application - Kubernetes manifests in deploy/k8s/ This document served as the blueprint for the complete PBnJ deployment system implemented in commit 1f09825. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Comprehensive security hardening documentation for production PMOVES.AI deployments. ## PMOVES.AI-Edition-Hardened-Full.md (999 lines) ### Security Architecture Documentation **Container Security:** - Distroless and minimal base images (gcr.io/distroless/python3) - Multi-stage Docker builds with BuildKit secret mounts - Non-root user execution (UID 65532) - Read-only root filesystems with tmpfs mounts - Capability dropping (drop: ALL) - seccomp and AppArmor profiles **GitHub Actions CI/CD Security:** - Harden-Runner EDR with network egress blocking - Trivy vulnerability scanning (HIGH/CRITICAL gates) - Cosign keyless image signing - SBOM generation with Syft - Dependabot configuration (pip, docker, github-actions) - JIT ephemeral runners documentation **Kubernetes Security:** - Pod and container SecurityContext patterns - NetworkPolicies for zero-trust networking - Pod Security Standards (restricted profile) - Resource limits and quotas - TLS termination with cert-manager - RBAC least-privilege access **Infrastructure Security:** - Cloudflare Tunnels for zero-trust remote access - Tailscale mesh VPN for admin access - RustDesk self-hosted remote desktop - Secret management with Docker secrets - 90-day secret rotation policy **Network Security:** - Internal network isolation - TLS/mTLS for service-to-service communication - Ingress controller hardening - DDoS protection patterns ## PMOVES.AI-Edition-Hardened-Summary.md (103 lines) Executive summary of security hardening approach: - Quick reference for key security controls - Decision matrix for deployment scenarios - Compliance mapping (SOC 2, ISO 27001) - Security posture scorecard ## Implementation Status This documentation describes the target hardened state. Current implementation gaps identified in security audit: - 3/42 services (7%) with non-root users - 0/42 services with distroless images - Missing K8s SecurityContext in most deployments - No Harden-Runner EDR in workflows - No active Cloudflare Tunnels or Tailscale VPN See docs/Security-Hardening-Roadmap.md for phased implementation plan to achieve full hardened posture. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Phased implementation plan to achieve production-grade security posture for PMOVES.AI multi-agent orchestration platform. ## Security-Hardening-Roadmap.md (1,728 lines, 45KB) ### Executive Summary **Current Security Posture:** - Container Security: 7% hardened (3/42 services) - Base Images: 2% minimal (1/42 distroless/alpine) - Kubernetes: 0% SecurityContext coverage - CI/CD: No Harden-Runner EDR, basic scanning - Network: No NetworkPolicies, no TLS/mTLS - Secrets: No rotation mechanism **Risk Assessment:** - HIGH: Privilege escalation (39 root containers) - HIGH: Supply chain attacks (no EDR, missing gates) - HIGH: Data exfiltration (no NetworkPolicies) - MEDIUM: Container escape (writable filesystems) - MEDIUM: Secret compromise (no rotation) ### Phase 1: Immediate Actions (Week 1-2) - HIGH Priority **Task 1.1: Non-Root Users for All Services** - Files: 42 Dockerfiles, docker-compose.yml - Effort: 40-60 hours - Implementation: Add UID 65532 to all containers - Testing: Verify `id` output, run smoke tests **Task 1.2: Read-Only Filesystems + tmpfs** - Files: docker-compose.yml, service overrides - Effort: 50-70 hours - Implementation: read_only: true + tmpfs mounts - Testing: Attempt writes to root, verify functionality **Task 1.3: Kubernetes SecurityContext** - Files: deploy/k8s/base/*.yaml, overlays - Effort: 30-40 hours - Implementation: Pod + container securityContext - Testing: kube-bench, manual privilege tests **Task 1.4: Kubernetes NetworkPolicies** - Files: network-policy-*.yaml (4 new files) - Effort: 40-50 hours - Implementation: Default deny + tier-based allow - Testing: Verify isolation with curl tests **Task 1.5: TLS Termination** - Files: ingress.yaml, cert-manager config - Effort: 20-30 hours - Implementation: cert-manager + Let's Encrypt - Testing: SSL Labs A+ rating **Phase 1 Target: 80% security score** ### Phase 2: Short-Term Hardening (Week 3-6) - MEDIUM Priority **Task 2.1: Harden-Runner EDR** - Files: 7 GitHub workflow files - Effort: 15-20 hours - Implementation: step-security/harden-runner@v2 - Testing: StepSecurity dashboard monitoring **Task 2.2: BuildKit Secret Mounts** - Files: 42 Dockerfiles, workflows - Effort: 25-35 hours - Implementation: --mount=type=secret patterns - Testing: Dive/Trivy secret scanning **Task 2.3: Branch Protection + Signed Commits** - Files: GitHub settings, .github/CODEOWNERS - Effort: 10-15 hours - Implementation: 2 approvals, code owner reviews - Testing: Attempt unsigned commit (should fail) **Task 2.4: Secret Rotation Automation** - Files: rotate-secrets.sh, workflows - Effort: 30-40 hours - Implementation: 90-day rotation schedule - Testing: Dry-run rotation, verify zero downtime **Phase 2 Target: 90% security score** ### Phase 3: Long-Term Hardening (Month 2-3) - MEDIUM/LOW Priority **Task 3.1: Distroless Image Migration** - Files: 42 Dockerfiles (phased) - Effort: 80-100 hours - Strategy: Easy → Medium → Hard services - Target: 70% distroless (30/42 services) **Task 3.2: Cloudflare Tunnels** - Files: docker-compose.cloudflared.yml, config - Effort: 20-30 hours - Implementation: Zero-trust remote access - Testing: Verify no direct port exposure **Task 3.3: Tailscale Mesh VPN** - Files: docker-compose.tailscale.yml, ACLs - Effort: 25-35 hours - Implementation: Sidecar pattern + ACLs - Testing: SSH via Tailscale only **Task 3.4: Security Observability** - Files: falco rules, Grafana dashboards, alerts - Effort: 40-50 hours - Implementation: Falco + Prometheus + Grafana - Testing: Trigger test attacks, verify detection **Phase 3 Target: 95% security score** ### Metrics & Success Criteria **Automated Tracking:** - scripts/security-metrics.sh for weekly reports - GitHub Actions workflow for metric dashboards - Prometheus/Grafana security dashboards **Success Metrics:** - Non-root: 100% (42/42) - Read-only FS: 100% (42/42) - K8s SecurityContext: 100% - NetworkPolicies: 5+ tier-based policies - TLS: 100% ingress + A+ SSL Labs - Distroless: 70% (30/42) - CVE reduction: 50-80% ### Rollback Plans Each phase includes independent rollback: - docker-compose.root-fallback.yml - docker-compose.writable.yml - deploy/k8s/rollback/ patches - Secret backup directories (30-day retention) ### Critical Files for Implementation 1. pmoves/docker-compose.hardened.yml (extend to all services) 2. deploy/k8s/base/pmoves-core-deployment.yaml (SecurityContext) 3. pmoves/services/*/Dockerfile (42 files - non-root + distroless) 4. deploy/k8s/base/network-policy-*.yaml (4 new files) 5. .github/workflows/build-images.yml (Harden-Runner) ### Estimated Total Effort **380-520 person-hours (2.5-3.5 person-months)** Recommended: 2 engineers dedicated for 8-12 weeks ## Implementation Status This roadmap addresses gaps identified in the comprehensive security audit. Critical fixes already completed: - ✅ Exposed credentials removed from env.shared.example - ✅ K8s SecurityContext added to pmoves-core deployment - ✅ Dependabot enabled (.github/dependabot.yml) Next: Execute Phase 1 tasks to achieve 80% security posture. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Reference documentation for WorkOS-based identity and access management strategy integrated with PBnJ deployment system. ## Cloud School IAM and Onboarding Strategy.pdf Enterprise IAM architecture for PMOVES.AI platform: ### Identity Provider Integration - WorkOS SSO for unified authentication - B2B (organizations) and B2C (individual users) - SAML, OAuth 2.0, OpenID Connect support - Directory sync (SCIM) ### Role-Based Access Control (RBAC) - Developer role: Local dev environments only - DevOps role: All deployment targets (ai-lab, kvm4, local) - Admin role: Full control + monitoring access ### PBnJ Integration Points - Pinokio user authentication → WorkOS SSO - Identity-aware deployment authorization - Audit logging for all PBnJ actions - Session management and MFA enforcement ### Onboarding Workflow - New user registration via WorkOS portal - Automatic role assignment based on organization - Claude Code CLI credential provisioning - Deployment target access matrix ### Compliance & Audit - SOC 2 Type II audit trail requirements - GDPR user data handling - Access review schedules (quarterly) - Privileged access management (PAM) ## Integration with PMOVES.AI This IAM strategy integrates with: - PBnJ deployment system (/pbnj/) - Kubernetes RBAC policies (deploy/k8s/) - Tailscale ACLs for VPN access - Cloudflare Access for zero-trust ## Implementation Status Documented but not yet implemented. Integration planned for: - Phase 2 of Security Hardening Roadmap - Post-PBnJ deployment rollout - Coordinated with Tailscale VPN activation Reference: docs/Security-Hardening-Roadmap.md (Phase 3) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove old PMOVES.AI-Edition-Hardened.md in favor of the new comprehensive documentation structure: - PMOVES.AI-Edition-Hardened-Full.md (999 lines) - PMOVES.AI-Edition-Hardened-Summary.md (103 lines) - Security-Hardening-Roadmap.md (1,728 lines) The original document has been superseded by this more detailed and actionable three-document set that provides: 1. Full security architecture documentation 2. Executive summary for quick reference 3. Phased implementation roadmap with specific tasks 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix kustomize resource paths (../../base → ../base) in all overlays - Add .envrc.example with all K8s and Compose env vars - Update deploy/README.md with detailed prerequisites - Add ingress hostname comments for clarity Validation Results: ✅ All 3 overlays (ai-lab, kvm4, local) build successfully ✅ All deployment scripts pass syntax validation ✅ All 8 PBnJ workflow JSON files valid Fixes: - Kustomize paths were incorrect (looking for deploy/base instead of deploy/k8s/base) - Missing environment variable documentation - Prerequisites section lacked verification commands 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Bumps the pip group with 1 update in the /pmoves/services/archon directory: [mcp](https://github.com/modelcontextprotocol/python-sdk). Updates `mcp` from 1.12.2 to 1.23.0 - [Release notes](https://github.com/modelcontextprotocol/python-sdk/releases) - [Changelog](https://github.com/modelcontextprotocol/python-sdk/blob/main/RELEASE.md) - [Commits](modelcontextprotocol/python-sdk@v1.12.2...v1.23.0) --- updated-dependencies: - dependency-name: mcp dependency-version: 1.23.0 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…updates (#274) Bumps the npm_and_yarn group with 1 update in the /CATACLYSM_STUDIOS_INC/PMOVES-PROVISIONS/docker-stacks/jellyfin-ai/api-gateway directory: [jws](https://github.com/brianloveswords/node-jws). Bumps the npm_and_yarn group with 2 updates in the /pmoves/ui directory: [next](https://github.com/vercel/next.js) and [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast). Updates `jws` from 3.2.2 to 3.2.3 - [Release notes](https://github.com/brianloveswords/node-jws/releases) - [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md) - [Commits](auth0/node-jws@v3.2.2...v3.2.3) Updates `next` from 16.0.0 to 16.0.7 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](vercel/next.js@v16.0.0...v16.0.7) Updates `mdast-util-to-hast` from 13.2.0 to 13.2.1 - [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases) - [Commits](syntax-tree/mdast-util-to-hast@13.2.0...13.2.1) --- updated-dependencies: - dependency-name: jws dependency-version: 3.2.3 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: next dependency-version: 16.0.7 dependency-type: direct:production dependency-group: npm_and_yarn - dependency-name: mdast-util-to-hast dependency-version: 13.2.1 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: POWERFULMOVES <142271328+POWERFULMOVES@users.noreply.github.com>
Brings in all features from main branch to PMOVES.AI-Edition-Hardened: Centralized PMOVES UI: - Service catalog with 55 services across 11 tiers - Real-time health monitoring with SystemStatsBar - Tier-based navigation and filtering - Neo-brutalism design with Cataclysm Studios branding - Hub view with system overview and quick stats New Submodules: - PMOVES-n8n: n8n workflow automation - PMOVES-crush: PMOVES-Crush deployment tooling - PMOVES-Pipecat: Voice communication framework - PMOVES-Ultimate-TTS-Studio: Multi-engine TTS - PMOVES-Pinokio-Ultimate-TTS-Studio: Pinokio integration - PMOVES-tensorzero: TensorZero gateway - Pmoves-hyperdimensions: Hyperdimensional computing - pmoves/vendor/agentgym-rl: RL training framework - pmoves/vendor/e2b: E2B Danger Room Documentation Updates: - CLAUDE.md: Updated with new service catalog and workflows - CI/CD: Enhanced with self-hosted runners - Testing: Comprehensive test strategy and coverage requirements Preserves hardened branch security commits: - 17 security hardening commits remain intact - PBnJ deployment infrastructure - Cloud School IAM strategy 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
**A2UI NATS Bridge Service:** - Bridges Google A2UI (Agent-to-User Interface) events to PMOVES geometry bus - REST API at /api/v1/a2ui for A2UI JSON events - WebSocket at /ws/a2ui for A2UI agents (JSONL format) - WebSocket at /ws/client for PMOVES UI subscribers - Publishes to a2ui.render.v1 subject on NATS - Subscribes to geometry.> for bidirectional communication - Prometheus metrics: a2ui_events_published, a2ui_active_websockets **A2UI Format Support (v0.9):** - createSurface / beginRendering: Initialize UI surface - updateComponents / surfaceUpdate: Add/update UI components - updateDataModel / dataModelUpdate: Update data bindings - userAction: Forward user interactions to agents **NATS WebSocket Enablement:** - Added WebSocket support to NATS service - Flags: -ws -ws_port 4223 - Exposed on host port 9223 (9223:4223) This enables: 1. A2UI agents to generate declarative UIs for PMOVES 2. Real-time UI updates via NATS geometry bus 3. Browser-based WebSocket connections to NATS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ty) (#400) The websockets library's extra_headers parameter is not supported by uvloop's create_connection(), which is used by uvicorn. Removed the extra_headers parameter and rely on the apikey URL parameter for Supabase realtime authentication. Also: - Add pmoves/vendor/python/ to .gitignore (unpacked packages) - Remove 275+ unpacked package files from git tracking Vendor submodules were already configured with POWERFULMOVES forks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
) * fix(security): NATS authentication and event queuing Critical security and reliability fixes: - Add NATS authentication support (user/pass via env vars) - Add event queuing when NATS is disconnected (buffer up to 1000 events) - Flush buffered events automatically on reconnection - Update docker-compose.yml with NATS auth configuration - Add NATS_USER/NATS_PASS environment variables 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(deploy): publisher-discord now loads env.shared for DISCORD_WEBHOOK_URL The publisher-discord service was using <<: *env-tier-agent which only loads env.tier-agent and .env.local, but DISCORD_WEBHOOK_URL is stored in env.shared. Updated the service to use explicit env_file configuration that includes env.shared, similar to gateway-agent pattern. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix(pr398): backend service fixes from PR #396 review 1. **agent_zero/controller.py** - Better unsubscribe logging - Extract `subject` attribute for better debugging - Replace silent `pass` with warning log 2. **comfy-watcher/watcher.py** - Remove redundant local import - `timedelta` already imported at module level These fixes address CodeRabbit review comments from PR #396. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(pr398): add _parse_int_env helper and improve error handling 1. **comfy-watcher/watcher.py** - Comprehensive error handling - Add `_parse_int_env()` helper with validation - Add corrupted state file backup with timestamp - Replace bare `except:` with specific exception types - Add logging module for proper error tracking - Add comprehensive docstrings 2. **hi-rag-gateway-v2/app.py** - Safer environment parsing - Add `_parse_int_env()` helper with validation - Replace unsafe `int(os.environ.get())` calls: - NEO4J_DICT_REFRESH_SEC, NEO4J_DICT_LIMIT - ENTITY_CACHE_TTL, ENTITY_CACHE_MAX - GEOMETRY_CACHE_WARM_LIMIT, HTTP_PORT, PGPORT 3. **session-context-worker/main.py** - Error handling improvements - Add `_parse_int_env()` helper for HEALTH_PORT - Add `_nats_loop_done()` callback for crash detection - Import missing `Msg` type from nats.aio.msg 4. **jellyfin-bridge/main.py** - Task cleanup - Store and cancel autolink task on shutdown - Remove unused imports (contextlib, suppress) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(codereview): address critical review comments from PR #398 - session-context-worker: Move if __name__ guard AFTER app definition (was causing NameError at runtime) - tokenism-simulator: Fix lock ordering to prevent deadlock (must use _results_lock, _status_lock consistently) - hi-rag-gateway-v2: Use logger.warning() for general config parsing (not rerank-specific _RERANK_CONFIG_WARNINGS list) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * style(session-context-worker): remove redundant inline string literals Remove non-docstring triple-quoted strings inside lifespan function body (lines 95, 103) that were creating confusion. Keep actual function docstring. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(session-context-worker): add payload schema validation - Load schemas from services/common/events.py at startup - Validate incoming claude.code.session.context.v1 payloads - Validate outgoing kb.upsert.request.v1 payloads - Prevents schema drift between publishers and consumers - Follows coding guideline: "Validate payloads against schemas before publishing events using services/common/events.py" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…365) * feat(cli): rebrand Crush CLI to PMOVES CLI Update user-facing branding from "Crush CLI" to "PMOVES CLI" while maintaining backward compatibility with existing Crush infrastructure. Changes: - Update crush_app help text: "Crush CLI integration" → "PMOVES CLI integration" - Update crush_configurator.py docstring to emphasize PMOVES deployment - Update command help texts for setup/status/preview commands - Update user-facing documentation in .claude/commands/crush/ Rationale: The "Crush" name originated as an internal codename but the production CLI should reflect the PMOVES brand for consistency with the broader PMOVES.AI ecosystem. The underlying "crush" command name and file paths are preserved for backward compatibility. Modified Files: - pmoves/tools/mini_cli.py - pmoves/tools/crush_configurator.py - .claude/commands/crush/setup.md - .claude/commands/crush/status.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * feat(cli): add PMOVES Agent SDK commands to mini CLI Implement agent-sdk sub-commands for creating and managing PMOVES Agent instances with full ecosystem access via interactive CLI wizard. Features Implemented: - `pmoves agent-sdk create` - Interactive wizard for agent creation - 5 agent roles: researcher, code-reviewer, media-processor, knowledge-manager, general - Role-based tool and subagent configuration - Automatic NATS, TensorZero, and Hi-RAG connection - Unique agent ID generation with timestamps - Beautiful formatted output with configuration summary - `pmoves agent-sdk run` - Execute tasks with existing agents - Task execution with streaming output - Model override support - Session resumption capability - `pmoves agent-sdk list` - List agent instances - Status filtering - Configurable limit (placeholder for SessionManager integration) - `pmoves agent-sdk status` - Check agent status - NATS heartbeat monitoring - Active agent information (placeholder for SessionManager) Technical Details: - Integrated with PMOVES-BoTZ Agent SDK - Async/await pattern for agent lifecycle management - Interactive role selection with graceful Ctrl+C handling - Comprehensive error handling for missing dependencies - Auto-discovery of PMOVES-BoTZ submodule Usage Examples: ```bash # Interactive agent creation pmoves agent-sdk create # Pre-select role pmoves agent-sdk create --role researcher # Execute task pmoves agent-sdk run pmoves-researcher-1735123456 "Analyze architecture" # List agents pmoves agent-sdk list --status active --limit 50 ``` Related Documentation: - .claude/commands/agent-sdk/create.md - .claude/commands/agent-sdk/run.md - .claude/commands/agent-sdk/resume.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * docs(agent-sdk): update CLI documentation for run and resume commands Update user-facing documentation for agent-sdk CLI commands to reflect the new PMOVES CLI integration pattern. Changes: - `.claude/commands/agent-sdk/run.md` - Updated from skill-based to CLI command documentation - Added usage examples with `pmoves agent-sdk run` - Documented arguments and options - Added troubleshooting section - `.claude/commands/agent-sdk/resume.md` - Updated from skill-based to CLI command documentation - Added session management workflow - Documented session states and storage backends - Added troubleshooting section Documentation Pattern: All agent-sdk command documentation now follows a consistent pattern: - Usage section with use cases - Implementation section with CLI examples - Arguments and options tables - What It Does checklist - Related commands section - Notes and troubleshooting This aligns with the create.md documentation updated in the previous implementation phase. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix(agent-sdk): address all PR #365 review comments Fix all 14 issues from comprehensive PR review across error handling, documentation, and code quality improvements. Critical Fixes (4): - Make NATS connection mandatory with ConnectionError on failure - Add two-layer error handling to task execution - Replace generic Exception catches with specific error types - Exit with code 1 on all failure paths Documentation (5): - Correct NATS event subjects (remove non-existent events) - Add prerequisites sections to all agent-sdk docs - Fix example code placeholders with runnable examples - Update model IDs (remove date suffixes) - Document storage backends and timeouts Improvements (5): - Add Google-style docstrings to key functions (≥80% coverage) - Enhance Crush configurator docstrings - Improve list/status placeholders with NATS monitoring guidance - Fix context manager usage pattern - Add comprehensive timeout documentation All syntax checks pass. Docstring coverage ≥80%. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
PMOVES-Agent-Zero (5cbda82): - Add TensorZero gateway provider configuration - Chat and embedding providers at http://tensorzero-gateway:3000/v1 PMOVES-BoTZ (b39e3b4): - Add agent SDK integration for Claude Agent SDK - Add MCP bridge for external service communication - Add glancer feature for quick data inspection - Fix circular imports in AgentGym RL trainer - Add gateway docker-compose and N8N MCP integration PMOVES-ToKenism-Multi (9981589): - Update contract schemas (audio, entities, persona) - Update UI components (charts, simulation results) - Add skeleton UI component - Update integration submodules (DoX, Firefly-iii) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Merge PR #393 - Geometric framework upgrade - Merged main's github-runner-ctl service configuration - Removed duplicate @DataClass decorator in controller.py - Fixed env.tier-agent environment variables 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…rs (#321) Comprehensive GEOMETRY BUS integration across PMOVES.AI services with CHIT shape attribution support. - CGP publishing to `tokenism.cgp.ready.v1` in DeepResearch and SupaSerch - CHIT voice attribution events in Flute Gateway - CHIT event subscriptions in Publisher Discord - Prometheus metrics and /metrics endpoint for DeepResearch - Proper error handling separation (build vs publish errors) - TensorZero mode with Ollama model support 🤖 Generated with [Claude Code](https://claude.com/claude-code)
…ization (#343) * feat(geometry-bus): add submodules and CHIT mathematical documentation Registers previously half-initialized submodules and adds new ones: - PMOVES-Pinokio-Ultimate-TTS-Studio: TTS Pinokio package - PMOVES-tensorzero: Full TensorZero codebase - Pmoves-hyperdimensions: Three.js parametric surface visualizer Adds PMOVESCHIT mathematical foundation documentation: - Hyperbolic geometry (Poincaré Disk Model) - Riemann zeta dynamics for spectral filtering - Holographic principle for dimensional encoding - Human_side prosodic sidecar for voice agents This establishes the mathematical framework for CGP v2 (CHIT Geometry Packets) used in cross-modal GEOMETRY BUS communication. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(geometry-bus): add CHIT and hyperdimensions TAC commands Adds 7 new TAC commands for GEOMETRY BUS interaction: CHIT Commands: - /chit:encode - Encode data as CGP v2 packet - /chit:decode - Decode and validate CGP v2 packets - /chit:visualize - Render packet geometry via hyperdimensions - /chit:bus - Publish/subscribe to GEOMETRY BUS Hyperdimensions Commands: - /hyperdim:render - Render parametric surfaces (Poincaré, zeta, etc.) - /hyperdim:animate - Create animated visualizations - /hyperdim:export - Export to GLTF, STL, PNG formats Updates geometry-nats-subjects.md with: - CHIT packet lifecycle events (encoded/decoded) - Visualization request/ready events - EvoSwarm population and solution events - tokenism.transform.v1 for transformations - TAC command integration table 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: align PMOVESCHIT, Flute, and persona documentation with implementation Phase 1: Document Consolidation - Add deprecation notices to duplicate Flute Architecture docs Phase 2: PMOVESCHIT Core Updates - Create IMPLEMENTATION_STATUS.md tracking TypeScript/Python modules - Add implementation cross-references to PMOVESCHIT.md - Add status banners to decoder specification docs Phase 3: Flute Voice Documentation - Create FLUTE_PROSODIC_ARCHITECTURE.md (boundary types, TTFS optimization) - Create voice-personas.md (Supabase schema, provider configs) Phase 4: CATACLYSM & Personas - Create PERSONAS.md with math-enhanced 325+ persona framework - Add implementation links to CATACLYSM_STUDIOS_INC.md Phase 5: Cross-Reference Index - Create documentation-index.md navigation matrix 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This reverts commit 9c9ab35. Co-authored-by: PMOVES Bot <pmoves-bot@local>
* fix(gpu-orchestrator): Fix 22 issues from PR #483 review This commit addresses all 22 issues identified in the comprehensive PR review of the GPU Orchestrator service. Critical Fixes (3): - vram_tracker.py: Empty except blocks now log warnings - vram_tracker.py: Graphics processes distinguish NVML_ERROR_NOT_SUPPORTED - model_lifecycle.py: Queue complete error logs with request_id context Logging & Observability (12): - vram_tracker.py: 3 fixes (debug log, specific exceptions, docker errors) - model_lifecycle.py: 3 callback error context improvements - main.py: Mock GPU uses WARNING; health check returns 503 when degraded - vllm_client.py, ollama_client.py: Error handling comments - tts_client.py: Log warning when unhealthy - session_manager.py: Warning log when session not found - prometheus.py: Mark metrics stale (set to -1) on error Type Design Validation (4): - model_registry.py: ModelDefinition validation + private state - priority_queue.py: LoadRequest validation - session_manager.py: Session immutability (copy models/metadata) - gpu_status.py: Fixed TYPE_CHECKING import path Code Quality (3): - main.py: Fixed initialization order (metrics_exporter before callbacks) - nats/publisher.py: Comment explaining decimal * 100 = percentage Related: PR #483 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(gpu-orchestrator): Address Codex review feedback - Accept priority 0-10 to match API validation range - Fix NVML error handling: use e.value instead of e.code --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Add PMOVES-transcribe-and-fetch to .gitmodules (was missing after PR #486 revert) - Add pmoves/secrets/ to .gitignore to prevent accidental secret commits
This commit restores essential files that were marked for deletion but were not intentionally removed. Also fixes submodule configuration. Changes: - Restore pmoves/tests/ directory with all test files - Add .gitmodules with PMOVES-transcribe-and-fetch submodule - Add damage-control hooks for git operations - Remove duplicate pmoves/pmoves/ directory structure Notes: - Invidious SQL init scripts remain owned by root (Docker-created) - Submodule PMOVES-transcribe-and-fetch properly registered - Damage-control hooks prevent accidental destructive operations Related: PR #483, PR #486
Files were previously owned by root (Docker-created) and could not be restored without ownership change. All 9 SQL init scripts now restored.
- Add PMOVES-A2UI, PMOVES-MAI-UI, PMOVES-BotZ-gateway to .gitmodules - Add PMOVES-Danger-infra, PMOVES-E2B-Danger-Room-Deskdesktop to .gitmodules - Add PMOVES-E2b-Spells, pmoves-e2b-mcp-server, pmoves-surf to .gitmodules - Add PMOVES-transcribe-and-fetch, Pmoves-AgentGym-RL, e2b to .gitmodules - Update pmoves/.gitignore for generated files and data directories Note: pmoves/vendor/e2b needs manual cleanup (non-empty directory blocking submodule clone)
- Fix archon service to use supabase_kong_PMOVES.AI:8000 instead of host.docker.internal:54321
- Fix tokenism-ui profiles from ["agents", "botz"] to ["data"] (tier-aligned)
- Fix github-runner-ctl CMD to include PORT fallback (${PORT:-8100})
These changes align the hardened branch with production Supabase CLI
container DNS patterns used by the main branch.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 3a: Core service discovery integration for PMOVES service mesh. Python Services: - EvoController: Service discovery for Agent Zero URL + NATS announcement - Flute Gateway: NATS service announcement (MEDIA tier) - Flute Pipecat: TensorZero URL resolution via service registry - PMOVES.YT: Hi-RAG v2 URL resolution via service registry TypeScript Services: - Hi-RAG API client: Async service discovery with URL caching - Flute Client: Lazy URL resolution pattern - Presign Client: Async service discovery Key Features: - Fallback chain: env vars → Supabase → NATS → Docker DNS - NATS announcements on startup (services.announce.v1) - GEOMETRY BUS metadata in announcements - Graceful degradation when services unavailable Related: GEOMETRY BUS & CHIT integration documented Refs: #490 (Docker fixes) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 3b: Add NATS announcements to remaining core services. Services updated: - Presign: API tier service announcement (port 8088) - Agent Zero: AGENT tier with GEOMETRY BUS metadata (port 8080) - Archon: AGENT tier supervisor lifespan (port 8091) - FFmpeg-Whisper: MEDIA tier service announcement (port 8078) All services now announce on startup via services.announce.v1. Service mesh discovery is fully operational. Pattern: - Graceful fallback when nats_service_listener unavailable - Announcement within lifespan context manager - Environment variable configuration (NATS_URL, HOSTNAME, PORT, etc.) - Retry flag for resilient NATS connection Code review: pr-review-toolkit passed with no issues Syntax validation: All Python files compile successfully Health checks: Modified services return HTTP 200 Refs: c80887b (Phase 3a core integration) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…nnouncements - Add service_registry.py for hybrid service URL resolution (env -> Supabase -> NATS -> Docker DNS) - Add nats_service_listener.py for automatic service announcements on NATS - Add service_catalog Supabase migration for dynamic service registration - Remove obsolete agent-zero .gitkeep files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add service_health_check.py for resolving service URLs with fallback chain - Add common.sh with service_url(), service_healthy(), wait_for_service() functions - Add SERVICE_URL helper macro to Makefile for dynamic service resolution - Update flight_check_retro.py to use SERVICE_*_URL environment variables 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add serviceDiscovery.ts with getServiceUrl() for dynamic service resolution - Supports env var -> Supabase catalog -> Docker DNS fallback chain - Update test helpers to use new service discovery patterns 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…tion overhead - Streamline main.py initialization (195 lines reduced) - Remove redundant validation in model_registry.py - Simplify model_lifecycle.py service management - Clean up priority_queue.py and vram_tracker.py - Remove unused metrics and NATS publisher code 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Improve environment variable configuration in app.py - Add comprehensive dependency wait script - Update web UI with service status indicators - Update Dockerfiles for better layer caching 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add NATS service announcements to channel-monitor - Enhance deepresearch worker with proper error handling - Streamline comfy-watcher implementation - Update geometry decoder documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhance gateway-agent with improved health checks - Streamline github-runner-ctl NATS publishing - Remove obsolete agent_zero/controller.py - Update dependency requirements 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove BulkApprovalActions test component (functionality migrated) - Update ResearchResults test imports 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. 📝 WalkthroughWalkthroughThis PR introduces three major new systems: a service discovery and registry infrastructure for dynamic service URL resolution with NATS-based announcements; a comprehensive security damage-control system for Claude tool usage with configurable blocking patterns; and a persona-based agent orchestration framework with EvoSwarm optimization and modular enhancements, plus a new Model Registry service for dynamic ML model configuration and routing. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant UIClient as UI (serviceDiscovery.ts)
participant EnvVars as Environment
participant SupabaseAPI as Supabase Catalog
participant DNSFallback as Docker DNS
Client->>UIClient: Request service URL (slug, port)
UIClient->>UIClient: Check cache
alt Cache hit
UIClient-->>Client: Return cached URL
else Cache miss
UIClient->>EnvVars: Resolve SERVICE_<SLUG>_URL
alt Env override found
EnvVars-->>UIClient: Return env URL
else No env override
UIClient->>SupabaseAPI: Query service_catalog (slug, active)
alt Catalog entry found
SupabaseAPI-->>UIClient: Return ServiceInfo
UIClient->>UIClient: Normalize health_check_url
UIClient->>UIClient: Cache result (TTL)
else Catalog not found
alt Production mode
UIClient-->>Client: Error: Service unresolved
else Development mode
UIClient->>DNSFallback: Fallback: http://slug:port
DNSFallback-->>UIClient: Return fallback URL
UIClient->>UIClient: Cache result (TTL)
end
end
end
UIClient-->>Client: Return resolved URL
end
sequenceDiagram
participant Service as FastAPI Service
participant NATS as NATS Broker
participant ServiceRegistry as Service Registry
Service->>Service: Startup (lifespan context)
Service->>Service: Load config (port, slug, health_check)
alt NATS available
Service->>NATS: Publish service announcement
Note over NATS: services.announce.v1<br/>slug, name, url, tier, port
NATS-->>Service: Ack
Service->>Service: Log success
else NATS unavailable
Service->>Service: Log warning, continue
end
alt Later: Another service needs discovery
Note over Service: Runtime request
Service->>ServiceRegistry: get_service_url(slug)
ServiceRegistry->>ServiceRegistry: Check env override
ServiceRegistry->>ServiceRegistry: Check NATS cache
Note over ServiceRegistry: NATS announcements<br/>populate cache
ServiceRegistry-->>Service: Return URL
end
sequenceDiagram
participant Claude as Claude Tool
participant DamageControl as Bash Damage Control Hook
participant PatternsYAML as patterns.yaml
Claude->>DamageControl: JSON input (tool_name, command)
DamageControl->>PatternsYAML: Load config patterns
alt Config found
DamageControl->>DamageControl: Parse bashToolPatterns
DamageControl->>DamageControl: Check command vs patterns
alt Pattern matches (ask=true)
DamageControl-->>Claude: Exit 0, JSON permissionDecision: "ask"
else Pattern matches (blocked)
DamageControl-->>Claude: Exit 2, stderr security message
else No patterns match
DamageControl-->>Claude: Exit 0 (allowed)
end
else Config not found
DamageControl->>DamageControl: Log warning, default allow
DamageControl-->>Claude: Exit 0 (allowed)
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Suggested labels
Suggested reviewers
✨ Finishing touches
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. Comment |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…ation Implement comprehensive personas-first architecture for PMOVES.AI with dual Agent Zero/Archon integration and EvoSwarm parameter optimization. Phase 1: Enhanced Persona Schema - 10 new columns for agent creation (thread_type, model_preference, temperature, etc.) - persona_enhancements table with 8 enhancement types - Migration: 20250115_persona_agent_creation.sql Phase 2: Agent Zero Integration (submodule commits) - PersonaConfig dataclass with v5.12 compatibility - PersonaIntegrationService with Supabase client - FastAPI endpoints for persona management Phase 3: Archon Integration (submodule commits) - PersonaService with prompt template enhancement - API routes for persona management - Agent Zero integration via service discovery Phase 4: EvoSwarm Optimizer - PersonaOptimizer class with NATS integration - Fitness function for temperature, behavior_weights, boosts - Subscribes: persona.optimize.request.v1 - Publishes: persona.optimize.result.v1 Phase 5: Standard Personas Catalog - 8 personas: Developer, Researcher, Creator, Analyst, Archivist, Coordinator, Tester, Security - Detailed system prompts with PMOVES.AI context - Thread types, tools access, behavior weights per persona Documentation: - Updated .claude/context/mcp-api.md with persona endpoints 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update submodule references to include persona-based agent creation: - PMOVES-Agent-Zero: feat/personas-first-architecture - PMOVES-Archon: feat/personas-first-architecture 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This merge includes: - Service discovery infrastructure (8 commits) - Personas-first architecture with EvoSwarm optimization (2 commits) Total: 10 commits from feat/personas-first-architecture
Resolves conflicts in: - .gitmodules: Combined submodule definitions from both branches - pmoves/.gitignore: Merged ignore patterns (vendor, temp files, tier envs) - pmoves/docker-compose.yml: Kept container network URLs for Archon - pmoves/services/flute-gateway/main.py: Preserved prosodic/NATS features - PMOVES-Archon: Kept v3-clean version (d14166c) Also fixes deprecated @app.on_event usage: - pmoves/services/gateway-agent/app.py: Migrated to lifespan context manager - pmoves/services/messaging-gateway/main.py: Migrated to lifespan context manager - pmoves/services/session-context-worker/main.py: Migrated to lifespan context manager
* fix(makefile): Correct path in check-tier-envs target (#482) * fix(makefile): Correct path in check-tier-envs target The check-tier-envs target was using pmoves/env.tier-* paths but the Makefile is already in pmoves/ directory. Changed to use relative paths env.tier-* for correct file detection. Fixes issue where make -C pmoves check-tier-envs would fail to find tier env files that actually exist. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(makefile): Rename duplicate targets to avoid warnings The Makefile had duplicate target definitions that caused warnings: - up-workers at lines 147 and 730 - up-tensorzero at lines 161 and 762 - up-agents at lines 154 and 1102 - down-tensorzero at lines 242 and 765 Renamed later definitions to preserve both use cases: - up-workers (line 730) → up-workers-core - up-tensorzero (line 762) → up-tensorzero-full - up-agents (line 1102) → up-agents-stack - down-tensorzero (line 765) → down-tensorzero-full The friendly short names (with health checks) are now the only definition, while the explicit variants (with full service lists) are available via the -suffixed versions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(hardened): Restore missing modules and fix service configuration Layer 2-4 validation fixes for hardened branch: **Network & Configuration Fixes:** - channel-monitor: Add pmoves_data network for postgres connectivity - GRAPH_BOOST: Fix type error (string "true" → float "0.15") **Restored Missing Modules:** - services/common/telemetry.py: PublisherMetrics and PublishTelemetry - services/common/hrm_sidecar.py: HRM sidecar runtime support - libs/providers/embedding.py: Text embedding provider - libs/langextract/*: Language extraction providers and orchestrator **Hi-RAG Gateway v2 Fixes:** - app.py: Fix lifespan function global declarations (moved all globals to top of function - cannot re-declare after yield in generators) - web/: Create StaticFiles mount directory with placeholder index.html **Monitoring:** - grafana/datasources/datasource.yml: Add Prometheus datasource All 29 services now running healthy on hardened branch. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(hardened): Fix pmoves-ui network names for 5-tier architecture The pmoves-ui service was using undefined network names from the old architecture. Updated to match the 5-tier network model: - app_tier → pmoves_app - api_tier → pmoves_api - supabase_net (external, already correct) The pmoves-ui service now starts successfully on port 4482. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(ui): Configure pmoves-ui for production backend connectivity **Changes:** - Add env.tier-ui to pmoves-ui service env_file list - Load UI-specific environment variables for Supabase connection **Backend Connectivity:** - SUPABASE_ANON_KEY: Real credentials (not demo keys) - SUPABASE_SERVICE_ROLE_KEY: Service role for server operations - PRESIGN_SHARED_SECRET: Required for upload presign API - NEXT_PUBLIC_SUPABASE_URL: Client-side Supabase URL - NEXT_PUBLIC_SUPABASE_ANON_KEY: Client-side auth key **Note:** env.tier-ui is gitignored (contains credentials) and must be manually configured with real Supabase credentials from .env.local 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(hardened): Align tier env bootstrap with Hardened branch requirements - Add make targets: bootstrap-tier-envs, populate-tier-envs - Fix ALL tier anchors to include env.shared for credential inheritance - x-env-tier-worker (id003): NOW includes env.shared - x-env-tier-media (id004): NOW includes env.shared - x-env-tier-agent (id005): NOW includes env.shared - x-env-tier-ui (id007): NOW includes env.shared - Remove NEO4J_URL/USER/PASSWORD from env.shared (client-only vars) - Add INVIDIOUS_COMPANION_* keys to .env for invidious services This ensures services like invidious-companion (media tier) can access shared credentials and prevents Neo4j config errors from client vars. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(hardened): Migrate services from docker-compose postgres to Supabase CLI **Problem:** Services referenced postgres/postgrest from docker-compose.yml which was removed, but URLs and dependencies weren't updated. **Changes:** 1. Removed postgres, postgrest, postgrest-health services from compose - These now run via Supabase CLI instead 2. Updated all service URLs from postgrest:3000/3010 to Supabase CLI: - SUPABASE_URL: http://host.docker.internal:65421 - SUPA_REST_URL: http://host.docker.internal:65421/rest/v1 3. Fixed broken depends_on references: - channel-monitor: removed postgres dependency - tokenism-simulator: changed from [nats, postgrest] to [nats] **Services updated:** - pmoves-yt, hi-rag-gateway, archon, pmoves-ui - jellyfin-bridge, flute-gateway, tokenism-simulator - evo-controller, render-webhook 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(supabase): Correct port number and gateway-agent URL **PR Review Fixes:** - Changed all Supabase URLs from port 65421 → 54321 (correct Kong port) - Fixed gateway-agent to use host.docker.internal:54321 instead of removed supabase_kong_PMOVES.AI:8000 container reference - Removed obsolete postgrest:host-gateway entry from render-webhook **Context:** Supabase CLI maps Kong to host port 54321 (internal 8000). Services must use host.docker.internal:54321 to access Supabase API. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(cli): Restore TAC integration framework deleted in commit 4490fcd Restores 54 slash commands, security hooks, and TAC documentation that were removed during 6-tier architecture implementation. - Slash commands across 16 categories (agents, botz, db, deploy, github, health, k8s, pipecat, search, test, tts, workitems, worktree, yt) - Security hooks (pre-tool.sh blocks dangerous ops, post-tool.sh NATS) - TAC documentation (TAC_INTEGRATION_STATUS.md) - Phase 1 & 2 security hardening docs - Testing and service documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(cli): Restore remaining 22 TAC commands Restores the remaining TAC commands that were deleted in commit 4490fcd: - agent-sdk/handoff.md - chit/* (4 commands): bus, decode, encode, visualize - gpu/* (3 commands): models, optimize, status - hyperdim/* (3 commands): animate, export, render - langextract/* (4 commands): extract, process, provider, status - model/* (2 commands): load, unload - n8n/* (4 commands): execute, nodes, suggest, workflows - tensorzero/models.md - tts/test-all.md Source: pr24-tac-integration worktree at commit a7e3bbe 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(hardened): Fix service configuration issues for dual-mode data tier This commit fixes several bugs identified during code review: **Neo4j Service (Critical Fix):** - Remove env.shared from Neo4j service (use only env.tier-data) - Neo4j 5.22 rejects NEO4J_URL from env.shared as invalid config setting - This resolves "Unrecognized setting: URL" startup error **Port Configuration Fixes:** - Split NEO4J_PORT into NEO4J_HTTP_PORT (7474) and NEO4J_BOLT_PORT (7687) Previously both ports used same variable, causing conflicts when customized - Split NATS_PORT into NATS_PORT (4222) and NATS_MONITORING_PORT (9223) Previously monitoring port would break if NATS_PORT was customized **Internal Service Communication:** - Fix TensorZero URLs: Change port 3030→3000 for container-to-container calls Port 3030 is host port; containers must use internal port 3000 Services affected: botz-gateway, tokenism-simulator, gateway-agent - Add NEO4J_URL variable to hi-rag-gateway-v2 for Neo4j connectivity **Environment Variable Consistency:** - extract-worker: Change hardcoded SUPA_REST_URL to use ${VAR:-default} pattern - pdf-ingest: Change hardcoded NATS_URL to use ${VAR:-default} pattern - comfy-watcher: Change hardcoded MINIO_ENDPOINT to use ${VAR:-default} pattern These changes align with the tier architecture documented in .claude/context/tier-architecture.md and enable proper dual-mode operation for distributed PMOVES.AI deployments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(comfy-watcher): Remove NATS_URL override to use tier credentials The environment section was overriding NATS_URL with ${NATS_URL:-nats://nats:4222}, which looks for the variable in the host environment, not from env_file entries. Since env.shared and env.tier-worker already define NATS_URL with credentials (nats://nats:pmoves@nats:4222), removing the explicit override allows the container to use the authenticated URL from the tier env files. Fixes Authorization Violation errors in comfy-watcher NATS connection. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(network): Correct Supabase network name for container connectivity The docker-compose.yml referenced `supabase_net` but Supabase CLI creates `supabase_network_PMOVES.AI`. This mismatch prevented services from reaching Supabase via container-to-container networking. Changed network reference from: supabase_net: { name: supabase_net } To: supabase_net: { name: supabase_network_PMOVES.AI } Services like pmoves-ui can now reach Supabase Kong directly via the shared network instead of relying on host.docker.internal workaround. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(nats): Remove NATS_URL override from agent-zero service The environment section was overriding NATS_URL with ${NATS_URL:-nats://nats:4222}, which looks for the variable in the host environment, not from env_file entries. Since env.tier-agent defines NATS_URL with credentials (nats://nats:pmoves@nats:4222), removing the explicit override allows the container to use the authenticated URL from the tier env file. Also removed NATS_URL from env.shared (now tier-specific) to avoid conflicts between shared and tier-level configurations. Fixes "Authorization Violation" errors in agent-zero NATS connection. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore(scripts): Restore 50 utility scripts from main branch Restored scripts that were present on main branch but missing from hardened branch. These are utility scripts for: - Environment setup (env_setup.sh, env_check.sh) - Python venv creation (create_venv.sh variants) - Integration authentication (integration-auth-setup.sh) - n8n workflow management (n8n-flows-watcher.sh, n8n-import-flows.sh) - Open Notebook helpers (notebook_ingest_utils.py, etc.) - Neo4j bootstrap (neo4j_bootstrap.sh) - Credential management (credentials/*) - Proxmox bootstrap (proxmox/pmoves-bootstrap.sh) - Windows PowerShell equivalents (*.ps1 files) All scripts have been reviewed for alignment with hardened branch requirements. Container names and ports updated in separate commits. Restored from: origin/main 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(scripts): Align restored scripts with hardened branch requirements Updated container names and ports in restored scripts to match hardened branch architecture: Container name changes (cataclysm-* → hardened): - integration-auth-setup.sh: cataclysm-firefly → firefly - integration-auth-setup.sh: cataclysm-wger → pmoves-wger - integration-auth-setup.sh: cataclysm-jellyfin → jellyfin - wger_brand_defaults.sh: cataclysm-wger → pmoves-wger Port changes (Supabase migration 65421 → 54321): - pmoves.ps1: host.docker.internal:65421 → 54321 - test_m2_loop.py: 127.0.0.1:65421 → 54321 Also restored branding scripts from git history: - tailscale_brand_init.sh: Tailnet VPN initialization - tailscale_brand_up.sh: Tailnet connection script These fixes ensure the restored scripts work correctly with the hardened branch's network and service architecture. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore(integrations): Restore pr-kits integration configs from git history Restored integration configuration files for external services: wger (Health/Fitness): - nginx.conf: Reverse proxy configuration - docker-compose.pmoves-net.yml: Standalone deployment - README_PRSUMMARY.md: Integration documentation - .github/workflows/docker-publish.yml: CI/CD workflow firefly (Wealth/Finance): - nginx-buffers.conf: Buffer size configuration - docker-compose.pmoves-net.yml: Standalone deployment - README_PRSUMMARY.md: Integration documentation - .github/workflows/docker-publish.yml: CI/CD workflow jellyfin (Media Server): - docker-compose.pmoves-net.yml: Standalone deployment - README_PRSUMMARY.md: Integration documentation - .github/workflows/docker-publish.yml: CI/CD workflow open-notebook (Knowledge Base): - docker-compose.pmoves-net.yml: Standalone deployment - README_PRSUMMARY.md: Integration documentation - .github/workflows/docker-publish.yml: CI/CD workflow Also restored nginx config mounts in docker-compose.external.yml for wger and firefly services. Restored from: commit 3b4a548^, 4490fcd^ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> * feat(model-registry): Add Supabase-backed dynamic model configuration Implements a database-driven model registry that replaces hardcoded TensorZero TOML configuration with dynamic model routing and discovery. Database Schema: - 5 tables: model_providers, models, model_aliases, service_model_mappings, model_deployments - 3 views: v_active_models, v_service_models, v_active_deployments - 7 indexes for query performance - RLS policies for public read, authenticated write Model Registry Service: - FastAPI service on port 8110 - Modern lifespan context manager (replaces deprecated @app.on_event) - TensorZero TOML generation endpoint - GPU orchestrator integration via NATS mesh.gpu.* subjects - Migration script from existing TensorZero config Seed Data: - 8 providers (Ollama local/edge, Z.ai, OpenAI, Venice, Groq, OpenRouter, Together) - 18 models (chat, embedding, reranker, vision-language) - Service mappings for agent_zero, langextract, deepresearch Documentation: - Service README with API endpoints and quick start - Architecture documentation with schema reference - Service startup guide with dependency ordering 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(model-registry): Dockerfile permission and host binding fixes - Fix file ownership: Use COPY --chown instead of separate chown - Fix host binding: Use 0.0.0.0 instead of 127.0.0.1 for Docker 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(model-registry): Dockerfile permission and host binding fixes - Fix file ownership: Use COPY --chown instead of separate chown - Fix host binding: Use 0.0.0.0 instead of 127.0.0.1 for Docker 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(model-registry): Fix Supabase connectivity for Docker environment - Update main.py default SUPABASE_URL to use host.docker.internal:54321 - Use MODEL_REGISTRY_SUPABASE_URL variable to avoid .env conflicts - Follows pattern used by other services (hirag-gateway, tensorzero) Fixes connection error: "Name or service not known" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(submodules): Restore AgentGym submodules - Add AgentGym submodule (PMOVES.AI-Edition-Hardened branch) - Restore AgentGym-RL submodule (PMOVES.AI-Edition-Hardened branch) - Both submodules are custom forks for PMOVES.AI integration Context: Each submodule fork works standalone AND with PMOVES.AI services when docked. Nested submodules exist within these forks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore(submodules): Update submodule references after feature work - PMOVES-Archon: uv.lock dependency updates (5d65667) - PMOVES-A2UI: Add E2B Danger Room integration (a589d59) - pmoves/integrations/archon: Hi-RAG v2 semantic expansion (08a3210) - .gitmodules: Sync from PMOVES.AI-Edition-Hardened-v3-clean 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore(submodules): Add missing submodule gitlinks to index Adds 12 submodule references that were in .gitmodules but not in the git index. These are custom forks for PMOVES.AI integration. Submodules added: - PMOVES-Creator, PMOVES-Deep-Serch, PMOVES-DoX, PMOVES-HiRAG - PMOVES-Jellyfin, PMOVES-Open-Notebook, PMOVES-Remote-View - PMOVES-Tailscale, PMOVES-Wealth, PMOVES.YT - Pmoves-Health-wger, Pmoves-Jellyfin-AI-Media-Stack Also adds submodule workflow documentation for reference. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore(submodules): Remove ignore=all directives Removing 'ignore = all' from submodule configurations to enable proper tracking of submodule commits. This allows submodule changes to be committed and pushed as part of the merge to PMOVES.AI-Edition-Hardened-v3-clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Codex Agent <codex-agent@example.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
… to SQL policy allowlist
Summary
This PR introduces a comprehensive service discovery infrastructure for PMOVES.AI, enabling dynamic service URL resolution with a hybrid fallback chain that supports both docked (docker compose) and standalone operation modes.
Features
Core Service Discovery Infrastructure
Service Discovery Tooling
Frontend Integration
Additional Improvements
Commits
Testing
🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Infrastructure
Documentation
✏️ Tip: You can customize this high-level summary in your review settings.