Self-hosted apps built with Haskell

11 open-source, self-hostable apps written primarily in Haskell.

Last reviewed Oct 11, 2026 · 597 words

Haskell apps are pleasant to run and unpleasant to build. GHC compiles them to native binaries, so a prebuilt release or container gives you a single process with modest memory needs: the directory estimates 128 MB for hledger-web, git-annex and Espial, and 256 MB for SimpleX Chat. The pain arrives only if you compile from source, where the GHC toolchain and dependency build can take far longer and far more RAM than the app will ever use. Take the binaries, and the language mostly disappears.

What Haskell means for the person running it

Deployment is the easy part. Most of the server-shaped apps here list binary among their install methods, and Espial and SimpleX Chat add Docker. There is no interpreter, no runtime to keep patched separately, and no dependency tree resolved at start-up. Upgrades are a binary swap.

Reading or patching the code is where Haskell asks the most of you. The language is unfamiliar to most self-hosters, and a source build pulls in GHC plus cabal or Stack. If you need a fix, file an issue upstream rather than plan on carrying a local patch.

Which Haskell apps are worth running

AppWhat it doesDifficulty (directory)RAM estimate
SimpleX ChatMessenger with self-hostable relaysMedium256 MB
hledger-webWeb UI for plain-text accountingMedium128 MB
GititWiki stored in a Git repoMedium512 MB
git-annexLarge-file sync on top of GitHard128 MB
EspialPinboard-style bookmarksMedium128 MB

SimpleX Chat (about 19,500 stars, AGPL-3.0) is the headline. It is a messenger with no user identifiers at all, and the self-hosting angle is that you can run your own SMP relay servers so your messages route through hardware you control. Among the communication category apps, the catalogue singles out its metadata privacy as best in class, with the caveat that group features are still maturing.

hledger-web (about 4,800 stars) is the browser front end for hledger. Your ledger stays a plain-text journal file, so there is no database to back up or migrate; you back up a text file. For anyone already keeping accounts in plain text, it is the easiest finance app to trust.

git-annex (about 2,000 stars) tracks where copies of large files live across many remotes without putting their contents in Git. The directory rates it Hard and it earns that, but for photo or video archives spread over several disks it has no real equal. Gitit is a wiki whose pages are commits, editable from the web or from your terminal. Espial is a small, SQLite-backed Pinboard replacement.

Do you need to know Haskell to run these?

No. Every app above has a release binary or container, and none of them expects you to touch the toolchain. Haskell matters only if you want to contribute or patch, and the low memory and single-process deployment are a net gain for the operator. The exceptions are the bucket's non-servers: Taskell (archived), TaskLite and arbtt are command-line or desktop tools, and Pencil is a static-site library for Haskell programmers.

What I'd do

Run SimpleX Chat's relay if private messaging is the goal, and hledger-web if your books are already plain text. Add git-annex only once your archive spans more disks than you can track by hand. Install from release binaries or Docker every time, and leave the source build to the developers.