{"id":14965320,"url":"https://github.com/ekristen/cast","last_synced_at":"2026-03-12T07:07:48.605Z","repository":{"id":37943518,"uuid":"444453947","full_name":"ekristen/cast","owner":"ekristen","description":"Cast is an installer for any compatible Saltstack based distribution like SIFT or REMnux","archived":false,"fork":false,"pushed_at":"2025-05-09T07:59:53.000Z","size":3353,"stargazers_count":115,"open_issues_count":13,"forks_count":16,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-09T08:41:05.174Z","etag":null,"topics":["cli","distro","golang","linux","saltstack"],"latest_commit_sha":null,"homepage":"https://ekristen.github.io/cast/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekristen.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-04T14:40:55.000Z","updated_at":"2025-05-09T07:59:06.000Z","dependencies_parsed_at":"2023-10-05T17:25:15.153Z","dependency_job_id":"9eddc211-2224-4c6f-b15b-eb28a0b898ac","html_url":"https://github.com/ekristen/cast","commit_stats":{"total_commits":160,"total_committers":3,"mean_commits":"53.333333333333336","dds":0.44375,"last_synced_commit":"6baca826a46876237a92d8ad13a46e44c86500fe"},"previous_names":[],"tags_count":112,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekristen%2Fcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekristen%2Fcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekristen%2Fcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekristen%2Fcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekristen","download_url":"https://codeload.github.com/ekristen/cast/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471060,"owners_count":22076585,"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","distro","golang","linux","saltstack"],"created_at":"2024-09-24T13:34:34.897Z","updated_at":"2025-10-06T16:48:56.456Z","avatar_url":"https://github.com/ekristen.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cast\n\nCast is a command line utility that abstracts away [SaltStack](https://saltproject.io) for compatible configurations.\n\nIt is the successor to the [SIFT CLI](https://github.com/teamdfir/sift-cli) but made in such a way that it is no longer specific to [SIFT](https://github.com/teamdfir/sift).\n\nThe goal is to deliver a simple command line utility to install custom distributions that are build with [saltstack](https://saltproject.io).\n\n[![asciicast](https://asciinema.org/a/463178.svg)](https://asciinema.org/a/463178)\n\n## Installation\n\nVisit the releases page to download the appropriate file for your architecture. There are `.deb` files for installation\nwith `dpkg -i`, there are just vanilla binaries that you can download and put into `/usr/local/bin` if you'd like to as well.\n\n## Usage\n\n```bash\ncast install \u003cowner/repo|alias\u003e\n```\n\n```bash\ncast install teamdfir/sift-saltstack\n```\n\n### Existing Aliases\n\nCast comes with two built in aliases for existing support distributions, additional aliases will not be added, it's a\nshort term solution until the older install methods have fallen off.\n\n**Note:** there are only two aliases currently supported, `sift` and `remnux` which are resolved to\n`teamdfir/sift-saltstack` and `remnux/salt-states` respectively.\n\n## What is a Cast Distribution?\n\nSimply put a cast distro is one published by the cast binary. The underlying technology used for installing the distro\nis Saltstack.\n\nTo create a Cast distribution you need a `.cast.yml` file and need your repository to be a valid SaltStack configuration\nthat would work with a `state.apply` command.\n\n### Existing Distributions\n\nThere are only two (2) version 1 cast distros out there and they are SIFT and REMnux and what makes them a v1 is the way\nthe release files are generated and signed and how the saltstack files are organized in the repository.\n\nA version 2 cast distro is one like [cast-example-distro](https://github.com/ekristen/cast-example-distro) where the salt states start in the root of the project\nand the release is generated by the `cast release`. The reason for moving the states to the root is for `git submodule`\nusage for distros that extend another distro.\n\n## Configuration\n\nCast is configured via the `.cast.yml` file in the root of the cast distro project. This configuration is required and\ncontains important information like what GitHub Repository should releases be published to, what the manifest file\ncontents should be.\n\nPart of the configuration is the `manifest` definition that ultimately gets uploaded as a release asset. The manifest\ndictates things like `base`, `modes`, and `supported operating systems`.\n\n* `name` - the name of the distro\n* `base` - (optional) this is the name of the base directory where the saltstack files exist in the project root\n* `modes` - this is a way to define modes that the user can specify along with the default mode, if none is specified\n* `supported_os` - this is a way to define what operating systems are supported\n\n### For Developers\n\nIf your distro is called `alpha` then your `name` should be `alpha`, all base saltstack states should be based out of\nthe root of the project, however if all the states have to be in a subdirectory, then the `base_dir` must be set to the\nname of that subdirectory.\n\n### Aliases\n\nAliases are only for SIFT and REMnux and not intended for long term use. The aliases serve a more specific purpose for\nsupporting backwards compatibility for older versions of SIFT and REMnux that were not released as a **cast** distro\noriginally.\n\n## Developers\n\nDeveloping a distro for cast is very simple, this documentation will walk you through cast initialization.\n\n### Saltstack\n\nTo make embedding a distro easier in another distro both for the community and for SANS builds purposes, the salt\nstates have now been moved to the root of the project. This allows for a repo to be submodule into another repo and\nthe `manifest.yml` dictates to the installer how things should be extracted and installed.\n\n### Release\n\nRequirements\n\n* Tag must be created outside the tool and pushed to the remote\n* Cosign private key and public key must be present in the repo\n\nCreating a release has never been more simply. However, one thing is required, that you tag and push the tag to GitHub\nprior to running the command.\n\n```bash\ngit tag v1.0.0 \u0026\u0026 git push origin --tags\n```\n\nThen you simply run the release command from your local branch.\n\n```bash\ncast release\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekristen%2Fcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekristen%2Fcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekristen%2Fcast/lists"}