# Ferdium: a community desktop client that puts Slack, WhatsApp and Telegram in one window

> Ferdium is an Apache-2.0 Electron app, forked from Franz, that wraps messaging and productivity web services into a single desktop shell. It installs from prebuilt packages or from source with pnpm, and its recipe system is where the real engineering sits.

**ferdium/ferdium-app** — All your services in one place, built by the community

- Repository: https://github.com/ferdium/ferdium-app
- Website: https://ferdium.org
- Stars: 4,644 · Forks: 319
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/ferdium-ferdium-app

## The multi-service problem Ferdium is built around

Anyone who works across Slack, WhatsApp, Telegram and a couple of web dashboards ends up with the same mess: six pinned browser tabs, each with its own session, its own notification permission prompt, and its own way of losing state when the tab is discarded. Ferdium targets that specific situation. It is a desktop application that combines web services into one application, and the README frames it as a hard fork of Franz with extra features and fewer restrictions.

The audience is desktop users, not teams deploying infrastructure. There is no server component to host and no account system to administer. The README notes that Ferdium is compatible with an existing Franz account, so a Franz user can carry their configuration over rather than rebuilding it. That compatibility is the clearest signal of who the project is for: people already living in this category of app who want a different maintainer and a different feature set.

The project also carries the hacktoberfest topic and an all-contributors table in the README listing roles like code, design, doc, translation and infra. That is a community-maintained desktop client, and the contributor table is the shape of its maintenance model.

## How Ferdium works: Electron shell, recipes, and a local API

Ferdium is an Electron application. The package.json sets main to index.js, the start script runs electron ./build, and the dev script runs node esbuild.mjs --watch. So the UI is built by esbuild and loaded into an Electron process, which is the standard way to ship a web-technology desktop app.

The service integrations live in a separate top-level directory called recipes. The Dockerfile treats that directory as its own pnpm project: it changes into /usr/src/ferdium/recipes and runs pnpm i, pnpm lint, pnpm reformat-files and pnpm package. That tells you recipes are packaged artifacts, not just loose configuration. Each supported service is a recipe, and the service store shown in the README screenshots is the user-facing view of that collection.

There is also a split between local and live API modes. The scripts include start:local, which sets USE_LOCAL_API=1, and start:live, which sets USE_LIVE_API=1. The existence of those two environment variables means the app talks to a service backend whose endpoint is switchable at launch. The README does not document what the live API serves, so treat that as an open question rather than a settled architecture detail.

Styling is handled through a plain CSS file. The README states you can style Ferdium's UI with USER_DATA/Ferdium/config/custom.css, and it lists the platform locations for USER_DATA: %APPDATA% on Windows, $XDG_CONFIG_HOME or ~/.config/ on Linux, and ~/Library/Application Support on macOS. That is a deliberate escape hatch: no plugin API, just a file the app reads.

## Installing Ferdium and adding a first service

The README's download section points at ferdium.org/download, and it says assets are made available via GitHub releases. So the first path is a prebuilt installer for your platform from the releases page. The README does not list which architectures or package formats are published, so check the release assets for the version you want before assuming a build exists for your machine.

If you want to run from source, the repository pins its toolchain hard. package.json sets engines to node 24.20.0 and pnpm 12.3.4, marks engine-strict true, and repeats the same versions under volta and packageManager. The prepare script runs node scripts/prepare.js, which is the usual place for post-install setup.

```bash
pnpm install
pnpm dev
pnpm start
```

The dev script watches and rebuilds the bundle with esbuild. The start script launches Electron against the build output, so you need the build to exist first. The repository also provides a combined script for this, start:all-dev, which runs pnpm dev and waits on http-get://127.0.0.1:8080 before starting Electron.

```bash
pnpm start:all-dev
```

With the app running, the workflow is to add a service from the store, sign into it in the embedded view, and let Ferdium keep the session. Workspaces and the Todos panel, both shown in the README screenshots, are the organisational layer on top. To restyle the interface, edit the custom.css file at the USER_DATA path for your platform. On Linux that is $XDG_CONFIG_HOME or ~/.config/, on Windows %APPDATA%, and on macOS ~/Library/Application Support.

For contributors, the repository defines test, typecheck, lint and biome:check scripts, so the expected pre-push loop is pnpm test, pnpm typecheck and pnpm lint.

## Where Ferdium is the wrong tool

The clearest boundary is platform. The README's only install pointer is the desktop download page, and the repository is an Electron app with electron-builder configuration files at the top level. Searching for a mobile build will not find one here. If your messaging happens on a phone, this is not the project for you, regardless of how good the desktop experience is.

A second boundary is the recipe dependency. Because services are packaged recipes, a service that has no recipe, or whose web interface has changed in a way the recipe does not handle, is not something you can fix by editing custom.css. The Dockerfile runs pnpm lint and pnpm package over the recipes directory, which means recipes go through a build step. A broken recipe is a code change in that directory, not a user-side setting.

