MCPcopy
hub / github.com/F1bonacc1/process-compose

github.com/F1bonacc1/process-compose @v1.116.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.116.0 ↗
1,747 symbols 5,780 edges 217 files 365 documented · 21%
README

Process Compose

made-with-Go Maintenance PRs Welcome Go Report Releases X (formerly Twitter) URL

Process Compose is a simple and flexible scheduler and orchestrator to manage non-containerized applications.

Demo

Why? Because sometimes you just don't want to deal with docker files, volume definitions, networks and docker registries. Since it's written in Go, Process Compose is a single binary file and has no other dependencies.

Once installed, you just need to describe your workflow using a simple YAML schema in a file called process-compose.yaml:

version: "0.5"

processes:
  hello:
    command: echo 'Hello World'
  pc:
    command: echo 'From Process Compose'
    depends_on:
      hello:
        condition: process_completed

And start it by running process-compose from your terminal.

Check the Documentation for more advanced use cases.

Features

  • Processes execution (in parallel or/and serially)
  • Processes dependencies and startup order
  • Process recovery policies
  • Manual process [re]start
  • Processes arguments bash or zsh style (or define your own shell)
  • Per process and global environment variables using envsubst
  • Per process or global (single file) logs
  • Health checks (liveness and readiness)
  • Terminal User Interface (TUI) or CLI modes
  • Forking (services or daemons) processes
  • REST API (OpenAPI a.k.a Swagger) with optional token authentication PC_API_TOKEN
  • Logs caching
  • Functions as both server and client
  • Configurable shortcuts
  • Merge Configuration Files
  • Namespaces
  • Namespace Operations (Start, Stop, Restart via CLI and TUI)
  • Run Multiple Replicas of a Process
  • Run a Foreground Process
  • Interactive Process
  • Themes Support
  • On the fly Process configuration edit
  • On the fly Project update
  • Recipes Management
  • Scheduled Processes (cron and interval-based)
  • Dependency Graph visualization (CLI, TUI, and API)
  • MCP Server integration for AI assistants — expose processes as tools/resources and (optionally) the project's own control plane (start/stop/scale/list/logs)
  • Process Monitor (Push Notifications)

TUI

Get Process Compose

Installation Instructions

Documentation

Quick Start

Documentation

How to Contribute

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

See the Contributing page for more details.

English is not my native language, so PRs correcting grammar or spelling are welcome and appreciated.

Consider supporting the project ❤️

Github (preferred)

https://github.com/sponsors/F1bonacc1

Huge thanks to my amazing GitHub sponsors:

Sponsors

Bitcoin

3QjRfBzwQASQfypATTwa6gxwUB65CX1jfX

3QjRfBzwQASQfypATTwa6gxwUB65CX1jfX

Thank You!

Extension points exported contracts — how you extend this code

ProcessStarter (Interface)
ProcessStarter is an interface for starting processes. [5 implementers]
src/scheduler/scheduler.go
StyleListener (Interface)
StyleListener represents a skin's listener. [4 implementers]
src/config/styles.go
IProject (Interface)
IProject holds all the functions from the project struct that are being consumed by the tui package [3 implementers]
src/app/project_interface.go
StateObserver (Interface)
StateObserver consumes process state events. Implementations must be safe for concurrent calls; Notify is invoked while [2 …
src/types/process.go
ProcessRunner (Interface)
ProcessRunner defines the interface needed from ProjectRunner [2 implementers]
src/mcp/server.go
LogObserver (Interface)
(no doc) [3 implementers]
src/pclog/logs_observer.go
Admitter (Interface)
(no doc) [2 implementers]
src/admitter/admitter.go
Commander (Interface)
(no doc) [1 implementers]
src/command/commander.go

Core symbols most depended-on inside this repo

Error
called by 425
src/pclog/logger_interface.go
Run
called by 131
src/command/commander.go
Color
called by 87
src/config/color.go
getName
called by 71
src/app/process.go
Info
called by 60
src/pclog/logger_interface.go
Close
called by 48
src/pclog/logger_interface.go
Write
called by 34
src/tui/ansi_terminal.go
setAction
called by 33
src/tui/actions.go

Shape

Method 905
Function 658
Struct 141
TypeAlias 18
FuncType 14
Interface 11

Languages

Go100%

Modules by API surface

src/app/project_runner.go85 symbols
src/app/process.go80 symbols
src/api/pc_api_test.go64 symbols
src/tui/ansi_terminal.go48 symbols
src/client/client.go43 symbols
src/types/process.go42 symbols
src/tui/view.go36 symbols
src/app/project_interface.go36 symbols
src/api/mock_project_test.go36 symbols
src/mcp/control_tools_test.go34 symbols
src/config/styles.go31 symbols
src/tui/proc-table.go30 symbols

Dependencies from manifests, versioned

dario.cat/mergov1.0.2 · 1×
github.com/InVisionApp/go-loggerv1.0.1 · 1×
github.com/KyleBanks/depthv1.2.1 · 1×
github.com/adrg/xdgv0.5.3 · 1×
github.com/bahlo/generic-list-gov0.2.0 · 1×
github.com/bytedance/gopkgv0.1.4 · 1×
github.com/bytedance/sonicv1.15.2 · 1×
github.com/bytedance/sonic/loaderv0.5.1 · 1×
github.com/cloudwego/base64xv0.1.7 · 1×
github.com/cpuguy83/go-md2man/v2v2.0.7 · 1×

For agents

$ claude mcp add process-compose \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact