Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
d318983
Allow specifying sonnet for agents
zkwentz Jan 19, 2026
f07cabd
Add multi-engine configuration variables to ralphy.sh
zkwentz Jan 19, 2026
6edbeae
Implement --engines CLI argument parsing in parse_args()
zkwentz Jan 19, 2026
195cf09
Add --engine-distribution CLI argument with validation
zkwentz Jan 19, 2026
10d2e0c
Merge progress files
zkwentz Jan 19, 2026
fcd1eac
Merge progress files from agent-3
zkwentz Jan 19, 2026
9adbf6a
Modify engine flags to append to ENGINES array with deduplication
zkwentz Jan 19, 2026
1584826
Implement validate_engines() function for multi-engine support
zkwentz Jan 19, 2026
b02e1d6
Add backward compatibility for engine argument parsing
zkwentz Jan 19, 2026
c0eda9f
Implement get_engine_for_agent() with round-robin distribution
zkwentz Jan 19, 2026
fa54d01
Add dry-run display for multi-engine configuration
zkwentz Jan 19, 2026
3b823cf
Add serialize_engine_config() and deserialize_engine_config() functions
zkwentz Jan 19, 2026
b9fe07b
Merge branch 'ralphy/agent-2-add-engine-distribution-cli-argument-in-…
zkwentz Jan 19, 2026
10ff2e0
Implement get_engine_for_agent() with round-robin distribution
zkwentz Jan 19, 2026
28d2caa
Merge branch 'ralphy/agent-3-implement-engines-cli-argument-parsing-i…
zkwentz Jan 19, 2026
4af4e39
Merge branch 'ralphy/agent-4-modify-engine-flags-claude-cursor-openco…
zkwentz Jan 19, 2026
33261bb
Merge branch 'ralphy/agent-5-add-backward-compatibility-after-argumen…
zkwentz Jan 19, 2026
9556a57
Merge branch 'ralphy/agent-6-implement-validate-engines-function-that…
zkwentz Jan 19, 2026
30c5d8e
Merge branch 'ralphy/agent-7-display-parsed-engines-in-dry-run-output…
zkwentz Jan 19, 2026
4bef6f0
Merge branch 'ralphy/agent-8-create-serialize-engine-config-and-deser…
zkwentz Jan 19, 2026
cc260dd
Merge branch 'ralphy/agent-9-implement-get-engine-for-agent-function-…
zkwentz Jan 19, 2026
26d2e79
Add fill-first distribution strategy to get_engine_for_agent()
zkwentz Jan 19, 2026
ad7ea6c
Add random distribution strategy to get_engine_for_agent()
zkwentz Jan 19, 2026
e4636ee
Add weighted distribution strategy for multi-engine agent assignment
zkwentz Jan 19, 2026
801038b
Integrate engine parameter into run_parallel_agent()
zkwentz Jan 19, 2026
dab6898
Initialize engine tracking arrays in run_parallel_tasks()
zkwentz Jan 19, 2026
6ce4ad7
Add engine assignment preview table to dry-run output
zkwentz Jan 19, 2026
e38a0ff
Parse engine from status file in monitoring loop
zkwentz Jan 19, 2026
85f5824
Add engine name to parallel agent status display
zkwentz Jan 19, 2026
579f658
Extract inline status monitoring into display_agent_status() function
zkwentz Jan 19, 2026
b0b9399
Add get_engine_color() function returning ANSI color codes
zkwentz Jan 19, 2026
ee36de0
Add bc availability check in pre-flight, set USE_BC_FOR_COSTS flag
zkwentz Jan 19, 2026
3fb1533
Implement record_agent_result() function for multi-engine metrics agg…
zkwentz Jan 19, 2026
e0cb41e
Add print_engine_summary() call to final report section
zkwentz Jan 19, 2026
9a851ce
Implement print_engine_summary() function with engine tracking
zkwentz Jan 19, 2026
24ba160
Call record_agent_result() after each agent completes
zkwentz Jan 19, 2026
b91e60c
Implement load_parallel_config() function
zkwentz Jan 19, 2026
ecda95b
Implement load_parallel_config() and call early in main()
zkwentz Jan 19, 2026
4629bee
Include engine name in per-agent result output
zkwentz Jan 19, 2026
cd35570
Add --engine-distribution CLI argument with validation
zkwentz Jan 19, 2026
fa503bf
Implement --engines CLI argument parsing in parse_args()
zkwentz Jan 19, 2026
cf57bb8
Update --help output with --engines and --engine-distribution flags
zkwentz Jan 19, 2026
31d8262
Improve error messages for multi-engine support
zkwentz Jan 19, 2026
9135afb
Implement deduplicate_engines() function for multi-engine support
zkwentz Jan 19, 2026
ea9c8b0
Add multi-engine basic example configuration
zkwentz Jan 19, 2026
bc4ad6b
Add multi-engine documentation to README
zkwentz Jan 19, 2026
dc8def4
Add comprehensive backward compatibility test suite
zkwentz Jan 19, 2026
21dfb5e
Add weighted distribution example config
zkwentz Jan 19, 2026
4321919
Create comprehensive multi-engine specification document
zkwentz Jan 19, 2026
4606be2
Merge agent-1: Add multi-engine configuration variables
zkwentz Jan 19, 2026
d7ccf6f
Merge agent-2: Add --engine-distribution CLI argument
zkwentz Jan 19, 2026
ad438e5
Merge agent-3
zkwentz Jan 19, 2026
962b786
Merge agent-4: Modify engine flags for multi-engine support
zkwentz Jan 19, 2026
f7ee957
Merge agent-5: Add backward compatibility for argument parsing
zkwentz Jan 19, 2026
223f7ea
Merge agent-6
zkwentz Jan 19, 2026
5440911
Merge agent-7
zkwentz Jan 19, 2026
9b8fb9f
Merge agent-8
zkwentz Jan 19, 2026
c2dcc04
Merge agent-9
zkwentz Jan 19, 2026
ee94167
Merge agent-10
zkwentz Jan 19, 2026
676a75c
Merge agent-11
zkwentz Jan 19, 2026
9060dae
Merge agent-12
zkwentz Jan 19, 2026
9ae7299
Merge agent-13
zkwentz Jan 19, 2026
310d197
Merge agent-14
zkwentz Jan 19, 2026
bc897e2
Merge agent-15
zkwentz Jan 19, 2026
b2fd5fe
Merge agent-16
zkwentz Jan 19, 2026
ffd3e92
Merge agent-17
zkwentz Jan 19, 2026
f9979c2
Merge agent-18
zkwentz Jan 19, 2026
8bb55ce
Merge agent-19
zkwentz Jan 19, 2026
97a19ce
Merge agent-20
zkwentz Jan 19, 2026
1b64861
Merge agent-21
zkwentz Jan 19, 2026
237f6f7
Merge branch 'ralphy/agent-22-call-record-agent-result-after-each-age…
zkwentz Jan 19, 2026
4d51694
Merge agent-23
zkwentz Jan 19, 2026
ec7f7ae
Merge agent-24
zkwentz Jan 19, 2026
690c100
Merge agent-25
zkwentz Jan 19, 2026
2231f8b
Merge agent-26
zkwentz Jan 19, 2026
ed3c975
Merge agent-27
zkwentz Jan 19, 2026
6e697e3
Merge agent-28
zkwentz Jan 19, 2026
0b2eb24
Merge agent-29
zkwentz Jan 19, 2026
34baaca
Merge agent-30
zkwentz Jan 19, 2026
59d0b03
Merge agent-31
zkwentz Jan 19, 2026
793d980
Merge agent-32
zkwentz Jan 19, 2026
5250ab5
Merge agent-33
zkwentz Jan 19, 2026
0a0eeec
Merge agent-34
zkwentz Jan 19, 2026
e9daf49
Clean up duplicate functions and configuration blocks from multi-engi…
zkwentz Jan 19, 2026
51548b8
Add worker pool pattern and multi-engine auto-detection
zkwentz Jan 20, 2026
e4328a3
Merge branch 'main' into feature/multi-engine-integration
zkwentz Jan 20, 2026
9c6afdf
Fix merge conflicts in test files
zkwentz Jan 20, 2026
deddddb
Address PR review feedback from Greptile
zkwentz Jan 20, 2026
71f1c22
Fix verify_weighted_distribution.sh to check weighted case specifically
zkwentz Jan 20, 2026
837c96d
Restore IFS after modification in test_engines_parsing.sh
zkwentz Jan 20, 2026
046ba8c
Improve test isolation and robustness
zkwentz Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .ralphy/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Ralphy Configuration
# https://github.com/michaelshimeles/ralphy

