You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Powernode worker is a standalone Sidekiq process (220+ jobs) that communicates with the server exclusively via HTTP API. It does NOT share a database connection with the Rails backend.
All cron schedules are defined in worker/config/sidekiq.yml.
Schedule
Job
Queue
Description
Every minute
Docker::HostSyncJob
devops_default
Sync Docker host state
Every minute
Swarm::ClusterSyncJob
devops_default
Sync Swarm cluster state
Every 5m
Docker::HealthCheckJob
devops_default
Docker host health
Every 5m
Swarm::HealthCheckJob
devops_default
Swarm cluster health
Every 5m
Git::RunnerHealthCheckJob
devops_default
Git runner health
Every 10m
AiProviderHealthCheckJob
ai_orchestration
AI provider health
Hourly :00
Devops::ApprovalExpiryJob
default
Expire DevOps approvals
Hourly
AiBudgetRolloverJob
ai_orchestration
Roll over expired budgets
Every 6h
AiProviderModelSyncJob
ai_orchestration
Sync provider models
Every 6h
Compliance::AccountTerminationJob
compliance
Process account terminations
Every 6h
ChatSessionCleanupJob
maintenance
Clean stale chat sessions
Daily 1 AM
AiPricingSyncJob
ai_orchestration
Sync model pricing
Daily 2 AM
AiTrustDecayJob
ai_orchestration
Decay idle agent trust scores
Daily 2 AM
Maintenance::ScheduledBackupJob (full)
maintenance
Full database backup
Daily 2 AM
Compliance::DataRetentionEnforcementJob
compliance
Enforce retention policies
Daily 3:30 AM
AiMemoryPoolCleanupJob
ai_orchestration
Clean expired memory pools
Daily 3:45 AM
AiCompoundLearningMaintenanceJob
ai_orchestration
Learning decay/promotion
Daily 4:00 AM
AiMemoryMaintenanceJob
ai_orchestration
Memory consolidation, decay, rot detection
Daily 4:00 AM
AiTeamMessageCleanupJob
ai_orchestration
Team message cleanup
Daily 4:00 AM
AiBudgetReconciliationJob
ai_orchestration
Budget reconciliation
Daily 4:00 AM
Maintenance::BackupCleanupJob
maintenance
Remove expired backups
Daily 4:15 AM
AiSkillLifecycleMaintenanceJob (daily)
ai_orchestration
Skill conflict scan, stale decay
Daily 4:30 AM
AiSharedKnowledgeMaintenanceJob
ai_orchestration
Knowledge quality maintenance
Daily 4:45 AM
AiKnowledgeGraphMaintenanceJob
ai_orchestration
Graph confidence decay
Daily 5:00 AM
Swarm::EventCleanupJob
maintenance
Clean Swarm events
Daily 5:15 AM
Docker::EventCleanupJob
maintenance
Clean Docker events
Daily 5:30 AM
AiKnowledgeDocSyncJob
maintenance
Sync knowledge to markdown
Sunday 3 AM
Maintenance::ScheduledBackupJob (schema)
maintenance
Weekly schema backup
Sunday 5 AM
AiSkillLifecycleMaintenanceJob (weekly)
ai_orchestration
Prompt refinement, gap detection
1st of month 3 AM
AiSkillLifecycleMaintenanceJob (monthly)
ai_orchestration
Re-embed skills, health report
Every 15 min
AiEscalationTimeoutJob
ai_orchestration
Auto-escalate overdue escalations
Every 30 min
AiObservationPipelineJob
ai_orchestration
Collect sensor data for autonomous agents
Every hour
AiProposalExpiryJob
maintenance
Expire unreviewed proposals
Every 6h
AiGoalMaintenanceJob
maintenance
Agent goal lifecycle maintenance
Daily
AiObservationCleanupJob
maintenance
Clean expired observations
Weekly
AiInterventionPolicyTuningJob
maintenance
Analyze approval patterns, tune policies
Worker Services (41 files)
The worker has its own service layer for processing logic.
API Clients
Service
Purpose
BackendApiClient
Primary server HTTP client (all CRUD, AI, DevOps)
ApiClient
Base HTTP client for analytics/reporting
WebAuthApiClient
Sidekiq Web auth (separate circuit breaker)
LlmProxyClient
AI model proxy through server LLM endpoints
Core Services
Service
Purpose
BaseWorkerService
Base class for worker services
WorkerJwt
JWT token generation for service auth
PrimaryServiceAuth
Standard service authentication
SystemWorkerAuth
Elevated system-level auth
McpSecurityService
MCP credential decryption
Domain Services
Service
Purpose
EmailDeliveryWorkerService
Email delivery
EmailConfigurationService
Email provider config
AnalyticsWorkerService
Analytics processing
AnalyticsNotificationService
Analytics-based notifications
FileProcessingService
File upload processing
PdfReportWorkerService
PDF report generation
FirebaseService
Push notifications (Firebase)
TwilioService
SMS delivery (Twilio)
AiErrorTrackingService
AI error classification (deprecated)
DevOps Services (16 files)
Service
Purpose
Devops::DeploymentService
Deployment execution
Devops::GitOperationsService
Git operations
Devops::GitProviders::BaseProvider
Base Git provider
Devops::GitProviders::GiteaProvider
Gitea API client
Devops::GitProviders::GithubProvider
GitHub API client
Devops::GitProviders::GitlabProvider
GitLab API client
Devops::GitProviders::ProviderFactory
Provider instantiation
Devops::GitProviders::WebhookNormalizer
Cross-provider webhook normalization
Devops::StepHandlers::* (12)
Pipeline step handlers: checkout, deploy, create PR, post comment, run command, Claude execute, policy gate, SBOM, vulnerability scan, sign artifact, upload artifact, generic
Job Pattern
All jobs inherit from BaseJob:
classMyJob < BaseJobsidekiq_optionsqueue: 'default',retry: 3defexecute(*args)# Implementation — communicates with server via HTTP APIresult=api_client.get("/api/v1/resource/#{args[0]}")api_client.post("/api/v1/resource",{data: result})endend
Shared concerns in worker/app/jobs/concerns/ (12 files) provide: