Luca Logo

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)"
Terminal — luca install

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

Step 1: Install Tools

Install tools in a single command:

luca install realm/swiftlint@0.62.0
luca install tuist/tuist@4.78.0 --asset tuist.zip
Step 2: Use Your Tools

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

Step 1: Create a 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
Step 2: Install Tools

Install all tools defined in the Lucafile:

luca install
Step 3: Use Your Tools

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

Custom Lucafile

Specify a custom Lucafile location:

luca install --spec /path/to/custom/Lucafile
Uninstallation

Remove installed tools and specific versions:

luca uninstall SwiftLint
luca uninstall SwiftLint@0.62.0
Unlinking

Unlink tools from a project folder:

luca unlink SwiftLint
Binary naming

Specify the binary name for tools shipped as a raw executables:

luca install firebase/firebase-tools@v14.12.1
  --desired-binary-name firebase
Checksum validation

Specify checksum for security:

luca install realm/swiftlint@0.62.0 \
  --checksum 5e1956c22fcc9997cde69c62daeecc78baef88d4c03c07349815df881fc1ce28 \
  --algorithm sha256
Uninstall Luca

Completely remove Luca from your system:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/LucaTools/LucaScripts/HEAD/uninstall.sh)"
List Installed

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 Linked

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

Requirements

Luca requires:

  • macOS 13.0 or later
  • Swift 5.7 or later (for building from source)
Source Installation

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