# Project info (auto-detected, edit if needed)
project:
name: "ralphy"
language: "bash"
framework: ""
description: "Orchestration framework for AI code agents"

# Commands (auto-detected from package.json/pyproject.toml)
commands:
test: ""
lint: ""
build: ""

# Rules - instructions the AI MUST follow
# These are injected into every prompt
rules: []
# Examples:
# - "Always use TypeScript strict mode"
# - "Follow the error handling pattern in src/utils/errors.ts"

# Boundaries - files/folders the AI should not modify
boundaries:
never_touch: []
# Examples:
# - "src/legacy/**"
# - "migrations/**"

# Parallel execution configuration
parallel:
# List of engines to use for parallel execution
engines:
- name: "claude"
weight: 2
- name: "opencode"
weight: 1

# Distribution strategy: round-robin, weighted, random, fill-first
distribution: "weighted"

# Maximum number of concurrent tasks
max_concurrent: 3
16 changes: 16 additions & 0 deletions .ralphy/progress.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Created examples/multi-engine-weighted.yaml

This file demonstrates weighted distribution configuration for multi-engine parallel execution.

Key features:
- Shows how to configure weighted task distribution across engines
- Includes comprehensive documentation and usage examples
- Demonstrates weight ratios (claude:3, cursor:2, opencode:2)
- Explains how weighted distribution works with task cycling
- Provides alternative weight configuration examples
- Includes 14 sample tasks organized in 3 parallel groups

