{"id":21659699,"url":"https://github.com/tsirysndr/superviseur","last_synced_at":"2025-07-17T22:32:48.445Z","repository":{"id":113217937,"uuid":"608738662","full_name":"tsirysndr/superviseur","owner":"tsirysndr","description":"Define and run multi-service applications on isolated environments with Nix or Docker ❄️🐋 🛠️ 💻 ✨","archived":true,"fork":false,"pushed_at":"2023-11-01T19:10:45.000Z","size":14985,"stargazers_count":67,"open_issues_count":9,"forks_count":11,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-14T00:07:05.353Z","etag":null,"topics":["buildpack","compose","containers","devbox","devenv","devops","nix","nix-flake","services","supervisord","systemd","unix","virtual-environment","wasm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsirysndr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":"tsirysndr","patreon":"tsirysndr","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.buymeacoffee.com/tsiry"]}},"created_at":"2023-03-02T16:29:59.000Z","updated_at":"2024-09-17T22:05:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"98bbe61b-34e0-45aa-824e-a55998562543","html_url":"https://github.com/tsirysndr/superviseur","commit_stats":{"total_commits":133,"total_committers":1,"mean_commits":133.0,"dds":0.0,"last_synced_commit":"2b1a7d15cc1b2d12db9582e0b96144f19421b7ee"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fsuperviseur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fsuperviseur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fsuperviseur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fsuperviseur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsirysndr","download_url":"https://codeload.github.com/tsirysndr/superviseur/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226305722,"owners_count":17603863,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buildpack","compose","containers","devbox","devenv","devops","nix","nix-flake","services","supervisord","systemd","unix","virtual-environment","wasm"],"created_at":"2024-11-25T09:31:24.062Z","updated_at":"2024-11-25T09:33:20.424Z","avatar_url":"https://github.com/tsirysndr.png","language":"Rust","funding_links":["https://github.com/sponsors/tsirysndr","https://patreon.com/tsirysndr","https://www.buymeacoffee.com/tsiry"],"categories":["Rust"],"sub_categories":[],"readme":"# Superviseur\n\n\u003cp\u003e\n  \u003ca href=\"LICENSE\" target=\"./LICENSE\"\u003e\n    \u003cimg alt=\"License: MPL-2.0\" src=\"https://img.shields.io/badge/License-MPL-blue.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/superviseur\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/v/superviseur.svg\" /\u003e\n  \u003c/a\u003e\n  \n  \u003ca href=\"https://crates.io/crates/superviseur\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/crates/dr/superviseur\" /\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://feat-webui--640724a8e12e5a011d6d59fb.chromatic.com\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Storybook-FF4785?logo=storybook\u0026logoColor=fff\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/tsirysndr/superviseur/actions/workflows/release.yml\" target=\"_blank\"\u003e\n    \u003cimg alt=\"release\" src=\"https://github.com/tsirysndr/superviseur/actions/workflows/release.yml/badge.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/EVcBy2fVa3\" target=\"_blank\"\u003e\n    \u003cimg alt=\"discord-server\" src=\"https://img.shields.io/discord/1103720908104929321?label=discord\u0026logo=discord\u0026color=5865F2\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cimg src=\"./astronauts.png\" width=\"100%\" style=\"margin-top: 20px; margin-bottom: 20px;\" /\u003e\n\nSuperviseur is a tool for running multi-service applications on isolated environments (Nix or Docker) using HCL/TOML or any language with an [SDK](/sdk). It is designed to be used both from a CLI and a web interface.\nOnce you have a [Superfile.hcl](#initialize-a-new-project), you can create and start your application with a single command: `superviseur up`.\n\n\nProject Status: 🐲 Unstable, alpha-ish quality.\n\n\u003cimg src=\"./preview.png\" width=\"100%\" style=\"margin-top: 20px;margin-bottom: 20px;\" /\u003e\n\n## 🚚 Installation\n\nCompiling from source, without Nix:\n\n```bash\n# Install dependencies\nbrew install protobuf # macOS\nsudo apt-get install -y protobuf-compiler # Ubuntu/Debian\ncurl -fsSL https://bun.sh/install | bash\n# Compile\ngit clone https://github.com/tsirysndr/superviseur.git\ncd superviseur/crates/webui/webui \u0026\u0026 bun install \u0026\u0026 bun run build \u0026\u0026 cd ../../../\ncargo install --path crates/cli\n```\n\nwith Nix:\n```bash\ngit clone https://github.com/tsirysndr/superviseur.git\ncd superviseur\nnix develop --experimental-features \"nix-command flakes\" flake/\ncd crates/webui/webui \u0026\u0026 bun install \u0026\u0026 bun run build \u0026\u0026 cd ../../../\ncargo install --path crates/cli\n```\n\n### macOS/Linux\n\nUsing [Homebrew](https://brew.sh/):\n\n```bash\nbrew install tsirysndr/tap/superviseur\n```\n\nOr download the latest release for your platform [here](https://github.com/tsirysndr/superviseur/releases).\n\n## 📦 Downloads\n- `Mac`: arm64: [superviseur_v0.1.0-alpha.13_aarch64-apple-darwin.tar.gz](https://github.com/tsirysndr/superviseur/releases/download/v0.1.0-alpha.13/superviseur_v0.1.0-alpha.13_aarch64-apple-darwin.tar.gz) intel: [superviseur_v0.1.0-alpha.13_x86_64-apple-darwin.tar.gz](https://github.com/tsirysndr/superviseur/releases/download/v0.1.0-alpha.13/superviseur_v0.1.0-alpha.13_x86_64-apple-darwin.tar.gz)\n- `Linux`: [superviseur_v0.1.0-alpha.13_x86_64-unknown-linux-gnu.tar.gz](https://github.com/tsirysndr/superviseur/releases/download/v0.1.0-alpha.13/superviseur_v0.1.0-alpha.13_x86_64-unknown-linux-gnu.tar.gz)\n\n## 🚀 Usage\n\n```\nUSAGE:\n    superviseur [SUBCOMMAND]\n\nOPTIONS:\n    -h, --help       Print help information\n    -V, --version    Print version information\n\nSUBCOMMANDS:\n    build         Build all services or a specific one\n    config        Get the config of a service\n    daemon        Start the superviseur daemon\n    down          Stop all services\n    help          Print this message or the help of the given subcommand(s)\n    init          Create a new superviseur config (Superviseur.hcl)\n    list          List all services [aliases: ls]\n    log           Get the log of a process\n    new           Create a new superviseur config (Superviseur.hcl)\n    open          Open URL of a service in the browser\n    project       Manage projects\n    ps            List all running processes\n    restart       Restart all services or a specific one\n    search-log    Search the log of a service\n    serve         Start the superviseur server\n    start         Start all services or a specific one\n    status        Get the status of a service\n    stop          Stop all services or a specific one\n    tail          Tail the log of a process\n    ui            Start the superviseur dashboard\n    up            Start all services\n```\n\n## 📚 Getting Started\n\n### Start the server\n\nSuperviseur uses a server-client architecture. The server is responsible for managing the processes, while the client is responsible for communicating with the server.\n\n```bash\nsuperviseur daemon\n```\n\n### Initialize a new project\n\n```bash\nsuperviseur new\n```\n\nStart by initializing a new project. This will create a `Superfile.hcl` file in the current directory with the following contents:\n\n```hcl\nproject = \"demo\"\n\nservice \"demo\" {\n  type = \"exec\"\n  command = \"ping $GITHUB_DOMAIN\"\n  working_dir = \"/tmp\"\n  description = \"Ping Service Example\"\n  depends_on = []\n  env = {\n    \"GITHUB_DOMAIN\" = \"github.com\"\n  }\n  stdout = \"/tmp/demo-stdout.log\"\n  stderr = \"/tmp/demo-stderr.log\"\n}\n```\n\n### Start the service\n\n```bash\nsuperviseur start demo\n```\n\nStart the service by running the `start` command.\n\n### Check the status\n\n```bash\nsuperviseur status demo\n```\nOutput:\n```\n● demo - Ping Service Example\n        Active: Running since 2023-03-05 19:17:56.512455 UTC; 17 seconds ago\n           PID: 30887\n       Command: ping $GITHUB_DOMAIN\n     Directory: /tmp\n           Log: /tmp/demo-stdout.log\n        Stderr: /tmp/demo-stderr.log\n   AutoRestart: false\n          Type: exec\n          Envs: GITHUB_DOMAIN=github.com\n```\n\n### Show running processes\n\n```bash\nsuperviseur ps\n```\n\nOutput:\n```\n NAME   PID     STATUS             COMMAND               TYPE \n demo   31200   Up 4 seconds ago   ping $GITHUB_DOMAIN   exec \n```\n\n### Stop the service\n\n```bash\nsuperviseur stop demo\n```\n\n### Show all services\n\n```bash\nsuperviseur ls\n```\n\nOutput:\n```\n NAME   STATUS    COMMAND                 TYPE \n demo   STOPPED   \"ping $GITHUB_DOMAIN\"   exec \n```\n## As a Github Action\n\nYou can use the [setup-superviseur](https://github.com/marketplace/actions/setup-superviseur) Github Action like so:\n\n```yaml\n- uses: tsirysndr/setup-superviseur@v1\n  with:\n    version: 'v0.1.0-alpha.13'\n- run: superviseur --help\n```\n\n## 📖 Examples\nSee the [examples](examples) directory for more examples.\n## 📝 License\n[MPL](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Fsuperviseur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsirysndr%2Fsuperviseur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Fsuperviseur/lists"}