System for installing Haskell apps
Halcyon is a system for installing apps and development tools , including and .
Follow the Halcyon tutorial to get started.
Halcyon uses regular Cabal packages, sandboxes, and repositories.
Halcyon does not require GHC to be installed, as it can install the right version of GHC for the app.
Halcyon archives and caches all build products, optionally uploading archives to external storage.
Halcyon automatically restores archived build products, saving time during development, continuous integration, and deployment.
Halcyon has been used in production since June 2014.
Halcyon includes solutions for many cabal-install issues, such as , , , , , , , , , , , , and .
Halcyon allows sandbox sources, build tools, and native OS packages to be declared as dependencies and installed together with the app.
Halcyon can be used to construct deployment systems, such as .
“Miëtek’s and Halcyon has made deploying How I Start fast and simple! Thanks!”
, How I Start author
The IRC channel on is a good place to ask questions and find answers.
Please report any problems with Halcyon on the . There is a for problems with the documentation.
Need commercial support? Contact the author directly.
See the Halcyon examples for a demonstration of advanced Halcyon features.
Take a look at the Halcyon shootout for a comparison of build times and sizes across most Haskell web frameworks.
Each example app can be installed in one command on most recent Linux distributions, including CentOS 7, Debian 7, Fedora 20, and Ubuntu 14.04.
Additionally, each example app can be deployed in one click to or .
“If Halcyon is not helping you install apps easily, there is a bug in Halcyon.”
— Miëtek Bak, with apologies to
Halcyon provides the halcyon install
command, which can be used to install Haskell apps:
$ halcyon install
-----> Cloning ... done, f1ccdd9
-----> Installing halcyon-tutorial-1.0
Label: **halcyon-tutorial-1.0**
Prefix: **/app**
Source hash: **b90bb47**
External storage: **public**
GHC version: **7.8.4**
-----> Restoring install directory
Downloading ... done
Extracting halcyon-install-b90bb47-halcyon-tutorial-1.0.tar.gz... done, 8.8MB
-----> Installing app to /app
-----> Installed halcyon-tutorial-1.0
-----> App installed: **halcyon-tutorial-1.0**
Halcyon can be installed by cloning the :
$ git clone
Alternatively, you can run the , which also installs the necessary OS packages and sets up the environment:
$ source <( curl -sL )
Start with the Halcyon tutorial to learn how to develop a simple Haskell web app using Halcyon.
See the Halcyon reference for a complete list of available commands and options.
Read the to learn how to deploy Haskell web apps to .
Halcyon is written in , using the library.
“Check out Miëtek’s buildpack — it dynamically selects a pre-made Cabal sandbox for build speed.”
, for
My name is . I make software, and Halcyon is one of .
This work is published under the MIT X11 license, and supported by my company, .
Like my work? I am available for consulting. Say hello, or follow .
Thanks to , , and for initial work on Haskell deployment. Thanks to , , and for advice and assistance.
The welcome image is based on , by . The monospaced font is , by . The sans-serif font is , by . Website built with .
Thanks to for providing low-latency access to Halcyon public storage.
This project is not affiliated with or .
Made by . Published under the MIT X11 license. Not affiliated with or .
Copyright @2023 halcyon All Rights Reserved .