{"id":37179997,"url":"https://github.com/tpisoftwareospo/quickstart","last_synced_at":"2026-01-14T20:56:08.874Z","repository":{"id":318790076,"uuid":"1075952993","full_name":"TPIsoftwareOSPO/quickstart","owner":"TPIsoftwareOSPO","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-15T02:34:57.000Z","size":141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-15T09:51:22.823Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TPIsoftwareOSPO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-14T07:58:03.000Z","updated_at":"2025-10-15T02:33:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"c11509e3-ec72-4c6a-ae85-811898672fee","html_url":"https://github.com/TPIsoftwareOSPO/quickstart","commit_stats":null,"previous_names":["tpisoftwareospo/quickstart"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/TPIsoftwareOSPO/quickstart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TPIsoftwareOSPO%2Fquickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TPIsoftwareOSPO%2Fquickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TPIsoftwareOSPO%2Fquickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TPIsoftwareOSPO%2Fquickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TPIsoftwareOSPO","download_url":"https://codeload.github.com/TPIsoftwareOSPO/quickstart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TPIsoftwareOSPO%2Fquickstart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-14T20:56:07.985Z","updated_at":"2026-01-14T20:56:08.868Z","avatar_url":"https://github.com/TPIsoftwareOSPO.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# quickstart\n\n**quickstart** is a **lightweight command-line orchestration tool** built with Go and Cobra.  \nIt helps developers **automate, organize, and monitor multi-command workflows** through a clear, declarative YAML configuration.\n\nInstead of juggling multiple terminals or maintaining long shell scripts, **quickstart** lets you:  \n- Define all your tasks in one YAML file.  \n- Control dependencies between processes.  \n- Run everything with **a single command**.  \n\nPerfect for setting up **local dev environments**, running **integration tests**, or managing **automation pipelines** — all in a fast, reliable, and reproducible way.\n\n---\n\n## 🚀 Why quickstart?\n\n- ⚡ **Simplify your setup** – Stop memorizing long command chains. Just define them in YAML.  \n- ✅ **Reliable orchestration** – Tasks run only when their dependencies are ready.  \n- 🔄 **Flexible execution** – Run concurrently or sequentially as your workflow requires.  \n- 🧑‍💻 **Developer-friendly** – Ideal for repeatable setups in dev, test, or CI/CD environments.  \n- 🔍 **Transparent \u0026 observable** – Easy to debug, verify, and reproduce results.  \n\n---\n\n## 💡 Typical Use Cases\n\n- Spin up **local environments** with multiple services (databases, APIs, message queues).  \n- Run **integration tests** that depend on multiple running services.  \n- Automate **CI/CD workflows** with predictable, declarative orchestration. \n\n\n---\n\n## 🧩 Key Features\n\n* 🧾 **Declarative YAML config** – Define tasks, dependencies, and health checks cleanly.\n* ⚙️ **Process orchestration** – Manage concurrent or sequential command execution.\n* ❤️ **Built-in health checks** – Validate task completion before proceeding.\n* 🧠 **Dependency control** – Define startup order via `depends_on`.\n* 💡 **Flexible execution** – Customize `base_dir`, `args`, and `envs` per task.\n\n---\n\n## 🔍 Comparison to Alternatives\n\n| Tool               | Key Difference                                              |\n| ------------------ | ----------------------------------------------------------- |\n| **Scripts**  | YAML offers structure, dependency logic, and health checks. |\n| **Makefiles**      | With relative tasks and customized execution check.  |\n| **Docker Compose** | Works with any executables, not just containers.           |\n\n---\n\n### 🏁 Summary\n\n**quickstart** brings structure, reliability, portabilty and observability to your automation workflows —\nhelping you focus more on building and less on managing scripts.\n\n\n\n\n\n# $\\color{Red}\\Huge{\\textsf{Important Note!}}$\n\nBecause we have $\\color{Red}\\large{\\textbf{NOT}}$ enrolled in the Apple Developer Program or Microsoft Developer Program, the application is not notarized or code-signed.\nAs a result, your operating system may display security warnings or block the app on first launch.\n\nThese warnings simply indicate that the app has not gone through Apple/Microsoft’s paid verification process — they do not mean the application contains malware.\nYou can safely proceed by manually bypassing the system warning based on your OS instructions.\n\n## Installation\n\n### Using Package Manager\n\n#### Homebrew (macos/linux)\n\n- [homebrew installation](https://brew.sh/)\n\n```shell\nbrew install --cask TPIsoftwareOSPO/tap/quickstart\n\n# macos (as \"Important Note!\" mention above)\nxattr -dr com.apple.quarantine $(which quickstart)\n```\n\n#### Scoop (windows)\n\n- [scoop installation](https://scoop.sh/)\n\n```shell\n# add scoop tap\nscoop bucket add TPIsoftwareOSPO https://github.com/TPIsoftwareOSPO/scoop-bucket.git\n# install quickstart\nscoop install quickstart\n```\n\n### Portable Executable\n\nDownload the compressed file that matches your system from [release](https://github.com/TPIsoftwareOSPO/quickstart/releases).\nThe filename prefix will be `quickstart-portable_`.\n\nTo run the portable executable, it must be in the same directory with the `quickstart.yaml` file.\n\n### Basics\n\n`quickstart.yaml`\n\n```yaml\ntasks:\n  - name: echo\n    executable: echo\n    args:\n      - hello\n      - world\n```\n\nTo execute tasks defined in your configuration file:\n\n```bash\nquickstart up\n```\n\noutput:\n```shell\nquickstart|Using config file: ...(ellipsis)/quickstart.yaml\necho|hello world\necho|Completed\n```\n\n### Using Docker\n\n```shell\ndocker run --rm -v ./quickstart.yaml:/app/quickstart.yaml tpisoftwareopensource/quickstart up\n```\n\n### Command Line Interface (CLI)\n\n`quickstart` provides a straightforward command-line interface.\n\n**Usage:**\n\n```bash\nquickstart [command]\n```\n\n**Available Commands:**\n\n| Command    | Descriptions                                                |\n|:-----------|:------------------------------------------------------------|\n | check      | Confirm the correctness of the YAML content format.         |\n | completion | Generate the autocompletion script for the specified shell. |\n | down       | Kill previous tasks processes.                              |\n | help       | Help about any command.                                     |\n | up         | Execute tasks according to the YAML configuration file.     |\n | version    | Show version number and build details of quickstart.             |\n| init       | Generate minimal quickstart.yaml file                            |\n\n\n### Configuration File Reference\n\nThe `tasks` key at the root of your YAML file contains a list of individual task definitions. Each task can have the following properties:\n\n\n| key                                     | type               | description                                                                                                                                                      |\n|:----------------------------------------|:-------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `name`                                  | string, required   | A unique identifier for the task.                                                                                                                                |\n| `base_dir`                              | string             | The working directory for the command. cmd.Dir will be set to this path. If not specified, the current working directory of quickstart will be used.                  |\n| `executable`                            | string, required   | The path to the executable command                                                                                                                               |e.g., node, java, ./my-app.|\n| `args`                                  | []string           | A list of arguments to pass to the executable.                                                                                                                   |\n| `envs`                                  | []string           | A list of environment variables to set for the command                                                                                                           |e.g., KEY=VALUE. These are merged with the parent process's environment variables.|\n| `depends_on`                            | []string           | A list of task names that this task depends on. This task will only start after all its dependencies have successfully passed their health checks.               |\n| `healthcheck`                           | object             | Defines how quickstart determines if a task is healthy.                                                                                                               |\n| `healthcheck.http`                      | object             | Configures an HTTP GET health check.                                                                                                                             |\n| `healthcheck.http.url`                  | string, required   | The URL to send the HTTP GET request to.                                                                                                                         |\n| `healthcheck.http.expect`               | object, optional   | Defines expected responses.If not set, a 2xx HTTP status code indicates health.                                                                                  |\n| `healthcheck.http.expect.json`          | object             | Expects a JSON response.                                                                                                                                         |\n| `healthcheck.http.expect.json.jsonpath` | string, required   | A JSONPath expression to extract a value from the response.                                                                                                      |\n| `healthcheck.http.expect.json.value`    | string, required   | The expected value                                                                                                                                               |as a string to match against the extracted JSONPath value.|\n| `healthcheck.command`                   | object             | Configures a command-based health check.                                                                                                                         |\n| `healthcheck.command.scripts`           | []string, required | A list where the first element is the command, and subsequent elements are its arguments. The command is considered healthy if it exits with a zero status code. |\n| `healthcheck.frequency`                 | object             | Controls the timing of health checks.                                                                                                                            |\n| `healthcheck.frequency.interval`        | duration string    | The time between consecutive health check attempts                                                                                                               |e.g., 5s, 1m.|\n| `healthcheck.frequency.timeout`         | duration string    | The maximum time allowed for a single health check attempt                                                                                                       |e.g., 10s.|\n| `healthcheck.frequency.retries`         | int                | The maximum number of consecutive failed health checks before the task is considered unhealthy.                                                                  |\n| `healthcheck.frequency.delay`           | duration string    | The initial delay before the first health check attempt is made after a task starts                                                                              |e.g., 5s.|\n\n### Logging\n\nThe application's startup logs will be located in the `logs/` directory. \n\nEach log file will be named in the format `{task:name}-{date}.log`\n\n### Examples\n\n#### Example 1: Java Application Portable Launch Package\n\nHere's an example of how you might configure `quickstart` to start .jar file using java command\n\n**Prerequisite**\n1. prepare your `myapp.jar` file.\n2. (Optional) prepare portable jre. (e.g [Azul Zulu](https://www.azul.com/downloads/#zulu))\n3. create a new directory, put in your `myapp.jar` and jre directory. The file structure as below:\n\n```\nnew-dir/\n├─ jre/\n    ├─ bin/\n        ├─ java(.exe)\n├─ myapp.jar\n├─ quickstart.yaml\n├─ (Optional) quickstart-portable(.exe)\n```\n\n**Example of quickstart.yaml**\n\n- With Portable Jre Java\n    ```yaml\n    tasks:\n      - name: myapp\n        base_dir: .\n        executable: jre/bin/java(.exe) # portable jre executable\n        args:\n          - -jar\n          - myapp.jar\n    ```\n\n- Use System Jre Java\n    ```yaml\n    tasks:\n      - name: myapp\n        base_dir: .\n        executable: java # call system java command\n        args:\n          - -jar\n          - myapp.jar\n    ```\n\nDouble-click the quickstart portable executable or run `quickstart up` in your current directory's terminal.\n\n#### Example 2: Portable Elasticsearch and Kibana Set\n\nHere's an example of how you might configure `quickstart` to start Elasticsearch and Kibana, \nwith proper health checks and dependencies:\n\n**Prerequisite**\n\n1. download [elasticsearch](https://www.elastic.co/downloads/elasticsearch)\n2. download [kibana](https://www.elastic.co/downloads/kibana)\n3. Unzip the downloaded files and place them in the same directory. The file structure as below:\n\nfiles structure:\n```\nnew-dir/\n├─ elasticsearch/\n├─ kibana/\n├─ quickstart.yaml\n├─ kibana.yml\n```\n\n**Example of kibana.yaml**\n\n```yaml\ncsp.strict: false\nserver.ssl.enabled: false\ntelemetry:\n  enabled: false\nxpack:\n  encryptedSavedObjects:\n    encryptionKey: \"01234567890123456789012345678901\" # only for demo\n```\n\n**Example of quickstart.yaml**\n\n```yaml\ntasks:\n  - name: elasticsearch\n    base_dir: ./elasticsearch\n    executable: bin/elasticsearch\n    args:\n      - -E\n      - xpack.security.enabled=false\n      - -E\n      - xpack.security.http.ssl.enabled=false\n      - -E\n      - xpack.security.transport.ssl.enabled=false\n      - -E\n      - xpack.monitoring.collection.enabled=true\n    healthcheck:\n      frequency:\n        interval: 5s\n        timeout: 10s\n        retries: 5\n        delay: 5s\n      http:\n        url: http://localhost:9200\n  - name: kibana\n    base_dir: ./kibana\n    executable: bin/kibana\n    args:\n      - -c\n      - kibana.yml\n    healthcheck:\n      frequency:\n        interval: 5s\n        timeout: 10s\n        retries: 5\n        delay: 5s\n      http:\n        url: http://localhost:5601/api/status\n        expect:\n          json:\n            value: available\n            jsonpath: \"$.status.overall.level\"\n    depends_on:\n      - elasticsearch\n  - name: curl1\n    executable: curl\n    args:\n      - -v\n      - http://localhost:9200\n    depends_on:\n      - elasticsearch\n  - name: curl2\n    executable: curl\n    args:\n      - -v\n      - http://localhost:5601/api/status\n    depends_on:\n      - kibana\n```\n\nDouble-click the quickstart portable executable or run `quickstart up` in your current directory's terminal.\n\n# Implementations\n\n- [how-to-make-digirunner-opensource-launch-standalone](https://github.com/vulcanshen-tpi/how-to-make-digirunner-opensource-launch-standalone)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpisoftwareospo%2Fquickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpisoftwareospo%2Fquickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpisoftwareospo%2Fquickstart/lists"}