| Crates.io | frate |
| lib.rs | frate |
| version | 0.4.0 |
| created_at | 2025-07-24 21:00:26.833139+00 |
| updated_at | 2025-07-28 21:52:24.443647+00 |
| description | A local, dev-focused package manager for developer tools, inspired by Scoop and Cargo |
| homepage | https://github.com/konni332/frate |
| repository | https://github.com/konni332/frate |
| max_upload_size | |
| id | 1766916 |
| size | 140,604 |
frate is a developer tool and package manager designed for managing local software installations without requiring root privileges. Inspired by Cargo’s user experience, it provides a clean and simple CLI with commands like init, add, list, and sync to manage dependencies declared in a frate.toml manifest and locked with a frate.lock file.
Unlike traditional package managers, frate focuses on user-level installations, making it ideal for environments where users don’t have administrative rights. It aims to streamline dependency management with a straightforward, Cargo-like workflow, enabling developers to easily install, update, and manage tools in a reproducible and isolated manner.
frate also includes command line sugar to maximize developer comfort. For example frate shell,
to create a new shell session with all local tools in the PATH
Local User-Level package management
Cargo-Like UX - intuitive commands like:
initaddsynclistsearchshellIsolated, reproducible environments
Declarative dependencies using frate.toml
Locking using frate.lock
Hash validation for security
GitHub registry using JSON (local/custom registries planned) - see frate-registry for the registry and the auto-gen tool
cargo install frate
git clone https://github.com/konni332/frate frate
cd frate
cargo build --release
frate --version
cargo install frate
frate --vesion
cd ~/your_project
frate init
frate registry
fratefrate add just@1.42.1
frate sync
frate install
frate list
frate shell
just --vesion
Frate offers a clean and expressive CLI inspired by tools like Cargo. Here's a breakdown of all available commands:
| Command | Description | Example Usage |
|---|---|---|
frate init |
Initializes a new frate.toml in the current directory. |
frate init |
frate add <name>@<ver> |
Adds a tool to frate.toml and updates the lock file. Does not install the tool automatically. |
frate add just@1.14.0 |
frate sync |
Synchronizes frate.lock with the current frate.toml. |
frate sync |
frate install |
Installs all packages listed in the lockfile. | frate install |
frate install --name |
Installs a single package by name. | frate install --name just |
frate uninstall |
Uninstalls all installed packages. | frate uninstall |
frate uninstall --name |
Uninstalls a specific tool. | frate uninstall --name just |
frate list |
Lists all tools in frate.toml. Use --verbose for details. |
frate list --verbose |
frate run <command> |
Runs a tool's binary from .frate/bin/<tool>/. Arguments can be passed through. |
frate run "just --version" |
frate shell |
Launches a new shell with all tools available in PATH. |
frate shell |
frate clean |
Removes the global cache for all tools. | frate clean |
frate clean --name |
Removes the cache for a specific tool. | frate clean --name just |
frate search <name> |
Searches for a tool and lists available versions from the registry. | frate search just |
frate which <name> |
Outputs the full path to a tool's installed binary and its shim (if available). | frate which just |
frate registry |
Outputs all currently available tools | frate registry |
[project]
name = "frate"
version = "0.1.0"
[dependencies]
just = "1.42.1"
ripgrep = "14.1.1"
Frate is designed for developers and teams who want to:
Install CLI tools without requiring admin/root permissions
Use a consistent, declarative configuration via frate.toml and frate.lock
Reproduce development environments easily across machines or CI
Avoid global pollution of PATH or conflicts between versions
Share CLI tool dependencies with teammates through versioned lockfiles
It’s especially useful in the following scenarios:
Local-only dev setups (e.g., on locked-down systems)
Portable projects that include their CLI tooling
CI pipelines that need deterministic toolchains
Bootstrapping environments without relying on system package managers
Contributions are very welcome! Here’s how to get started:
Fork the repository
Clone your fork:
git clone https://github.com/your-username/frate.git
git checkout -b my-feature
Make your changes and add tests if relevant
Run the test suite:
cargo test
Please follow Conventional Commits for your commit messages and try to keep the code style idiomatic.
If you're unsure where to start, check the issues marked good first issue or help wanted.
All contributions are welcome!
Bug fixes, docs, tests, feature/UX/CLI ideas, ...
🐛 Reporting Bugs
If you encounter a bug, please help improve Frate by reporting it.
Before submitting, make sure to:
Check the existing issues – your problem might already be reported.
Use a clear and descriptive title.
Include steps to reproduce the bug, your platform and OS, and any relevant logs or screenshots.
If possible, test against the latest master branch to see if the bug still occurs.
Create a new issue
Thanks for helping make Frate better!
This Project is licensed under either of:
at your option