Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
48 changes: 48 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# CodeRabbit Configuration
# Docs: https://docs.coderabbit.ai/configuration

language: en-US

reviews:
# Enable high-level summary of changes
high_level_summary: true
# Enable poem in PR summary (fun touch for open source)
poem: true
# Review status shown in PR
review_status: true
# Auto-collapse walkthrough after reading
collapse_walkthrough: false
# Paths to ignore in reviews
path_filters:
- "!dist/**"
- "!node_modules/**"
- "!**/*.lock"
- "!**/*.min.js"
- "!**/*.min.css"
# Request changes when issues found
request_changes_workflow: true
# Tools to use for static analysis
tools:
biome:
enabled: true
eslint:
enabled: true
shellcheck:
enabled: true

# Chat settings for interactive reviews
chat:
auto_reply: true

# Early access features
early_access: false

# Knowledge base for context
knowledge_base:
opt_out: false
learnings:
scope: auto
issues:
scope: auto
pull_requests:
scope: auto
111 changes: 111 additions & 0 deletions .github/BRANCH_PROTECTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Branch Protection Rules

This document describes the recommended GitHub branch protection settings for this repository.

## Setup Instructions

Go to **Settings → Branches → Add branch protection rule** for each branch pattern below.

---

## `main` Branch

**Pattern:** `main`

### Protection Settings

- [x] **Require a pull request before merging**
- [x] Require approvals: `1`
- [x] Dismiss stale pull request approvals when new commits are pushed
- [x] Require approval of the most recent reviewable push

- [x] **Require status checks to pass before merging**
- [x] Require branches to be up to date before merging
- Required checks:
- `build`
- `test`

- [x] **Require conversation resolution before merging**

- [x] **Do not allow bypassing the above settings**

- [x] **Restrict who can push to matching branches**
- Only allow merges via PR (no direct pushes)

- [ ] **Allow force pushes** - DISABLED
- [ ] **Allow deletions** - DISABLED

---

## `release/*` Branches

**Pattern:** `release/*`

### Protection Settings

- [x] **Require a pull request before merging**
- [x] Require approvals: `1`

- [x] **Require status checks to pass before merging**
- Required checks:
- `build`
- `test`

- [x] **Require conversation resolution before merging**

- [ ] **Allow force pushes** - DISABLED
- [ ] **Allow deletions** - DISABLED (until release is merged)

---

## `develop` Branch (Optional)

**Pattern:** `develop`

### Protection Settings

- [x] **Require a pull request before merging**
- Require approvals: `1` (or `0` for solo projects)

- [x] **Require status checks to pass before merging**
- Required checks:
- `build`
- `test`

---

## Workflow Summary

```text
feature/* ──────┐
├──► release/vX.X.X ──► main (tag vX.X.X)
fix/* ──────┘
```

1. **Feature/fix branches** → PR to `release/vX.X.X`
2. **Release branch** → PR to `main` when ready
3. **Tag release** on `main` after merge
4. **Delete release branch** after successful release

---

## GitHub CLI Commands

If you prefer CLI, you can set these via `gh`:

```bash
# Protect main branch
gh api repos/{owner}/{repo}/branches/main/protection -X PUT \
-F required_status_checks='{"strict":true,"contexts":["build","test"]}' \
-F enforce_admins=true \
-F required_pull_request_reviews='{"required_approving_review_count":1}'
```

---

## Rulesets (Recommended for GitHub Pro/Enterprise)

GitHub Rulesets provide more granular control. Consider using rulesets for:
- Commit message format enforcement
- File path restrictions
- Deployment environment gates
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Default owners for everything in the repo
* @0xSero

# Critical configuration files require owner approval
/.github/ @0xSero
/schema/ @0xSero
26 changes: 26 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## Description

<!-- Brief description of changes -->

## Type of Change

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
- [ ] Release preparation

## Checklist

- [ ] I have updated the CHANGELOG.md
- [ ] I have added tests that prove my fix/feature works
- [ ] All new and existing tests pass (`bun test`)
- [ ] I have updated documentation if needed

## Related Issues

<!-- Link any related issues: Fixes #123, Closes #456 -->

