Everysaid GitHub
Everysaid / Get started

Get started

Build it, try it on invented people, then point it at your own history.

Build it

Everysaid is one program, everysaid, built from source. It needs Go 1.26 and, for the interface, Node.js with pnpm.

git clone https://github.com/everysaid/everysaid.git
cd everysaid
cd web && pnpm install && pnpm build && cd ..    # the interface
go generate ./internal/webui                      # put it inside the binary
CGO_ENABLED=0 go build -o everysaid ./cmd/everysaid

The result is a single static binary, with no runtime to install. It builds for Linux, macOS and Windows, on amd64 or arm64, from any of them (GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build ./cmd/everysaid).

With Signal. Signal’s client needs Signal’s own library, libsignal, written in Rust. scripts/build-signal.sh builds it and links it in (Linux and macOS; it needs git, Rust, a C and C++ compiler, protoc, cmake and libclang).

Try it on invented people

./everysaid demo --dir /tmp/demo --serve

This builds an archive of invented people, groups, calls and pictures in /tmp/demo, with its own settings and data, never touching yours, and serves it at http://localhost:8530. The first start prints a one-time setup link: open it, give a name, and choose how to sign in.

Run it for real

./everysaid serve        # http://localhost:8520

The first start prints a one-time setup link, valid for an hour. Open it and choose how you will sign in:

Ten recovery codes are shown once: keep them somewhere safe. everysaid user link prints a new link at any time, for a new device or a way back in.

Then, in Sources, add what you have: an iPhone, an Android phone, Telegram, WhatsApp, Signal, Viber Desktop, an export of Messenger or Instagram, old Adium or Pidgin logs. Each source says whether it is ready and what it still needs, and keeps a log of every run. An address book (CardDAV or a .vcf file) gives people their names.

What some sources need

Source Needs
iPhone libimobiledevice (idevicebackup2), the phone on the cable, and an encrypted backup
Android adb, with USB debugging on
Telegram an api_id and api_hash from my.telegram.org, asked for at login
Viber Viber Desktop, on Linux
Pictures exiftool and ffmpeg

The archive lives in your data folder (~/.local/share/everysaid on Linux), which your own backups should cover; what can be made again goes to the cache.

Reach it from your phone

Passkeys and notifications need HTTPS, and passkeys are tied to the address, so set it once in ~/.config/everysaid/config.toml before making them:

[server]
origin = "https://everysaid.example.org"

Then either put it behind a reverse proxy with HTTPS, for example Caddy:

everysaid.example.org {
    reverse_proxy 127.0.0.1:8520
}

or keep it on a private network (WireGuard, Tailscale), where tailscale serve --https=443 http://127.0.0.1:8520 gives it an HTTPS address.

On the phone, open the address and install it: the install prompt on Android, Share, Add to Home Screen on an iPhone. Installed, it runs full screen and can notify you of new messages.

Keep it running

On Linux, as a systemd user service, ~/.config/systemd/user/everysaid.service:

[Unit]
Description=Everysaid
After=network-online.target

[Service]
ExecStart=%h/.local/bin/everysaid serve
Restart=on-failure

[Install]
WantedBy=default.target
systemctl --user enable --now everysaid
loginctl enable-linger $USER      # keep it running without a login

Read further

The repository’s documentation goes into every detail: the README (the sources, the archive, the principles), running the app, building, how it is built, and the data sources.