Superviseur

License: MPL-2.0 release

Superviseur is a tool for running multi-service applications on isolated environments (Nix or Docker) using HCL/TOML or any language with an SDK. It is designed to be used both from a CLI and a web interface. Once you have a Superfile.hcl, you can create and start your application with a single command: superviseur up.

Project Status: 🐲 Unstable, alpha-ish quality.

🚚 Installation

```bash

Install dependencies

brew install protobuf # macOS sudo apt-get install -y protobuf-compiler # Ubuntu/Debian curl -fsSL https://bun.sh/install | bash

Compile

git clone https://github.com/tsirysndr/superviseur cd superviseur/webui && bun install && bun run build && cd .. cargo install --path . ```

macOS/Linux

bash brew install tsirysndr/tap/superviseur Or download the latest release for your platform here.

📦 Downloads

🚀 Usage

``` USAGE: superviseur [SUBCOMMAND]

OPTIONS: -h, --help Print help information -V, --version Print version information

SUBCOMMANDS: build Build all services or a specific one config Get the config of a service daemon Start the superviseur daemon down Stop all services help Print this message or the help of the given subcommand(s) init Create a new superviseur config (Superviseur.hcl) list List all services [aliases: ls] log Get the log of a process new Create a new superviseur config (Superviseur.hcl) open Open URL of a service in the browser project Manage projects ps List all running processes restart Restart all services or a specific one search-log Search the log of a service serve Start the superviseur server start Start all services or a specific one status Get the status of a service stop Stop all services or a specific one tail Tail the log of a process ui Start the superviseur dashboard up Start all services ```

📚 Getting Started

Start the server

Superviseur uses a server-client architecture. The server is responsible for managing the processes, while the client is responsible for communicating with the server.

bash superviseur daemon

Initialize a new project

bash superviseur new

Start by initializing a new project. This will create a Superfile.hcl file in the current directory with the following contents:

```hcl project = "demo"

service "demo" { type = "exec" command = "ping $GITHUBDOMAIN" workingdir = "/tmp" description = "Ping Service Example" dependson = [] env = { "GITHUBDOMAIN" = "github.com" } autostart = true autorestart = false namespace = "demo_namespace" stdout = "/tmp/demo-stdout.log" stderr = "/tmp/demo-stderr.log" } ```

Start the service

bash superviseur start demo

Start the service by running the start command.

Check the status

bash superviseur status demo Output: ● demo - Ping Service Example Active: Running since 2023-03-05 19:17:56.512455 UTC; 17 seconds ago PID: 30887 Command: ping $GITHUB_DOMAIN Directory: /tmp Log: /tmp/demo-stdout.log Stderr: /tmp/demo-stderr.log AutoRestart: false Type: exec Envs: GITHUB_DOMAIN=github.com

Show running processes

bash superviseur ps

Output: NAME PID STATUS COMMAND TYPE demo 31200 Up 4 seconds ago ping $GITHUB_DOMAIN exec

Stop the service

bash superviseur stop demo

Show all services

bash superviseur ls

Output: NAME STATUS COMMAND TYPE demo STOPPED "ping $GITHUB_DOMAIN" exec

As a Github Action

You can use the setup-superviseur Github Action like so:

yaml - uses: tsirysndr/setup-superviseur@v1 with: version: 'v0.1.0-alpha.6' - run: superviseur --help

📖 Examples

See the examples directory for more examples.

📝 License

MPL