Stoat for Desktop - self-hostable fork
- TypeScript 94.5%
- JavaScript 3.3%
- Shell 1.1%
- Nix 0.7%
- HTML 0.2%
- Other 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Release Please / Release Please (push) Has been cancelled
Release Webhook / Send Release Webhook (release) Has been cancelled
Release Please / Publish App (push) Has been cancelled
Release Please / Publish App-1 (push) Has been cancelled
Release Please / Publish App-2 (push) Has been cancelled
Release Please / Publish App-3 (push) Has been cancelled
Release Please / Publish App-4 (push) Has been cancelled
Release Please / build-appimage (ubuntu-24.04-arm) (push) Has been cancelled
Release Please / build-appimage (ubuntu-latest) (push) Has been cancelled
Release Please / publish-appimage (push) Has been cancelled
|
||
| .github | ||
| .mise | ||
| .vscode | ||
| assets@1e7f9990c2 | ||
| scripts | ||
| src | ||
| .eslintrc.json | ||
| .gitignore | ||
| .gitmodules | ||
| .prettierrc | ||
| .release-please-manifest.json | ||
| CHANGELOG.md | ||
| chat.stoat.StoatDesktop.desktop | ||
| chat.stoat.StoatDesktop.metainfo.xml | ||
| flake.lock | ||
| flake.nix | ||
| forge.config.ts | ||
| forge.env.d.ts | ||
| index.html | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| release-please-config.json | ||
| screenshot.png | ||
| strings.ts | ||
| tsconfig.json | ||
| vite.main.config.ts | ||
| vite.preload.config.ts | ||
| vite.renderer.config.ts | ||
Self-hostable fork. This build is maintained independently and publishes releases to the project's own Forgejo instance.
Highlights
- Self-hosted & modified instances — enter any instance URL directly
in the app UI (first-run wizard, tray → Settings… or
Ctrl/Cmd+,). Self-signed certificates are supported as an opt-in. - Stability first — automatic recovery from network failures, renderer crashes and GPU crashes (falls back to software rendering instead of showing a black screen); optional services (tray, Discord RPC, PipeWire) can never prevent the app from starting.
- Lightweight — no background auto-updater, optional integrations are off by default, tight failure handling.
- Screen sharing on Linux — detects our own window (marked with
isSelf) and never captures the app's own sound (loopbackWithMute, PipeWire routing skips our own audio clients). - Multi-language UI — English, Russian, Ukrainian, German, Spanish, French, Italian, Polish, Portuguese (Brazil), Turkish, Japanese, Korean, Simplified and Traditional Chinese (auto-detected from the system).
Installation
- Prebuilt archives for Windows, macOS and Linux are attached to the releases of this repository.
Development Guide
Contribution guidelines for Desktop app TBA!
Before getting started, you'll want to install:
Then proceed to setup:
# clone the repository
git clone --recursive https://github.com/stoatchat/for-desktop stoat-for-desktop
cd stoat-for-desktop
# Install tools from mise
mise install
# install all packages
mise install:frozen
# start the application
mise dev
# ... or build the bundle
mise build
# ... or build all distributables
mise make
Various useful commands for development testing:
# connect to the development server
mise exec -- pnpm start -- --force-server http://localhost:5173
# test the flatpak (after `make`)
mise exec -- pnpm install:flatpak
mise exec -- pnpm run:flatpak
# ... also connect to dev server like so:
mise exec -- pnpm run:flatpak --force-server http://localhost:5173
# Nix-specific instructions for testing
nix develop
pnpm package
pnpm run:nix
# ... as before:
pnpm run:nix --force-server=http://localhost:5173
# a better solution would be telling
# Electron Forge where system Electron is
Pulling in Stoat's assets
If you want to pull in Stoat brand assets after pulling, run the following:
# update the assets
mise assets
Currently, this is required to build, any forks are expected to provide their own assets.