Skip to content
A Command-Line Interface for the Swift Package Manager
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Sources Fixed JSON key used to get license info during package search Oct 3, 2018
.swift-version Set Swift version to 4.1 Feb 13, 2018 Created Code of Conduct Sep 28, 2017 Added May 25, 2017
circle.yml - Add install script to repo Oct 2, 2017


Mentioned in Awesome Vapor Built with Swift 4.2

What is it?

Ether is a CLI the integrates with SPM (Swift Package Manager), similar to NPM's command-line tool.

How do I install it?

With Homebrew:

brew tap Ether-CLI/tap
brew install ether

If you don't have, want, or can't use Homebrew, you can run the following script to install Ether:

curl | bash

What features does it have?


Searches for available packages:

ether search <name>

Example result:

Searching [Done]
vapor/vapor: 💧 A server-side Swift web framework.
License: MIT License
Stars: 13906

vapor/toolbox: Simplifies common command line tasks when using Vapor
License: MIT License
Stars: 111

matthijs2704/vapor-apns: Simple APNS Library for Vapor (Swift)
License: MIT License
Stars: 289

vapor-community/postgresql: Robust PostgreSQL interface for Swift
License: MIT License
Stars: 99



Installs a package with its dependencies:

ether install <name>

Example output:

Installing Dependency [Done]
📦  10 packages installed


dependencies: [
    .package(url: "", from: "3.0.0"),
    .package(url: "", from: "3.0.0"),
    .package(url: "", from: "3.0.0") <=== Added Package


The install command has a rather interesting method of getting the proper package. Because you can have packages with the same name by different authors, Ether will run a search based on the argument you pass in and get the most stared result. If the name contains a slash (/), then the URL will be created directly without a search like this:<NAME>.git

Note that this is case insensitive.

Fix Install

Fixes the install process when an error occurs during install, such as a git conflict.

ether fix-install

Example Output:

This may take some time...
Fixing Installation [Done]


Removes the package and its dependencies from the project:

ether remove <name>

Example output:

Removing Dependency [Done]
📦  2 packages removed


Updates the packages. This only needs to be run if packages are manually added.

ether update

Example output:

Updating Packages [Done]

You can pass in the --self flag to update Ether to the latest version:

ether update --self

Example output:

Updating Ether [Done]

Template Create

Saves the current state of the project as a template that can be used later when creating a new project.

ether template create <name>

Example output:

Saving Template [Done]

Template Remove

Saves the current state of the project as a template that can be used later when creating a new project.

ether template remove <name>

Example output:

Deleting Template [Done]

Template List

Saves the current state of the project as a template that can be used later when creating a new project.

ether template list

Example output:

- Vapor


Creates a project. It can be a Swift package, a Swift executable, or a project from a previously saved template.

ether new <name>

Example output:

Generating Project [Done]

Version Latest

Sets all packages to their latest versions:

ether version latest

Example output:

Updating Package Versions [Done]

Version All

Outputs the name of each package installed and its version

ether version all

Example output:

Getting Package Data [Done]
Bits: v1.0.0
Console: v2.1.0
Core: v2.0.2
Debugging: v1.0.0
JSON: v2.0.2
Node: v2.0.4

How do I make my package available?

If they are on GitHub, they already are! Ether uses GitHub's GraphQL API to fetch projects with a Package.swift file in the project root.

What license is it under?

Ether is under the MIT license.

You can’t perform that action at this time.