Skip to main content

AI-driven development workflow orchestrator

Project description

Galangal Orchestrate

AI-driven development workflow orchestrator. A deterministic workflow system that guides AI assistants through structured development stages.

Note: Currently designed for Claude Code with a Claude Pro or Max subscription. Support for other AI backends (Gemini, etc.) is planned for future releases.

Features

  • Structured Workflow: PM → DESIGN → DEV → TEST → QA → SECURITY → REVIEW → DOCS
  • Multi-Framework Support: Python, TypeScript, PHP, Go, Rust - configure multiple stacks per project
  • Config-Driven: All validation, prompts, and behavior customizable via YAML
  • AI Backend Abstraction: Built for Claude CLI, ready for Gemini and others
  • Approval Gates: Human-in-the-loop for plans and designs
  • Automatic Rollback: Failed stages roll back to appropriate fix points
  • TUI Progress Display: Real-time progress visualization

Installation

pip install galangal-orchestrate

Or with pipx for isolated global install (recommended):

pipx install galangal-orchestrate

Updating

# If installed with pip
pip install --upgrade galangal-orchestrate

# If installed with pipx
pipx upgrade galangal-orchestrate

Quick Start

# Initialize in your project
cd your-project
galangal init

# Start a new task
galangal start "Add user authentication feature"

# Resume after a break
galangal resume

# Check status
galangal status

Workflow Stages

Stage Purpose Artifacts
PM Requirements & planning SPEC.md, PLAN.md
DESIGN Architecture design DESIGN.md
PREFLIGHT Environment checks PREFLIGHT_REPORT.md
DEV Implementation (code changes)
MIGRATION* DB migration validation MIGRATION_REPORT.md
TEST Test implementation TEST_PLAN.md
CONTRACT* API contract validation CONTRACT_REPORT.md
QA Quality assurance QA_REPORT.md
BENCHMARK* Performance validation BENCHMARK_REPORT.md
SECURITY Security review SECURITY_CHECKLIST.md
REVIEW Code review REVIEW_NOTES.md
DOCS Documentation updates DOCS_REPORT.md

*Conditional stages - auto-skipped if conditions not met

Task Types

Different task types skip certain stages:

Type Skips
Feature (full workflow)
Bug Fix DESIGN, BENCHMARK
Refactor DESIGN, MIGRATION, CONTRACT, BENCHMARK, SECURITY
Chore DESIGN, MIGRATION, CONTRACT, BENCHMARK
Docs Most stages
Hotfix DESIGN, BENCHMARK

Configuration

After galangal init, customize .galangal/config.yaml:

project:
  name: "My Project"
  stacks:
    - language: python
      framework: fastapi
      root: backend/
    - language: typescript
      framework: vite
      root: frontend/

stages:
  skip:
    - BENCHMARK
  timeout: 14400
  max_retries: 5

validation:
  qa:
    timeout: 3600
    commands:
      - name: "Lint"
        command: "./scripts/lint.sh"
        timeout: 600
      - name: "Tests"
        command: "pytest"

pr:
  codex_review: true
  base_branch: main

logging:
  enabled: true
  level: info
  file: logs/galangal.jsonl
  json_format: true
  console: false

prompt_context: |
  ## Project Patterns
  - Use repository pattern for data access
  - API responses use api_success() / api_error()

New in v0.2.22: Structured Logging

If you're upgrading from an earlier version, you can add the optional logging section to your existing config.yaml:

# Add to .galangal/config.yaml
logging:
  enabled: true           # Enable structured logging
  level: info             # debug, info, warning, error
  file: logs/galangal.jsonl  # Log file path (JSON Lines format)
  json_format: true       # JSON output (false for pretty console)
  console: false          # Also output to stderr

When enabled, logs workflow events like stage_started, stage_completed, rollback, etc. in JSON format for easy parsing and aggregation.

Customizing Prompts

Galangal uses a layered prompt system:

  1. Base prompts - Generic, language-agnostic prompts built into the package
  2. Project prompts - Your customizations in .galangal/prompts/

