Giter VIP home page Giter VIP logo

tsirysndr / superviseur Goto Github PK

View Code? Open in Web Editor NEW
66.0 4.0 11.0 14.63 MB

Define and run multi-service applications on isolated environments with Nix or Docker โ„๏ธ๐Ÿ‹ ๐Ÿ› ๏ธ ๐Ÿ’ป โœจ

License: Mozilla Public License 2.0

Rust 55.44% JavaScript 0.94% HTML 0.27% CSS 2.28% TypeScript 33.96% Nix 1.84% Gleam 1.82% Go 1.79% Makefile 0.05% MDX 1.60%
services supervisord systemd unix devenv nix nix-flake containers devops devbox compose buildpack virtual-environment wasm

superviseur's Introduction

Superviseur

License: MPL-2.0 release discord-server

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

Compiling from source, without Nix:

# 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.git
cd superviseur/crates/webui/webui && bun install && bun run build && cd ../../../
cargo install --path crates/cli

with Nix:

git clone https://github.com/tsirysndr/superviseur.git
cd superviseur
nix develop --experimental-features "nix-command flakes" flake/
cd crates/webui/webui && bun install && bun run build && cd ../../../
cargo install --path crates/cli

macOS/Linux

Using Homebrew:

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.

superviseur daemon

Initialize a new project

superviseur new

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

project = "demo"

service "demo" {
  type = "exec"
  command = "ping $GITHUB_DOMAIN"
  working_dir = "/tmp"
  description = "Ping Service Example"
  depends_on = []
  env = {
    "GITHUB_DOMAIN" = "github.com"
  }
  stdout = "/tmp/demo-stdout.log"
  stderr = "/tmp/demo-stderr.log"
}

Start the service

superviseur start demo

Start the service by running the start command.

Check the status

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

superviseur ps

Output:

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

Stop the service

superviseur stop demo

Show all services

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:

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

๐Ÿ“– Examples

See the examples directory for more examples.

๐Ÿ“ License

MPL

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.