An almost stable Matrix client, written from scratch in Rust and Svelte.
Trying to be feature-complete while enhancing the user experience with quality-of-life features, cosmetics, utilities and sheer usability.
Join the Matrix space at #sable:sable.moe for project & feature discussions, help with issues, and meowing.
The web build is deployed to app.sable.moe and the nightly beta is at dev.sable.moe. Read on for installation instructions.
Click the button above or this link to download Sable from Google Play.
Use an F-Droid client, like Neo Store or Droid-ify, to download Sable from the IzzyOnDroid repository.
APKs ship with every build, and Obtainium updates them straight from Forgejo. Each build also publishes an obtainium.json app config.
moe.sable.client
BC:9F:83:A1:AC:9C:33:2D:F7:39:75:96:2E:78:B5:57:24:D0:6A:EE:E7:3E:FF:8B:7B:78:52:61:AD:48:62:8B
moe.sable.next.nightly
BC:9F:83:A1:AC:9C:33:2D:F7:39:75:96:2E:78:B5:57:24:D0:6A:EE:E7:3E:FF:8B:7B:78:52:61:AD:48:62:8B
- Install Obtainium.
- Tap Add to Obtainium above. Choose the nightly config if you want to receive pre-releases. Alternatively, download
obtainium.jsonand import it with Import/Export → Import from file. - (Optional) Verify the download is genuine using AppVerifier.
Apps added before the move to per-build prereleases have to be removed and re-added.
The Windows build automatically checks for updates. Download and run the setup.
Stable builds are on Flathub. Nightly builds have their own Flatpak remote, rebuilt from main on every push:
flatpak remote-add --if-not-exists sable-next-nightly https://sableclient.github.io/sable-next/sable-next-nightly.flatpakrepo
flatpak install sable-next-nightly moe.sable.next.electron.NightlyInstall and update using your preferred AUR helper:
yay -S sable-bin
paru -S sable-binUse sable-nightly-bin for nightly builds. See the
AUR upgrade notes when upgrading older packages.
nix run git+https://git.sable.moe/SableClient/sable-next#sable-desktopPackages are published to the Forgejo repositories at git.sable.moe. Use nightly instead of stable for nightly builds; the package is then sable-nightly.
sudo curl https://git.sable.moe/api/packages/SableClient/debian/repository.key -o /etc/apt/keyrings/forgejo-SableClient.asc
echo "deb [signed-by=/etc/apt/keyrings/forgejo-SableClient.asc] https://git.sable.moe/api/packages/SableClient/debian stable main" | sudo tee /etc/apt/sources.list.d/sable.list
sudo apt update && sudo apt install sablesudo dnf config-manager addrepo --from-repofile=https://git.sable.moe/api/packages/SableClient/rpm/stable.repo
sudo dnf install sableInstall using Homebrew:
brew install --cask SableClient/sable/sableThe cask is published to the GitHub tap, which brew install taps by default, and to a Forgejo mirror: brew tap SableClient/sable https://git.sable.moe/SableClient/homebrew-sable.git.
There is a Testflight you can join while the app is under review. It will be available on the App Store soon™.
iOS builds are unsigned IPAs distributed through AltStore and SideStore. Each release publishes its IPA with an altstore-source.json that lists it.
- Set up AltStore Classic or SideStore on your device.
- Tap a button above, or add the source manually (swap
latestfornightlyin the URL for the nightly channel):- AltStore:
altstore://source?url=https://git.sable.moe/SableClient/sable-next/releases/download/latest/altstore-source.json - SideStore:
sidestore://source?url=https://git.sable.moe/SableClient/sable-next/releases/download/latest/altstore-source.json
- AltStore:
- Install Sable v2 from the source. AltStore/SideStore re-sign the unsigned IPA with your personal development certificate at install time, so apps refresh every 7 days on a free account.
Both configs come from the obtainium and altstore jobs in tauri-build.yml.
If your platform is not listed or you would like to download packages directly, check the latest releases.
You can read more about getting started on the developer wiki.
Clone the repository
git clone https://git.sable.moe/SableClient/sable-next.git
Node, pnpm, Rust, and other tooling are managed by mise. After installing it on your system, enter the directory and run the following commands to set up the project:
mise install
mise run setup # pnpm install + git hooks
mise run dev # SvelteKit on http://localhost:3000mise run dev builds the development WASM bundle first. While editing Rust in
another terminal, run mise run wasm:watch; Vite reloads after each regenerated
bundle. Production builds generate the optimised WASM bundle automatically.
pnpm test:e2e generates its WASM bundle in src/generated/wasm-e2e/, so it
can run while the development server is using src/generated/wasm/.
Run mise tasks for the full list.
Put Node, pnpm, Rust (with the wasm32-unknown-unknown target) and
wasm-bindgen-cli (the version in Cargo.lock) on your PATH, then run
pnpm install and pnpm build.
See the web client guide for Docker and client configuration, or the server mode guide to run Sable and its Matrix stores on your server.
Desktop builds (Windows, macOS, Linux) use Electron; see electron/README.md. Android and iOS use Tauri.
mise run tauri:setup # Shared Rust/system dependencies, including Linux packages
mise run tauri:icons # Regenerate native icons after changing the logo SVG
mise run tauri:setup:macos # macOS: Xcode
mise run tauri:setup:android # Android: SDK packages + NDK
mise run tauri:setup:ios # iOS: Xcode project + CocoaPods (macOS)Every push to main publishes bundles for all targets as a distinct
nightly prerelease.
Linux x86_64, macOS, Android and iOS build here; Windows and Linux aarch64
build on the GitHub mirror and attach their bundles, with attestations, to the
same release. Pushing a v* tag publishes a stable release the same way.
The web build ships with every release as sable-<version>-web.tar.gz.
Extract it into your web root to serve the app yourself; see
Caddyfile for an example configuration.
See CONTRIBUTING.md.
AGPL-3.0-or-later, with an additional permission for App Store executables under MPL 2.0 (See LICENSE). The Sable name and logo are covered by TRADEMARKS.md.