Prompt Modes

Project prompts support two modes:

Supplement Mode (Recommended)

Add project-specific content that gets prepended to the base prompt. Include the # BASE marker where you want the base prompt inserted:

<!-- .galangal/prompts/dev.md -->

## My Project CLI Scripts

Use these commands for testing:
- `./scripts/test.sh` - Run tests
- `./scripts/lint.sh` - Run linter

## My Project Patterns

- Always use `api_success()` for responses
- Never use raw SQL queries

# BASE

The # BASE marker tells galangal to insert the generic base prompt at that location. Your project-specific content appears first, followed by the standard instructions.

Override Mode

To completely replace a base prompt, simply omit the # BASE marker:

<!-- .galangal/prompts/preflight.md -->

# Custom Preflight

This completely replaces the default preflight prompt.

[Your custom instructions here...]

Available Prompts

Create any of these files in .galangal/prompts/ to customize:

File Stage
pm.md Requirements & planning
design.md Architecture design
preflight.md Environment checks
dev.md Implementation
test.md Test writing
qa.md Quality assurance
security.md Security review
review.md Code review
docs.md Documentation

Config-Based Context

You can also inject context via config.yaml without creating prompt files:

# .galangal/config.yaml

# Injected into ALL stage prompts
prompt_context: |
  ## Project Rules
  - Use TypeScript strict mode
  - All APIs must be documented

# Injected into specific stages only
stage_context:
  dev: |
    ## Dev Environment
    - Run `npm run dev` for hot reload
  test: |
    ## Test Setup
    - Use vitest for unit tests

Commands

Command Description
galangal init Initialize in current project
galangal start "desc" Start new task
galangal list List all tasks
galangal switch <name> Switch active task
galangal status Show task status
galangal resume Continue active task
galangal pause Pause for break
galangal approve Approve plan
galangal approve-design Approve design
galangal skip-design Skip design stage
galangal skip-to <stage> Jump to stage
galangal complete Finalize & create PR
galangal reset Delete active task

Requirements

  • Python 3.10+
  • Claude Code CLI installed (claude command available)
  • Claude Pro or Max subscription
  • Git

License

MIT License - see LICENSE file.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

galangal_orchestrate-0.2.26.tar.gz (97.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

galangal_orchestrate-0.2.26-py3-none-any.whl (106.0 kB view details)

Uploaded Python 3

File details

Details for the file galangal_orchestrate-0.2.26.tar.gz.

File metadata

  • Download URL: galangal_orchestrate-0.2.26.tar.gz
  • Upload date:
  • Size: 97.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for galangal_orchestrate-0.2.26.tar.gz
Algorithm Hash digest
SHA256 71e901b381b19d014228aaa39c9446fbb7503faf4e3905603091ab7fc0a22b5d
MD5 725184cc1748b0ac9482f68c5344f684
BLAKE2b-256 4bbcf44ba3d2db0a20c6002fa73fcbfe5c99ec23e715e80586e898f7dded8772

See more details on using hashes here.

Provenance

The following attestation bundles were made for galangal_orchestrate-0.2.26.tar.gz:

Publisher: publish.yml on Galangal-Media/galangal-orchestrate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file galangal_orchestrate-0.2.26-py3-none-any.whl.

File metadata

File hashes

Hashes for galangal_orchestrate-0.2.26-py3-none-any.whl
Algorithm Hash digest
SHA256 3a944ec1ae69cf30f6736166977b808d0844771c25c049e016ffac57a9e0f925
MD5 bb93cca66a617d2e859c70f3dd7af6a1
BLAKE2b-256 fb612754ec8168177b54979312f30ae77b689c6222c8f2d8f1040d739e362468

See more details on using hashes here.

Provenance

The following attestation bundles were made for galangal_orchestrate-0.2.26-py3-none-any.whl:

Publisher: publish.yml on Galangal-Media/galangal-orchestrate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page