The example shows a practical use case for weighted distribution where you want
Claude to handle ~43% of tasks (weight 3) and Cursor/OpenCode to handle ~29% each (weight 2).

File location: examples/multi-engine-weighted.yaml
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ Rules apply to all tasks (single or PRD).

## AI Engines

**Single engine:**
```bash
ralphy # Claude Code (default)
ralphy --opencode # OpenCode
Expand All @@ -87,6 +88,48 @@ ralphy --qwen # Qwen-Code
ralphy --droid # Factory Droid
```

**Multi-engine** - distribute tasks across multiple engines:

```bash
# Use Claude and Cursor in round-robin
./ralphy.sh --parallel --engines claude,cursor

# Weighted distribution (Claude gets 70%, Cursor gets 30%)
./ralphy.sh --parallel --engines claude:7,cursor:3

# Different distribution strategies
./ralphy.sh --parallel --engines claude,cursor --engine-distribution round-robin # alternate
./ralphy.sh --parallel --engines claude,cursor --engine-distribution fill-first # fill Claude first
./ralphy.sh --parallel --engines claude,cursor --engine-distribution random # random assignment
./ralphy.sh --parallel --engines claude:7,cursor:3 --engine-distribution weighted # use weights
```

**Config file:**
```yaml
# .ralphy/config.yaml
parallel:
engines:
- name: claude
weight: 7
- name: cursor
weight: 3
distribution: weighted # round-robin, weighted, fill-first, random
max_concurrent: 5
```

Then run: `./ralphy.sh --parallel`

**Distribution strategies:**
- `round-robin` - cycles through engines (Agent 1→claude, 2→cursor, 3→claude...)
- `weighted` - respects weight ratios (7:3 = 70% claude, 30% cursor)
- `fill-first` - fills first engine before using next
- `random` - random selection from available engines

**Weight syntax:**
- `--engines claude,cursor` - equal distribution (weight 1 each)
- `--engines claude:7,cursor:3` - weighted (70% claude, 30% cursor)
- Weights can be any positive integers, interpreted as ratios

## Task Sources

**Markdown** (default):
Expand Down Expand Up @@ -195,6 +238,8 @@ capabilities:
| `--github-label TAG` | filter issues by label |
| `--parallel` | run parallel |
| `--max-parallel N` | max agents (default: 3) |
| `--engines LIST` | comma-separated engines with optional weights (e.g., `claude:7,cursor:3`) |
| `--engine-distribution TYPE` | distribution strategy: `round-robin`, `weighted`, `fill-first`, `random` |
| `--branch-per-task` | branch per task |
| `--base-branch NAME` | base branch |
| `--create-pr` | create PRs |
Expand Down
Loading