Luca
A lightweight decentralised tool manager for macOS to manage project-specific tool environments.
Luca helps developers install, manage, and activate specific versions of development tools in their projects without polluting your global PATH. For more information, check out our GitHub repository.
Get Started
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/LucaTools/LucaScripts/HEAD/install.sh)"
See Luca in action - simple installation and immediate tool availability
Version-specific Installations
Install specific versions of tools needed for your project, ensuring consistent development environments.
Project Isolation
Each project can have its own set of active tools, preventing version conflicts between projects.
Zero Configuration
Either create a simple Lucafile or install individual tools. No complex setup, no lockfiles, no global PATH pollution.
Quick Start
Install tools in a single command:
luca install realm/swiftlint@0.62.0
luca install tuist/tuist@4.78.0 --asset tuist.zip
Project-specific tool versions work automatically:
# In project-1 directory
$ tuist version
4.80.0
# In project-2 directory
$ tuist version
4.78.0
Lucafile
Create a Lucafile in your project directory:
tools:
- name: SwiftLint
version: 0.62.0
url: https://github.com/realm/SwiftLint/releases/download/0.62.0/portable_swiftlint.zip
- name: Tuist
version: 4.80.0
url: https://github.com/tuist/tuist/releases/download/4.80.0/tuist.zip
Install all tools defined in the Lucafile:
luca install
Use your project-specific tool versions:
swiftlint --help
tuist --help
How It Works
1. Specify Tools
Define your required tools with specific versions in a simple YAML Lucafile.
2. Install Once
Luca downloads and extracts tools to:
~/.luca/tools/{tool-name}/{version}/
3. Use Locally
Tools are symlinked to:
.luca/active/
in your project directory, making them immediately available.
4. Share Settings
Commit your Lucafile to ensure all team members use identical tool versions.
Additional Features
Specify a custom Lucafile location:
luca install --spec /path/to/custom/Lucafile
Remove installed tools and specific versions:
luca uninstall SwiftLint
luca uninstall SwiftLint@0.62.0
Unlink tools from a project folder:
luca unlink SwiftLint
Specify the binary name for tools shipped as a raw executables:
luca install firebase/firebase-tools@v14.12.1
--desired-binary-name firebase
Specify checksum for security:
luca install realm/swiftlint@0.62.0 \
--checksum 5e1956c22fcc9997cde69c62daeecc78baef88d4c03c07349815df881fc1ce28 \
--algorithm sha256
Completely remove Luca from your system:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/LucaTools/LucaScripts/HEAD/uninstall.sh)"
List all versions of tools installed locally:
luca installed
FirebaseCLI:
- 14.12.1
Sourcery:
- 2.2.5
SwiftLint:
- 0.53.0
- 0.62.0
tuist:
- 4.78.0
List tools currently linked in the project:
luca linked
FirebaseCLI:
version: 14.12.1
binary: firebasee
location: /Users/alberto/.luca/tools/FirebaseCLI/14.12.1/firebasee
Sourcery:
version: 2.2.5
binary: sourcery
location: /Users/alberto/.luca/tools/Sourcery/2.2.5/bin/sourcery
tuist:
version: 4.78.0
binary: tuist
location: /Users/alberto/.luca/tools/tuist/4.78.0/tuist
System Requirements
Luca requires:
- macOS 13.0 or later
- Swift 5.7 or later (for building from source)
Build and install from source code:
git clone https://github.com/LucaTools/Luca.git
cd Luca
swift build -c release
cp -f .build/release/luca /usr/local/bin/luca