Third, the project ships nightly builds alongside stable ones. The release list includes v7.2.4-nightly.1 and v7.2.4-nightly.3 next to v7.2.3, and package.json's version field is currently 7.2.4-nightly.3. Nightly builds are where unreleased work lands. If you need a predictable client for work communication, read the version string before you install an asset, because the newest tag is not necessarily the stable one.

Finally, account compatibility cuts both ways. The README advertises compatibility with an existing Franz account, which is convenient for migration and also means your service configuration lives in a profile format inherited from another project. The README does not document rollback of that profile, and the migration scripts under scripts/migration are described as a one-way move from Ferdi to Ferdium.

## Ferdium compared with running the same services as browser tabs or PWAs

The realistic alternative is not another single-purpose chat client. It is the browser. Chrome, Firefox and Safari can install each service as a progressive web app, pin it, and keep it in its own window with its own notification permission. That approach costs nothing, updates automatically, and never breaks because a wrapper lagged behind a site change.

The difference in approach is who owns the session and the integration. A browser PWA is the vendor's own web app in a thin frame; Ferdium is a separate Electron runtime that loads the service and layers its own features on top, including workspaces, a Todos panel and a shared service store. That layering is exactly what a browser cannot give you, and it is also the source of the maintenance burden: every service change is a potential recipe change.

A second alternative is Franz itself, since Ferdium is described as a hard fork of it. The README's stated differences are additional features, fewer restrictions, and account compatibility. If you are already on Franz and it works, the migration is a deliberate choice about maintainership rather than a functional gap. If you are starting fresh, the fork lineage matters less than whether the recipes you need exist and are current.

## Licence, build cost and what maintenance actually involves

Ferdium is licensed Apache-2.0, declared in both the package.json license field and LICENSE.md. For most desktop users the licence is not a practical constraint: you can run it, and the Apache-2.0 terms cover redistribution and modification with the usual notice and patent provisions. This is not legal advice, and if you plan to ship a modified build inside a company, read LICENSE.md and the NOTICE handling that Apache-2.0 requires rather than relying on a summary.

The build cost is real. The pinned toolchain is Node 24.20.0 and pnpm 12.3.4 with engine-strict enabled, so an older local Node will refuse to install. The Dockerfile exists specifically for cross-architecture builds and installs rpm, ruby, gem and fpm, then builds the recipes package before the app. That is a heavier pipeline than a typical web project, and it reflects the fact that Ferdium produces native installers for multiple platforms.

On maintenance: the repository is not archived, and the last push was on 2026-09-13. Releases are frequent, with v7.2.3 on 2026-09-07 and two nightlies in the following days. Frequent nightlies plus a stable tag is a normal pattern for a project that wants fast service-recipe fixes without forcing every user onto unreleased code. The cost to you is upgrade cadence: if a service breaks, the fix likely lands in a nightly first.

For contributors, the repository defines pnpm test, pnpm typecheck, pnpm lint and pnpm biome:check, and CONTRIBUTING.md is the documented starting point for setting up a development machine.

## Conclusion

Adopt Ferdium if you run several browser-based messaging services on a desktop and want them in one window with a shared notification surface, and if you are willing to install from signed release assets or build it yourself with pnpm. Do not adopt it if you need a mobile client: the README only points at ferdium.org/download and the repository layout is a desktop Electron app, so Android and iOS are not covered there. Before committing, verify three things: that the service you depend on has a recipe under recipes/, that a release asset exists for your platform and architecture in the GitHub releases list, and that you are comfortable with the custom.css styling path at USER_DATA/Ferdium/config/custom.css, since that file is the documented way to adjust the interface.

## FAQ

### What is the Ferdium app?

Ferdium is a desktop application that combines your web services into one app, described in the README as a hard fork of Franz with additional features and fewer restrictions. It is built with Electron and TypeScript and licensed Apache-2.0.

### How safe is Ferdium?

The repository is public, licensed Apache-2.0, and has a SECURITY.md file at the top level, but the README does not make any security guarantees about how service sessions are stored. The app loads third-party web services inside an Electron runtime, so the trust boundary is the same as signing into those services in a browser.

### What are some alternatives to Ferdium?

Franz is the closest alternative, since Ferdium is a hard fork of it and remains compatible with existing Franz accounts. Running each service as a browser PWA is the other practical option, at the cost of losing Ferdium's workspaces, Todos panel and shared service store.

### Is Ferdium down?

Ferdium is a desktop application, not a hosted service, so there is no server of Ferdium's own that can go down. If a specific service inside it stops loading, the cause is usually that service's website or its recipe, and the repository's recipes directory is where those integrations are built.

### what is ferdium app

It is the same desktop application: a single window that hosts multiple web services, based on Franz and maintained by contributors, with a service store, workspaces and a Todos panel. The README points to ferdium.org for more detail on its features.

## Sources

- [ferdium/ferdium-app on GitHub](https://github.com/ferdium/ferdium-app)
- [License: Apache-2.0](https://github.com/ferdium/ferdium-app/blob/develop/LICENSE)
- [Project website](https://ferdium.org)
- [README](https://github.com/ferdium/ferdium-app/blob/develop/README.md)
- [Releases](https://github.com/ferdium/ferdium-app/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ferdium-ferdium-app
