{"id":49516212,"url":"https://github.com/roblox/foreman","last_synced_at":"2026-05-01T22:01:08.630Z","repository":{"id":38332854,"uuid":"227246606","full_name":"Roblox/foreman","owner":"Roblox","description":"Toolchain manager for Roblox projects","archived":false,"fork":false,"pushed_at":"2026-04-30T22:25:43.000Z","size":352,"stargazers_count":246,"open_issues_count":20,"forks_count":35,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-05-01T00:21:22.718Z","etag":null,"topics":["roblox","toolchain-manager"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Roblox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-12-11T01:09:12.000Z","updated_at":"2026-04-30T09:04:12.000Z","dependencies_parsed_at":"2024-04-18T20:26:01.356Z","dependency_job_id":"2e7d39d1-1a90-4903-abbe-b9eb12b097cf","html_url":"https://github.com/Roblox/foreman","commit_stats":{"total_commits":58,"total_committers":12,"mean_commits":4.833333333333333,"dds":0.5172413793103448,"last_synced_commit":"b8db178bdd572411716e7e39ac77df06a073f373"},"previous_names":["rojo-rbx/foreman"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Roblox/foreman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Fforeman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Fforeman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Fforeman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Fforeman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Roblox","download_url":"https://codeload.github.com/Roblox/foreman/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Fforeman/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32514340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["roblox","toolchain-manager"],"created_at":"2026-05-01T22:01:06.017Z","updated_at":"2026-05-01T22:01:08.622Z","avatar_url":"https://github.com/Roblox.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"right\" width=\"300\" src=\"foreman.png\" /\u003e\n\n# Foreman\n[![Actions Status](https://github.com/Roblox/foreman/workflows/CI/badge.svg)](https://github.com/Roblox/foreman/actions?query=workflow%3ACI)\n[![Latest Release on crates.io](https://img.shields.io/crates/v/foreman.svg?label=latest%20release)](https://crates.io/crates/foreman)\n\nForeman is a toolchain manager to help Roblox developers manage their installations of tools like [Rojo](https://github.com/rojo-rbx/rojo), [Remodel](https://github.com/rojo-rbx/remodel), [Tarmac](https://github.com/rojo-rbx/tarmac), [DarkLua](https://gitlab.com/seaofvoices/darklua), [StyLua](https://github.com/JohnnyMorganz/StyLua), and [Selene](https://github.com/Kampfkarren/selene).\n\nForeman is inspired by [rustup](https://rustup.rs) and [asdf](https://github.com/asdf-vm/asdf).\n\nIt's used in production across hundreds of engineers, but more feedback is welcome!\n\n## Installation\n\n### GitHub Releases\nYou can download pre-built Foreman releases for Windows, macOS, and Linux from the [Releases](https://github.com/Roblox/foreman/releases) page.\n\n### GitHub Actions\nYou can use the official [setup-foreman](https://github.com/Roblox/setup-foreman) action to install Foreman as part of your GitHub Actions workflow.\n\n### Upgrading\nFirst, replace your current version of Foreman with the newest one from the [GitHub releases](https://github.com/Roblox/foreman/releases). If you don't remember where you have put the executable, running `where foreman` on Windows or `which foreman` on macOS and Linux should help you find it.\n\nThe other step is to locate the `bin` directory created by foreman and delete the files there. It is as simple as opening `.foreman/bin`, which is located under the user directory (`%homepath%` on Windows or `$HOME` on macOS and Linux).\n\n### From Source\nIf you have [Rust](https://www.rust-lang.org/) 1.53.0 or newer installed, you can also compile Foreman by installing it from [crates.io](https://crates.io):\n\n```bash\ncargo install foreman\n```\n\nTo upgrade, re-run `cargo install foreman` and clean up the `bin` directory as described in the section just above.\n\n## Setup\nMost users will want to do a bit of additional setup to begin using tools via foreman.\n\n### Path Configuration\nOn first run (try `foreman list`), Foreman will create a `.foreman` directory in your user folder (usually `$HOME/.foreman` on Unix systems, `%USERPROFILE%/.foreman` on Windows).\n\nIt's recommended that you **add `$HOME/.foreman/bin` to your `PATH`** to make the tools that Foreman installs for you accessible on your system. If you have tools installed via other mechanisms (for example, you may have previously installed `rojo` directly via `cargo`), ensure that `$HOME/.foreman/bin` is on your PATH _before_ any other installation directories like `.cargo/bin` in order to make sure it takes precedence.\n\nIf you're using bash or zsh, you can add this line to your `~/.bash_profile` or your `~/.zprofile` file (respectively):\n```\nexport PATH=$HOME/.foreman/bin:$PATH\n```\n\n### Authentication\nTo install tools from a private GitHub repository, Foreman supports authenticating with a [Personal Access Token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line). When creating the token in GitHub:\n\n1. Make sure to create a `Tokens (classic)` Personal Access Token. Fine-grained tokens may not work properly.\n2. Make sure to configure the token to have access to the `repo` scope.\n3. Once created, you may need to click the `Configure SSO` button next to the token to authorize it for SSO usage. Whether or not you need to do this will depend on the GitHub org that you need to access.\n\nUse `foreman auth-secure add github` to pass an authentication token to Foreman using your system's platform-specific secret store.\n\nAlternatively, use `foreman github-auth` to pass an authentication token to Foreman, or open `~/.foreman/auth.toml` and follow the contained instructions.\n\nSimilarly, for projects hosted on a GitLab repository, use `foreman gitlab-auth` to pass an authentication token to Foreman, or open `~/.foreman/auth.toml`.\n\nUse `foreman auth-secure migrate` if you've previously authenticated with `foreman github-auth`/`foreman gitlab-auth` and you would like to migrate the token from `~/.foreman/auth.toml` to your system's secret store.\n\n## Usage\nForeman downloads tools from GitHub or GitLab and references them by their `user/repo` name, like `Roblox/foreman`.\n\n### Configuration File\n\nForeman uses [TOML](https://toml.io/en/) for its configuration file. It simply takes a single `tools` entry and an enumeration of the tools you need, which looks like this:\n\n```toml\n[tools]\nrojo = { github = \"rojo-rbx/rojo\", version = \"7.0.0\" }\ndarklua = { gitlab = \"seaofvoices/darklua\", version = \"0.7.0\" }\n```\n\nAs you may already have noticed, the tool name is located at the left side of `=` and the right side contains the information necessary to download it. For GitHub tools, use `github = \"user/repo-name\"` and for GitLab, use `gitlab = \"user/repo-name\"`.\n\nPreviously, foreman was only able to download tools from GitHub and the format used to be `source = \"rojo-rbx/rojo\"`. For backward compatibility, foreman still supports this format.\n\n### Hosts (Under Construction)\nforeman supports Github and Gitlab as hosts by default, but you can define your own custom hosts as well using a single `hosts` entry and an enumeration of the hosts you want to download tools from, which looks like this.\n\n```toml\n[hosts]\n# default hosts\n# source = {source = \"https://github.com\", protocol = \"github\"}\n# github = {source = \"https://github.com\", protocol = \"github\"}\n# gitlab = {source = \"https://gitlab.com\", protocol = \"gitlab\"}\nartifactory = {source = \"https://artifactory.com\", protocol = \"artifactory\"}\n\n[tools]\ntool = {artifactory = \"tools/tool\", version = \"1.1.0\"}\n```\n\nforeman currently only supports github, gitlab, and artifactory as protocols.\n\n### System Tools\nTo start using Foreman to manage your system's default tools, create the file `~/.foreman/foreman.toml`.\n\nA Foreman config that lists Rojo could look like:\n\n```toml\n[tools]\nrojo = { github = \"rojo-rbx/rojo\", version = \"7.0.0\" }\n```\n\nRun `foreman install` from any directory to have Foreman pick up and install the tools listed in your system's Foreman config.\n\nNow, if you run `rojo` inside of a directory that doesn't specify its own version of Rojo, Foreman will run the most recent 0.5.x release for you!\n\n### Project Tools\nManaging a project's tools with Foreman is similar to managing system tools. Just create a `foreman.toml` file in the root of your project.\n\nA Foreman config that lists Remodel might look like this:\n\n```toml\n[tools]\nremodel = { github = \"rojo-rbx/remodel\", version = \"0.9.1\" }\n```\n\nRun `foreman install` to tell Foreman to install any new binaries from this config file.\n\nWhen inside this directory, the `remodel` command will run the latest 0.6.x release of Remodel installed on your system.\n\n## Troubleshooting\nForeman is a work in progress tool and has some known issues. Check out [the issue tracker](https://github.com/Roblox/foreman/issues) for known bugs.\n\nIf you have issues with configuration, you can delete `~/.foreman` to delete all cached data and start from scratch. This directory contains all of Foreman's installed tools and configuration.\n\n### `Bad CPU type` Error\nIf you're using foreman version 1.0.4 or older on a non-M1 Mac, you may have encounter an error that looks like this:\n```\nan error happened trying to run `github.com/some-org/some-tool@^1.2.3` at `/Users/some-user/.foreman/tools/some-org__some-tool-1.2.3` (this is an error in Foreman): Bad CPU type in executable (os error 86)\n```\n\nIn this case, your foreman installation has mistakenly downloaded an incompatible version of the tool binary due to [an error in the binary file selection logic](https://github.com/Roblox/foreman/pull/53).\n\n###  `is not compatible with the version of Windows you're running` Error\nIf you're using foreman version 1.1.0 or older, you may encounter an error that reads like this when an existing project adds a Windows binary for the `aarch64` platform (eg Windows Holographic OS for HoloLens)\n\nIn this case, your foreman installation has mistakenly downloaded an incompatible version of the tool binary due to [yet another error in the binary file selection logic](https://github.com/Roblox/foreman/pull/71).\n\n\nTo fix both of these error types, take the following steps:\n1. Upgrade your version of `foreman` per [the instructions above](#upgrading).\n2. Delete the `~/.foreman/tool-cache.json` file and the `~/.foreman/tools/` folder (and its contents), as well as the `~/.foreman/bin` folder (as described in the [Upgrading](#upgrading) section above). This should remove any invalid binaries that foreman has cached.\n3. Run `foreman install` to re-download all relevant tools.\n\nYour downloaded tools should now work correctly.\n\n## License\nForeman is available under the MIT license. See [LICENSE.txt](LICENSE.txt) or \u003chttps://opensource.org/licenses/MIT\u003e for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froblox%2Fforeman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froblox%2Fforeman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froblox%2Fforeman/lists"}