@ebowwa/workflow-daemon
v0.1.0
Published
Configurable workflow daemon for continuous AI loop execution with Claude Code teams
Maintainers
Readme
@ebowwa/workflow-daemon
Configurable workflow daemon for continuous AI loop execution with Claude Code teams.
Features
- 🔄 Workflow Engine: Composable workflow definitions with dependencies
- 🤖 Claude Code Teams: Spawn and monitor AI teams for each workflow
- 📊 SLAM Pattern: State → Loop → Action → Memory integration
- 🔄 BullMQ Queue: Distributed job processing with Redis
- 🔔 User Messaging: Redis Pub/Sub for daemon communication
- 🔁 Retry Logic: Exponential backoff with configurable policies
Installation
bun installUsage
Development
bun run devProduction (PM2)
bun run daemon:startProduction (systemd)
sudo cp config/workflow-daemon.service /etc/systemd/system/
sudo systemctl enable workflow-daemon
sudo systemctl start workflow-daemonCLI Commands
# Daemon control
workflow-daemon daemon start
workflow-daemon daemon stop
workflow-daemon daemon status
# Workflow management
workflow-daemon workflow list
workflow-daemon workflow start <workflowId>
workflow-daemon workflow status <executionId>
# Queue statistics
workflow-daemon queue statsArchitecture
Current Implementation (Standalone): Workflow daemon operates independently with BullMQ + Redis.
Future Integration (PM Daemon Merge): Will integrate with PM daemon infrastructure from packages/seed/node-agent/src/services/daemon/:
- Extend
PersistentClaudeSessionfor Claude team spawning - Integrate
PmMonitorServicefor event monitoring (30s polling) - Reuse
PmCommandsServicefor command routing - Share state management with
StateManagerfrom tooling
Integration Points (see code comments tagged with "FUTURE INTEGRATION"):
src/index.ts- Main daemon class with PM integration markerssrc/queues/workflow-queue.ts- Queue with event integration pointssrc/queues/pubsub.ts- Messaging with Telegram integration potential
┌─────────────────────────────────────────────────────────────┐
│ SYSTEMD / PM2 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Workflow Daemon │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ WorkflowEngine │ │
│ │ - Parse workflow definitions │ │
│ │ - Execute steps with dependencies │ │
│ │ - Handle retries and rollback │ │
│ └────────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ BullMQ Queue │ │
│ │ - Job processing with priorities │ │
│ │ - Exponential backoff retries │ │
│ │ - Dead letter queue for failures │ │
│ └────────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ PubSub (Redis) │ │
│ │ - User command inbox │ │
│ │ - Workflow event queue │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓ ↓ ↓
┌───────────────────┐ ┌───────────────────┐ ┌─────────────────┐
│ Claude Sessions │ │ Git Service │ │ Ralph Svc │
│ - Spawn teams │ │ - Branch/commit │ │ - Loops │
│ - Monitor runs │ │ - PR creation │ │ - SLAM │
└───────────────────┘ └───────────────────┘ └─────────────────┘Workflow Definition Schema
{
id: string;
name: string;
trigger: {
type: "manual" | "event" | "schedule";
};
steps: Array<{
id: string;
name: string;
action: StepAction;
dependencies?: string[];
}>;
execution: {
max_parallel?: number;
retry_policy: RetryPolicy;
};
}License
MIT
