A standalone, single-binary GUI orchestrator for multi-component applications. Built with Rust + egui — no runtime, no WebView, no installer needed.
# Default — reads/writes proconductor.json in current directory
./proconductor
# Explicit config — run multiple instances with different configs
./proconductor production.json
./proconductor staging.json
./proconductor my-app/config.jsonThe config file is created automatically if it doesn't exist. Each invocation is a fully independent instance.
The config is plain JSON, human-readable and version-control friendly:
{
"groups": [
{
"id": "uuid-...",
"name": "My Microservice App",
"components": [
{
"id": "uuid-...",
"name": "API Server",
"executable": "/usr/bin/node",
"working_dir": "/opt/myapp/api",
"args": "server.js --port 8080",
"log_path": "/var/log/myapp/{name}-{date}.log",
"run_as_user": "",
"env_vars": [
{ "key": "NODE_ENV", "value": "production" },
{ "key": "DB_HOST", "value": "localhost" }
]
}
]
}
]
}Log path placeholders:
{name}→ component display name{date}→YYYY-MM-DD
| Platform | Requirement |
|---|---|
| All | Rust 1.70+ (rustup update stable) |
| Linux | sudo apt install libgtk-3-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev |
| macOS | Xcode Command Line Tools (xcode-select --install) |
| Windows | MSVC build tools (Visual Studio installer) |
# Debug (fast compile, larger binary)
cargo run
# Release (optimized, stripped, ~8–15MB)
cargo build --release
# Output:
# Linux/macOS → target/release/proconductor
# Windows → target/release/proconductor.exeThe release binary is fully self-contained — copy it anywhere and run it.
# Linux → Windows (from Linux with mingw)
rustup target add x86_64-pc-windows-gnu
cargo build --release --target x86_64-pc-windows-gnu
# macOS ARM + Intel universal binary
rustup target add x86_64-apple-darwin aarch64-apple-darwin
cargo build --release --target x86_64-apple-darwin
cargo build --release --target aarch64-apple-darwin
lipo -create -output proconductor \
target/x86_64-apple-darwin/release/proconductor \
target/aarch64-apple-darwin/release/proconductorFor CI, use the cross tool.
If "Run as User" is set, ProConductor prepends sudo -u <user> to the command.
The user running ProConductor must have passwordless sudo for this to work:
# /etc/sudoers.d/proconductor
myuser ALL=(www-data) NOPASSWD: ALL
Since each instance reads/writes its own config file, you can run as many as
you want — each with a different .json file and its own window:
./proconductor backend.json &
./proconductor frontend.json &
./proconductor workers.json &The single proconductor binary is all you need to ship.
No installer, no dependencies, no runtime — just copy and run.
For desktop integration (optional):
- Linux: place a
.desktopfile in~/.local/share/applications/ - macOS: wrap in a
.appbundle withcargo-bundle - Windows: create a shortcut with the desired
.jsonas argument
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.