## Additional Notes

<!-- Any additional context or screenshots -->
48 changes: 48 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: CI

on:
push:
branches: [main, develop, 'release/*']
pull_request:
branches: [main, develop, 'release/*']

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Type check
run: bun run typecheck

- name: Build
run: bun run build

test:
runs-on: ubuntu-latest
env:
# Use OpenCode's free built-in model for E2E tests
OPENCODE_ORCH_E2E_MODEL: opencode/gpt-5-nano
steps:
- uses: actions/checkout@v4

- uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Run unit tests
run: bun test test/unit/ test/orchestrator.test.ts test/vision-routing.test.ts test/profile-lock.test.ts test/registry-ownership.test.ts test/workflows.test.ts

- name: Run E2E tests
run: bun test test/e2e.test.ts
timeout-minutes: 5
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ All notable changes to Open Orchestra will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.1] - Unreleased

### Added
- _Document new features here_

### Changed
- _Document changes here_

### Fixed
- _Document bug fixes here_

---

## [0.2.0] - 2025-12-21

### Added
Expand Down
56 changes: 54 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,49 @@

**Open Orchestra** is a multi-agent orchestration plugin for [OpenCode](https://opencode.ai) that enables you to spawn, manage, and coordinate specialized AI workers. It implements a **hub-and-spoke architecture** where a central orchestrator coordinates multiple specialized workers, each optimized for specific tasks.

### Why Multiple AI Workers?

Instead of asking one AI to do everything, Open Orchestra lets you use specialized workers:

| Worker | Best For | Example |
|--------|----------|---------|
| **Vision** | Analyzing screenshots, images, UI mockups | "What error is shown in this screenshot?" |
| **Docs** | Researching APIs, finding examples | "How do I use React's useEffect hook?" |
| **Coder** | Writing and modifying code | "Implement this feature" |
| **Architect** | System design, planning (read-only) | "Review this architecture" |

This specialization means better results, clearer reasoning, and the ability to run tasks in parallel.

## Prerequisites

Before installing Open Orchestra, verify you have:

| Requirement | Check Command | Expected |
|-------------|---------------|----------|
| Bun runtime | `bun --version` | 1.0.0 or higher |
| OpenCode CLI | `opencode --version` | Any recent version |
| AI Provider | `list_models` (in OpenCode) | At least one model listed |

**Quick verification:**

```bash
bun --version && opencode --version
```

**Need to configure a provider?** Add to `~/.config/opencode/opencode.json`:

```json
{
"provider": {
"anthropic": {
"apiKey": "sk-ant-your-key-here"
}
}
}
```

See the [Quickstart Guide](./docs/quickstart.md) for detailed setup instructions.

### Key Features

- **6 Built-in Worker Profiles** - Vision, Docs, Coder, Architect, Explorer, Memory
Expand Down Expand Up @@ -209,8 +252,17 @@ stateDiagram-v2

## Documentation

- [Guide](./docs/guide.md) - Configuration, profiles, and examples
- [Tool Reference](./docs/reference.md) - Tool index and descriptions
### Getting Started
- [Quickstart](./docs/quickstart.md) - Your first worker in 5 minutes
- [Examples](./docs/examples.md) - Real-world use cases and workflows
- [Troubleshooting](./docs/troubleshooting.md) - Common issues and fixes

### Reference
- [Configuration](./docs/configuration.md) - Complete configuration reference
- [Guide](./docs/guide.md) - Profiles, workflows, and advanced features
- [Tool Reference](./docs/reference.md) - All tools with examples

### Deep Dive
- [Architecture](./docs/architecture.md) - System design and patterns
- [CHANGELOG](./CHANGELOG.md) - Version history and changes

Expand Down
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ When enabled, the registry summary is injected into the chat system prompt:

### Vision Analyst (vision)
- **Status**: available
- **Model**: zhipuai/glm-4.6v
- **Model**: openrouter/meta-llama/llama-3.2-11b-vision-instruct
- **Purpose**: Analyze images, screenshots, diagrams
- **When to use**: When you need to understand visual content
- **Supports Vision**: Yes
Expand Down
Loading
Loading