SimpleX Chat
Chat & CommunicationPrivate messenger without any user identifiers
Replaces Signal, WhatsApp
11 open-source, self-hostable apps written primarily in Haskell.
Private messenger without any user identifiers
Replaces Signal, WhatsApp
Web interface for hledger plain-text accounting
Replaces QuickBooks, Quicken
Wiki program that stores pages and uploaded files in a git repository,
Manage and sync large files with Git without storing contents
Replaces Dropbox
Command-line kanban board stored in Markdown
Replaces Trello, Things
Open-source self-hosted bookmarking inspired by Pinboard
Replaces Pinboard, Pocket
Messaging platform operating without user identifiers
Automatic rule-based time tracker for desktops
Replaces RescueTime, ManicTime
Productivity tool and CLI to manage tasks and projects
Replaces Todoist, Things
Automated import pipeline for hledger plain-text accounting
Replaces QuickBooks import, Tiller
Static site generator library built in Haskell
Replaces Jekyll
No apps match these filters.
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.
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.
| App | What it does | Difficulty (directory) | RAM estimate |
|---|---|---|---|
| SimpleX Chat | Messenger with self-hostable relays | Medium | 256 MB |
| hledger-web | Web UI for plain-text accounting | Medium | 128 MB |
| Gitit | Wiki stored in a Git repo | Medium | 512 MB |
| git-annex | Large-file sync on top of Git | Hard | 128 MB |
| Espial | Pinboard-style bookmarks | Medium | 128 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.
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.
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.