{"id":15297038,"url":"https://github.com/elementtech/opsilon","last_synced_at":"2026-03-14T02:32:11.503Z","repository":{"id":63287359,"uuid":"563919820","full_name":"ElementTech/opsilon","owner":"ElementTech","description":"A customizable CLI for collaboratively running container-native workflows","archived":false,"fork":false,"pushed_at":"2023-04-13T09:20:32.000Z","size":455,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T08:23:19.391Z","etag":null,"topics":["cli","docker","golang","workflow"],"latest_commit_sha":null,"homepage":"https://jatalocks.github.io/opsilon","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ElementTech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-11-09T16:00:49.000Z","updated_at":"2024-01-12T18:45:50.000Z","dependencies_parsed_at":"2023-07-16T14:54:52.418Z","dependency_job_id":null,"html_url":"https://github.com/ElementTech/opsilon","commit_stats":null,"previous_names":["jatalocks/gitform","elementtech/opsilon","jatalocks/opsilon"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElementTech%2Fopsilon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElementTech%2Fopsilon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElementTech%2Fopsilon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ElementTech%2Fopsilon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ElementTech","download_url":"https://codeload.github.com/ElementTech/opsilon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248788917,"owners_count":21161728,"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":["cli","docker","golang","workflow"],"created_at":"2024-09-30T19:14:44.697Z","updated_at":"2026-03-14T02:32:11.430Z","avatar_url":"https://github.com/ElementTech.png","language":"Go","readme":"# Opsilon\n[![Test](https://github.com/jatalocks/opsilon/actions/workflows/test.yml/badge.svg)](https://github.com/jatalocks/opsilon/actions/workflows/test.yml) [![golangci-lint](https://github.com/jatalocks/opsilon/actions/workflows/lint.yml/badge.svg)](https://github.com/jatalocks/opsilon/actions/workflows/lint.yml) [![Go Report Card](https://goreportcard.com/badge/github.com/jatalocks/opsilon)](https://goreportcard.com/report/github.com/jatalocks/opsilon) [![Go Reference](https://pkg.go.dev/badge/github.com/jatalocks/opsilon.svg)](https://pkg.go.dev/github.com/jatalocks/opsilon) [![codecov](https://codecov.io/gh/jatalocks/opsilon/branch/main/graph/badge.svg?token=Y5K4SID71F)](https://codecov.io/gh/jatalocks/opsilon)\n\nA customizable CLI for collaboratively running container-native workflows\n\n![opsilon](https://user-images.githubusercontent.com/99724952/202414217-49f6a1f3-584d-4a6d-8fae-e92e888e1b86.svg)\n\nFor full usage, please refer to the: [Docs](/assets/doc.md).\n\n\u003c!--ts--\u003e\n- [Opsilon](#opsilon)\n- [Download](#download)\n    - [Quickstart](#quickstart)\n    - [Helm](#helm)\n  - [Usage](#usage)\n    - [Extra Flags](#extra-flags)\n- [Demo](#demo)\n- [Contribution](#contribution)\n    - [Development Features](#development-features)\n    - [Project Layout](#project-layout)\n    - [Makefile Targets](#makefile-targets)\n    - [Thanks](#thanks)\n\u003c!--te--\u003e\n\n\n\nThis project serves the purpose of giving developers, operations and other personal the ability to run custom workflows on their personal computer using a container environment, without them writing code and having to understand the meaning behind the script.\n# Download\n### Quickstart\n\nDownload the [latest release](https://github.com/jatalocks/opsilon/releases/latest) for your os: (this example uses version `v0.5.6`).\nFor Mac:\n```bash\n$ curl -L https://github.com/jatalocks/opsilon/releases/download/v0.5.6-alpha/opsilon_0.5.6-alpha_Darwin_x86_64.tar.gz \\\n | tar -xz opsilon | chmod u+x opsilon\n```\nTest if the Opsilon CLI works: *(When it doesn't work, you may have downloaded the wrong file or your device/os isn't supported)*\n\n```bash\n$ ./opsilon version\n```\n\nMove the executable to a folder on your `$PATH`:\n\n```bash\n$ mv opsilon /usr/local/bin/opsilon # or /usr/bin/opsilon\n```\n\n### Helm\n\n```bash\n$ helm install https://github.com/jatalocks/opsilon/releases/download/opsilon-0.4.2-helm/opsilon-0.4.2-helm.tgz\n```\n## Usage\nMake sure you have Docker installed on your computer (or connected to a kubernetes cluster `--kubernetes`).\n\n **EITHER**\n1. Connect to the examples folder present in this repository\n```sh\n$ opsilon repo add --git -n examples -d examples -s examples/workflows -p https://github.com/jatalocks/opsilon.git -b main\n# For private repositories, use https://myuser:github_token@github.com/myprivateorg/\u003emyprivaterepo.git\n```\n2. List available workflows\n```sh\n$ opsilon list\n```\n3. Run a workflow!\n```sh\n$ opsilon run # --kubernetes (kubernetes instead of docker)\n```\n **OR**\n1. Start the web server\n```sh\n$ opsilon server -p 8080 # See extra flags below\n```\n2. List available API actions\n```sh\n$ Go to http://localhost:8080/api/v1/docs\n```\n **OR**\n1. Start the slack server\n```sh\n$ export SLACK_BOT_TOKEN=xoxb-123\n$ export SLACK_APP_TOKEN=xapp-123\n$ opsilon slack # See extra flags below\n```\n2. Install the app from the manifest in [Manifest](/assets/manifest.yaml)\n3. Go to the Opsilon app in your slack\n```sh\n$ help\n\nlist repos - List Available Workflows\n  Example: list\n  Example: list myteam\n  Example: list examples,myteam\nrun\n```\n\n### Extra Flags\n`--kubernetes` - (kubernetes instead of docker)\n___\n\n**`server` or `slack` will usually come with:**\n\n`--consul`  - Enable a consul server as a configuration endpoint. Allows for a distributed remote configuration of workflows and repositories instead of a local file.\n   - `--consul_uri` = `localhost:8500` by default\n   - `--consul_key` = `default` by default (which key to load configuration from)\n  \n`--database`  - Enable a mongodb database. Allows for logging and viewing workflow runs.\n   - `--mongodb_uri` = `mongodb://localhost:27017` by default\n# Demo\n\n```sh\n$\u003e opsilon\nA customizable CLI for collaboratively running container-native workflows\n\nUsage:\n  opsilon [command]\n\nAvailable Commands:\n  completion  Generate the autocompletion script for the specified shell\n  help        Help about any command\n  list        List all workflows available in your repositories\n  repo        Operate on workflow repositories\n  run         Run an available workflow\n  server      Runs an api server that functions the same as the CLI\n  slack       Runs opsilon as a socket-mode slack bot\n  version     Displays opsilon version\n\nFlags:\n      --config string        config file (default is $HOME/.opsilon.yaml)\n      --consul               Run using a Consul Key/Value store. This is for distributed installation.\n      --consul_key string    Consul Config Key. Can be set using ENV variable. (default \"default\")\n      --consul_uri string    Consul URI. Can be set using ENV variable. (default \"localhost:8500\")\n      --database             Run using a MongoDB database.\n  -h, --help                 help for opsilon\n      --kubernetes           Run in Kubernetes instead of Docker. You must be connected to a Kubernetes Context\n      --local                Run using a local file as config. Not a database. True for CLI. (default true)\n      --mongodb_uri string   Mongodb URI. Can be set using ENV variable. (default \"mongodb://localhost:27017\")\n\nUse \"opsilon [command] --help\" for more information about a command.\n```\n\n# Contribution\nEvery contribution is welcome. Below is some information to help you get started.\n\n### Development Features\n- [goreleaser](https://goreleaser.com/) with `deb.` and `.rpm` package releasing\n- [golangci-lint](https://golangci-lint.run/) for linting and formatting\n- [Github Actions](.github/worflows) Stages (Lint, Test, Build, Release)\n- [Gitlab CI](.gitlab-ci.yml) Configuration (Lint, Test, Build, Release)\n- [cobra](https://cobra.dev/) CLI parser\n- [Makefile](Makefile) - with various useful targets and documentation (see Makefile Targets)\n- [Github Pages](_config.yml) using [jekyll-theme-minimal](https://github.com/pages-themes/minimal) (checkout [https://jatalocks.github.io/opsilon/](https://jatalocks.github.io/opsilon/))\n- [pre-commit-hooks](https://pre-commit.com/) for formatting and validating code before committing\n\n### Project Layout\n* [assets/](https://pkg.go.dev/github.com/jatalocks/opsilon/assets) =\u003e docs\n* [cmd/](https://pkg.go.dev/github.com/jatalocks/opsilon/cmd)  =\u003e commandline configurartions (flags, subcommands)\n* [pkg/](https://pkg.go.dev/github.com/jatalocks/opsilon/pkg)  =\u003e the entrypoints of the CLI commands\n* [internal/](https://pkg.go.dev/github.com/jatalocks/opsilon/pkg)  =\u003e packages that are the main core function of the project\n- [`tools/`](tools/) =\u003e for automatically shipping all required dependencies when running `go get` (or `make bootstrap`) such as `golang-ci-lint` (see: https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module)\n)\n\n### Makefile Targets\n```sh\n$\u003e make\nbootstrap                      install build deps\nbuild                          build golang binary\nclean                          clean up environment\ncover                          display test coverage\ndocker-build                   dockerize golang application\nfmt                            format go files\nhelp                           list makefile targets\ninstall                        install golang binary\nlint                           lint go files\npre-commit                     run pre-commit hooks\nrun                            run the app\ntest                           display test coverage\n```\n\n### Support\n\n\u003ca href=\"https://www.buymeacoffee.com/jatalocks\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/purple_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\n### Thanks\n\nThis project was made possible by https://github.com/FalcoSuessgott/golang-cli-template\n","funding_links":["https://www.buymeacoffee.com/jatalocks"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felementtech%2Fopsilon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felementtech%2Fopsilon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felementtech%2Fopsilon/lists"}