Install
Get Grem
Grem runs on Linux, macOS, Windows, Android, and iOS from one Flutter codebase. Signed builds are not published yet, so today it is built from source.
Build the client
cd app
flutter pub get
flutter run -d linux # or macos, windows, android, ios
Linux build dependencies
The Flutter Linux toolchain uses clang, and the secure storage plugin needs libsecret and jsoncpp headers.
sudo dnf install clang cmake ninja-build gtk3-devel libsecret-devel jsoncpp-devel
# Debian and Ubuntu:
sudo apt install clang cmake ninja-build libgtk-3-dev libsecret-1-dev libjsoncpp-dev
Create an account
Account creation happens in the app, because the master password and every key under it are generated on the device and never sent. The app asks for an email address, sends a code to it, and then asks for a master password.
Starting from a browser works too. The sign-up page here sends the same code to the same address; enter it in the app when it asks.
Run a private sync server
The app points at https://api.grem.sh
by default and can be pointed anywhere else from the sign-in
screen, under "Change sync server". The server stores sealed blobs,
so running a private one changes who holds the ciphertext and
nothing about what it contains.
cd server
cp .env.example .env # defaults to 127.0.0.1:5555 and a local mongod
cargo run --release
Configuration is environment variables. The signing
key is generated on first run and kept at
GREM_SECRET_FILE with 0600 permissions, so tokens
survive a restart. Sending mail needs a Postmark key and a verified
sender; without one the server prints codes to its log instead,
which is enough to develop against.