Sayfely Manual

Sayfely for admins

Everything you need as the person in charge of IT: set up Sayfely Server on a Mac in the office, bring colleagues on board securely, back up your data, manage recordings in line with data protection rules and keep an eye on day-to-day operations.

Screenshots show the German interface; in English, labels match the translations given here.

Your own server in the office No cloud TLS 1.3 · end-to-end macOS 26 or later Step by step

1. Overview

Sayfely is your company’s secure communication: calendar, chat and conferences. Everything runs on your own server right there in the office – no cloud, no third-party services, no telemetry.

The server is a perfectly ordinary Mac app: Sayfely Server. You install it on a Mac that’s always on, for example a Mac mini in the office. The app brings everything it needs along – the database (PostgreSQL), the conference server (LiveKit) and the Sayfely Server itself. You don’t have to install anything else: no Homebrew, no command line.

Your colleagues install the Sayfely app on their Macs. They get it straight from your server via a small download page. The apps connect to your server over an encrypted connection.

Your tasks as an admin

  • Once: prepare the server Mac, set up Sayfely Server, set up backups, define deletion periods for recordings.
  • Ongoing: approve or invite new people, manage accounts (reset passwords, lock, delete), install updates.
  • Every now and then: take a look at security events, storage, backups and error reports.

Three basic ideas you should know

IdeaWhat it means for you
The server sees no contentChat messages, files, event titles, notes, locations and recordings are end-to-end encrypted. Even you as an admin can’t read them in the server app. You only see when, who and how big – never what.
The server has a key with a fingerprintEvery Sayfely app remembers your server’s key the first time it connects (“pinning”). If a different key shows up later, the app blocks. That way nobody can slip in between unnoticed. This is why backing up the key matters so much (see Backup).
Nobody gets in without youInternal people only join through approval by an admin (after comparing three check words) or through an invitation with link and code.

2. Requirements

One Mac, a company network, a few free ports – that’s all it takes.

The server Mac

  • macOS 26 or later. The server app won’t start on older systems. The same applies to the Sayfely app on your colleagues’ Macs.
  • A Mac that’s always on, typically a Mac mini in the office. A laptop that goes home in the evening isn’t suitable.
  • On the same network as the workstations. Ideally wired. The Macs find the server automatically as long as they’re on the same network.
  • Enough free storage. You need space for the database, encrypted files and recordings. Recordings with video take up the most. The server app shows usage under Overview → Operations → Storage and warns you when less than 10 % is free.
  • A place for backups, ideally an external drive or a network drive (see Backup).
  • A user account on the Mac that the server runs under. The services run as background services of this signed-in user (see Preparing the Mac).
One installation is exactly one organization. If you look after two companies, you need two servers.

Ports

These are the ports Sayfely uses. The values are the defaults; you can see which ones apply to you in the server app under Settings → Network → Ports.

PortProtocolUsed forReachable from
8443TCP (HTTPS, WebSocket, TLS 1.3)Sayfely Server: sign-in, chat, calendar, files, live connectionCompany network
7883TCP (TLS 1.3)Conference control (in front of LiveKit, with the same key as the server)Company network
7881TCPConference: video and audio (fallback route)Company network
7882UDPConference: video and audioCompany network
8080TCP (HTTP)Download page for the Sayfely app. If 8080 is already taken, the app automatically picks the next free one of 8444, 8081, 8090, 18080 (otherwise 18081) during setup.Company network
7880TCPLiveKit internal (reachable from outside only via 7883)This Mac only
54329TCPPostgreSQL databaseThis Mac only
3478UDPConference: video and audio via relay (TURN) – only with access from the internetInternet
18450, 17880, 17881, 17882/UDPTCP/UDPOnly during a load testCompany network
If the macOS firewall asks on first launch whether SayfelyServer and livekit-server may accept incoming connections: choose Allow. Otherwise the other Macs can’t reach the server, or conferences stay silent.

Preparing the server Mac

Sayfely’s services run as background services of the signed-in user. They keep running when the server app’s window is closed and start on their own after login. To make sure the server comes back after a power cut or an update, set up the Mac like this:

  1. Turn on automatic login (System Settings → Users & Groups). The server app recommends this too, under Settings → Maintenance. Note: with FileVault, macOS still asks for the password once after a restart.
  2. Prevent sleep: in the energy settings, make sure the Mac never goes to sleep automatically and starts up automatically after a power failure.
  3. Give it a fixed name: System Settings → General → Sharing → Local hostname, e.g. mac-mini-buero. The other Macs find the server under this name (mac-mini-buero.local) – even if the router hands out a new IP address.
  4. Protect the Mac physically. Anyone sitting at this Mac while it’s signed in can manage every account through the server app. Keep it somewhere lockable and lock the screen.

3. Installation and initial setup

Two fields, one button – and the server is running. Then you add your own Mac and become the first admin.

Setting up the server

  1. Copy Sayfely Server.app into the Applications folder of the server Mac and open it.
  2. If the old “Sayfe Server” is still installed on the Mac, you’ll see a notice first. For that, read Switching from the old “Sayfe”.
  3. You’ll see Set up Sayfely Server. Under Organization, enter the Company name, e.g. “Muster GmbH”. It later appears in invitations, on the download page and in the app.
  4. Choose the Server address. The default is the Mac’s name on the network (e.g. mac-mini-buero.local). Leave this name as it is – it keeps working even if the IP address changes. Only pick an IP address if the name doesn’t resolve on your network.
  5. Click Set up. The app works through five steps and ticks them off one by one: Create folders and key, Set up database, Issue certificate, Start conference server, Start Sayfely server. If a step fails, it shows a red cross and the reason in a message. Fix the cause (usually a port that’s already in use) and click Try again.
  6. At the end you’ll see The server is running.
Sayfely Server: initial setup with company name, server address and the Set up button
Initial setup: enter the company name and server address, then click Set up.
If you’re moving an existing server to a new Mac, click Restore from Backup… instead. The new Mac then takes over the key, people and data (see Moving to a new Mac).

Your own account – you become the first admin

The server is running, but there’s no account yet. The first account on a server always manages it – and that will be you. No e-mail, no link:

  1. Get Sayfely onto your work Mac. For this, the setup page shows Get Sayfely onto a Mac: a QR code for the download page, the Send download link via AirDrop button and – if you want to work on the server Mac itself – Install and open Sayfely on this Mac. More on this under Getting Sayfely onto the Macs.
  2. Open Sayfely on your Mac. Sayfely finds the server on the network by itself. Choose Join, enter your name, e-mail and a password (at least 10 characters) and click Send request.
  3. In the server app, your request appears under Join requests with three words. Your Mac shows the same three words. Compare them. If all three match, click Approve. For the first account, the Admin switch is always on.
  4. The server app reports “… is in and manages the server.” Click Go to overview.
Your Mac doesn’t find the server?

Both Macs must be on the same network (not the guest Wi-Fi). If it still doesn’t work, expand Your Mac doesn't find the server? on the setup page and click Create invitation …. Invite yourself, with May administer the server (admin) turned on (see Invitation with link and code). If you’re sitting at the server Mac, choose Open in Sayfely Here in the result – link and code are then already filled in.

With Later – to the overview you can also put this step off.

4. The server app at a glance

One window for everything: status, people, recordings, security, diagnostics and settings.

Sidebar

ItemContents
OverviewStatus of the services, traffic, addresses, people, security, operations and backup at a glance
PeopleAccounts, invitations, join requests. The number on the item shows open join requests.
RecordingsDeletion periods and list of recordings
SecuritySecurity events
DiagnosticsError reports from the apps, diagnostic package, load test, connection tests. The number on the item shows reports from the last 24 hours.
SettingsAppearance, organization, network, access from the internet, new people, certificate, backup, version, maintenance

At the bottom of the sidebar you’ll find your company name with the overall status: Running (green), Starting … (orange), Stopped (gray) or Error (red).

The Help menu opens the Admin manual (this manual) and the User manual. Both are bundled with the app and need no internet connection.

The “Overview” view

Sayfely Server: overview with status, services, traffic and addresses
The overview: status at the top, below it traffic, sign-in for colleagues, people, security and operations.

Status panel at the top

The large card shows Sayfely Server is running, Sayfely Server is starting …, Sayfely Server is stopped or A service has a problem. Below it are the three services Database, Conferences and Sayfely Server, each with a colored dot. Clicking a service opens Show log.

The buttons are on the right: Restart and Stop while the server is running; Start when it’s stopped or there’s an error.

Stop ends chat, events and conferences for everyone. Only do this outside working hours or after giving notice.

Join requests

When a Mac is waiting for approval, an orange Join requests box appears right below the status panel. The Dock icon also bounces briefly. See Joining with three check words.

Traffic

Requests, data volume and connected devices over the last 24 hours or 7 days. Details under Traffic.

How colleagues join

This card contains the QR code and the buttons for the download page, the Copy sign-in link button (see Sign-in link) and, expandable, For IT: address and fingerprint with all server addresses and the Fingerprint of the server key. The fingerprint is only needed by someone who enters the server manually in Sayfely under “Advanced”.

People and security

The People card counts Internal and Invited and has the buttons Invite and Show all. The Security card shows No failed attempts today or the number of attempts, with the Show events button.

Operations

Key figures without any content: Active devices (7 d), Devices total, Messages, Events, Polls, Tasks. Below that, Storage (Sayfely, Other, Free; split into encrypted files and database), the Failed attempts, 7 days chart and the Backup row with the time of the last backup. If there’s no backup or it’s older than two days, the icon turns orange. Depending on the state, you’ll see Back Up Now or Set Up Backup.

5. What runs where

For anyone who wants to know exactly what happens on the server Mac.

Services

The server app starts three background services via launchd (as “LaunchAgents” of the signed-in user). They keep running without an open window, are restarted automatically after a crash and start on their own after login.

Service in the appProgramlaunchd labelLog
DatabasePostgreSQL, bound to 127.0.0.1 onlycom.softrobots.sayfely.server.databaselogs/database.log
ConferencesLiveKit (control local only; video and audio via 7881/7882)com.softrobots.sayfely.server.conferencelogs/conference.log
Sayfely ServerSayfely Server with TLS 1.3, download page and TLS access to the conferencecom.softrobots.sayfely.server.serverlogs/server.log
(nightly backup)Server app without a window, at 2:00com.softrobots.sayfely.server.backuplogs/backup.log

The programs themselves live inside the app (Sayfely Server.app/Contents/Helpers and Contents/Resources/pgsql). The app doesn’t manage accounts over the network but through the command line of the bundled server – with the same rules as the server itself.

Every time you open it, the app checks: are the services running? Does the certificate still match the Mac’s current addresses? Has the app been updated? If needed, it starts the services, reissues the certificate or restarts the server with the new settings. You’ll see this as a short message in the status panel, e.g. Starting server ….

Data folder

All data lives in the user folder under ~/Library/Application Support/Sayfely Server/. You can open it with Settings → Maintenance → Show data folder.

File / folderContents
config.jsonSettings of this installation, including the database password and conference key (readable by the owner only)
postgres/Database (accounts, events without plain text, ciphertexts, events log, key figures)
certs/Server key server-key.pem and certificate server-cert.pem
files/Encrypted files, attachments and recordings
logs/Technical logs of the services (without content)
livekit.yamlConference server settings
backup.jsonBackup settings (the backup password is stored in this Mac’s keychain)
Don’t delete or move anything in this folder by hand. Especially not certs/server-key.pem: if the key is gone, every Sayfely app blocks the connection until it gets a new sign-in link.

Certificate, fingerprint and TLS

  • During setup, the app creates a server key (P-256). It stays the same forever.
  • The fingerprint is a SHA-256 value over the public part of this key. The app shows it in groups of four under Overview → For IT: address and fingerprint and under Settings → Certificate.
  • Around the key, the app issues a self-signed certificate (valid for 825 days) – for the Mac’s name, localhost and all current IP addresses. If an IP address changes, the app quietly reissues it the next time it starts. You can also do this by hand with Renew certificate. The fingerprint stays the same – nobody has to confirm anything again.
  • All connections to the server use TLS 1.3; the server doesn’t accept older versions. The conference control on port 7883 gets the same protection with the same key.
  • The Sayfely apps check the key, not a certificate authority. That’s why you don’t need to buy a certificate.
How does a new app know the right fingerprint? Either from an invitation or sign-in link (the fingerprint is in the link) or by comparing the three check words when joining. Nobody has to type in long fingerprints.

Visible in the company network

The server announces itself on the local network (Bonjour, service _sayfely._tcp, just like a printer). That’s how a new Sayfely app finds it without entering an address. The announcement contains no secret and isn’t trusted blindly: only the three check words or the fingerprint in the link prove that it really is your server.

6. Bringing people on board

There are three ways. In the office, joining is the easiest. For colleagues outside the office there’s the invitation with link and code. Anyone who already has an account and is setting up a new Mac gets a sign-in link.

SituationWayWho can start it
New colleague in the officeJoin + three check wordsThe person themselves; only admins can approve
New colleague working from home or at a branchInvitation with link and codeAdmins (server app or Sayfely app)
Existing account, new or reinstalled MacSign-in linkAdmins

Getting Sayfely onto the Macs

The server itself offers the matching, Apple-notarized Sayfely app for download – on its own small page at http://<server-name>:8080/ (you can see the exact port under Settings → Network → Ports, entry Download).

Download page in the browser with the Download Sayfely for Mac button and three steps
Your server’s download page, as your colleagues see it in the browser.

The page shows your company name, the Download Sayfely for Mac button, the version and three steps: Download and install, Open Sayfely and choose “Join”, Compare three words. On an iPhone, it explains how to send the page to the Mac via AirDrop.

The server app (in the overview and during initial setup) gives you three helpers for this:

  • QR code: scan it with an iPhone and send the page to the Mac via AirDrop.
  • Send download link via AirDrop: the receiving Mac opens the download page directly.
  • Install and open Sayfely on this Mac: for you at the server Mac. Sayfely is copied to Applications and opened.
The download page deliberately uses plain HTTP. That’s safe here: it only delivers the page, the icon and the app – no data, no interface. macOS checks the app’s signature and Apple notarization when it’s opened. And trust in your server isn’t established on this page, but through the check words or the fingerprint in the Sayfely link.

Joining with three check words

This is how colleagues in the office join – no e-mail, no link, no code.

What the person does

  1. Install and open Sayfely. Sayfely looks for the server on the network and shows Found in your network.
  2. Choose Join, enter first and last name, e-mail and a password (at least 10 characters), then Send request. The e-mail address later becomes the user name.
  3. Sayfely shows Waiting for approval and three words.

What you do

  1. The request appears in the server app (in the Overview and at the top of People, with a number in the sidebar) and for all admins in the Sayfely app (a Join request card in the sidebar, plus a notification). For each request you see the name, e-mail, the Mac’s name, the time, the network address and three words.
  2. Ask the person which three words their Mac shows – at their desk or on the phone. Don’t read your words out to them; have them tell you theirs.
  3. If all three match: set Admin and Department if needed and click Approve. If even one word differs: Decline and confirm.
  4. After approval, Sayfely signs the person in by itself. Finally, their app asks once more whether you told them exactly these three words (Yes, all three match / No, different words).
Sayfely Server: join request with three check words, Admin switch, Department field, Decline and Approve buttons
Join request in the server app: only approve if the three words match exactly.

Admins can answer requests in their own Sayfely app just the same – handy when you’re not at the server Mac. Clicking the Join request card in the sidebar opens Join requests with the same words, Admin, Department, Decline and Approve.

Sayfely app: join requests with three check words for admins
The same approval in an admin’s Sayfely app.

Why the comparison matters so much. The three words are calculated independently on both sides – from the fingerprint of the server key, the keys of the requesting Mac and one random number each from the server and the Mac. If they match, two things are proven:

  • The person’s Mac really is talking to your server and not to a device that has slipped in between on the network. The words replace checking the long fingerprint.
  • The request you’re approving really comes from this Mac and not from someone jumping the queue with the same e-mail address.

The Mac commits to its random number before it knows the server’s. A device in between therefore has exactly one attempt and would have to guess the words – the odds are about 1 in 134 million (27 bits). If you approve without comparing the words, you throw this protection away.

The words are always German, even if an app is set to English – so both sides see the same thing.

Rules for join requests

  • Only admins approve. The very first account on a server always becomes an admin.
  • Origin: by default, the server only accepts requests from the company network (private address ranges). You can change this under Settings → New people → Join requests: Only from the company network, Also from the internet or Off – invitations only.
  • Validity: a request stays valid for 7 days. The person can close Sayfely in the meantime; after approval, the app signs in by itself. With Withdraw request they can end the request themselves.
  • Limits: at most 30 open requests in total and 5 per network address. If the same Mac asks again, the new request replaces the old one.
  • Password: until approval, the server only stores a bcrypt hash of the password. After approval, rejection or expiry, this is removed too.
  • Log: request, approval and rejection are security events.
  • If an account already exists for the same e-mail address, the request is rejected. An open invitation for the same address becomes invalid on approval.

Invitation with link and code

For colleagues who aren’t in the office (or whose Mac can’t find the server). The link arrives by e-mail, the 6-digit code by a second route. Anyone who only intercepts the e-mail can’t do anything with it.

  1. In the server app, go to People → Invite (or use the People card in the overview).
  2. In the Invite person window, fill in: Name, E-mail, optionally Department (existing departments are in the menu next to it), Valid for (1 day, 3 days or 7 days) and, if needed, May administer the server (admin).
  3. Create Invitation.
  4. 1. Send the e-mail: Write E-mail opens your mail app with a ready-made text: the app’s download link, the invitation link and how long it’s valid. Alternatively, Copy Link.
  5. 2. Tell them the code in person or on the phone: the 6-digit code is shown in large type in the window. Don’t put it in the same e-mail. It’s only shown now.
  6. Done.
Sayfely Server: Invite person with name, e-mail, department, validity and admin switch
Invite person in the server app.

The invited person installs Sayfely, clicks the link in the e-mail and lands on “Hello …!”. Sayfely has already checked the server address and key from the link (Server verified and securely connected). They enter the code, choose a password and click Get Started.

If the person is sitting at this very Mac (e.g. you yourself at the server Mac), choose Open in Sayfely Here in the result: Sayfely opens with link and code already filled in.

Open invitations

Under People they’re at the top in the Invited – not yet accepted section, with a status: Waiting for acceptance (with expiry date), Locked (5 wrong codes) or Expired. Right-click for:

  • Create new link and code – the old invitation becomes invalid, the new one is valid for 7 days. Useful if the code was forgotten or the invitation has expired or been locked.
  • Revoke invitation – the invitation becomes invalid immediately.
Admins can also invite colleagues in their Sayfely app: in Chat via Invite at the bottom of the list. Only admins see this button; the server only accepts invitations from admins.
The link contains a random 256-bit secret, the server address and the fingerprint. The server only stores a hash of it. After 5 wrong codes, the invitation is locked. Every wrong code is a security event and is reported live to the person who sent the invitation.
External guests (people from other companies) aren’t available in version 1 yet. With version 2.0 they’ll join conferences right in the browser via an invitation link – with audio and video, no installation.

For everyone who already has an account: a new Mac, a reinstalled Mac, a reset app – or when an app blocks because the server key has changed. The link contains the server address, fingerprint and company name, but no secret. The person still has to sign in with their password.

  • People → right-click the person → Send Sign-In Link by E-Mail…: opens your mail app with a ready-made text (app download, link, “Sign in with your password”). Or Copy Sign-In Link.
  • In the Overview there’s Copy sign-in link – a general link without a user name.

When a person signs in on a new Mac, the security event New device is created (with a warning), which their other devices also see live. A session lasts 30 days.

7. Managing people

Rename accounts, assign departments, reset passwords, lock, delete and choose admins.

The “People” list

Sayfely Server: people with a join request, an open invitation and the departments
People: join requests and open invitations at the top, then the departments.

The list is organized like this:

  1. Join requests (only if there are any open)
  2. Invited – not yet accepted
  3. Everyone by department, alphabetically; No Department last

Each row shows the name, department, the Admin and Locked tags, the e-mail, the number of devices and when the person was last active (or Never active). At the top right, Search people filters by name, e-mail or department. The list refreshes every 10 seconds.

Actions per person (right-click)

Menu itemWhat happens
Send Sign-In Link by E-Mail…
Copy Sign-In Link
See Sign-in link.
Rename …Changes the display name (Change display name → Save). This is how the person appears to everyone else. The e-mail address stays as the user name.
Department …See Departments.
Reset passwordThe server generates a new random password and shows it to you once (Copy, Done). All of the person’s devices are signed out. Pass the password on in person or by phone, not by e-mail.
Make admin / Remove admin rightsSee Roles.
Lock / UnlockLocking ends all sessions immediately (open connections are cut within about 20 seconds) and prevents new sign-ins. Data is kept. Good for when someone leaves, a Mac is lost or something seems suspicious.
Delete …After confirming with Delete permanently: the account, devices, conversations and the person’s own events are removed from the server. This can’t be undone. The last admin can’t be deleted.
Someone is leaving the company? Lock first, then Delete … later at your leisure, once it’s clear nothing is needed anymore – and remember the backups, which still contain the account for up to 14 backups.

Departments

Departments keep the lists in Sayfely tidy: in Chat, when inviting people to events and for instant conferences, people are sorted by department. Each department automatically gets a color that’s the same in the server app and in all apps.

  • One person: right-click → Department …, enter a name or pick one under Existing, Save. No Department removes the assignment.
  • Several people: select them with ⌘-click, then right-click → Department for … people ….
  • Rename or move a whole department: the pencil icon next to the department heading.
  • You can also set the department right when approving or inviting someone.

Roles and admins

RoleCan
AdminEverything a person without admin rights can do, plus: approve or decline join requests in the Sayfely app, invite colleagues, delete any recording.
ColleagueChat with all colleagues, events, conferences, recordings of the events they took part in.
  • The first account on a server always becomes an admin.
  • You become an admin when being approved (Admin switch), when being invited (May administer the server (admin)) or later via Make admin.
  • There must always be at least one admin: you can’t remove the rights of the last one, and they can’t be deleted.
Appoint at least two admins so that approvals are still possible during holidays or sick leave.
The server app itself doesn’t ask for an admin account: whoever sits at the signed-in server Mac can manage everything. So protect this Mac with a good user password, automatic screen lock and a secure location.

8. Updates

You only update the server app. The Sayfely apps in the office then fetch their update from your server by themselves.

Updating the server app

  1. Get the new Sayfely Server.app (or its .zip file).
  2. In the server app, open Settings → Version section. It shows the installed version of Sayfely Server and the bundled Sayfely app for colleagues.
  3. Drag the new app or the .zip file onto this section – or click Install New Version… and select it.
  4. The app checks the update (Checking update…): is it really a Sayfely Server app? Is it newer than the installed version? Is it signed by the same publisher and notarized by Apple? If any check fails, nothing is installed and you’re shown the reason.
  5. Then it stops the services, replaces itself in the same place and restarts (Installing update…). The new version starts the services again.
Data and settings are kept during an update. While updating, the server is unreachable for a few seconds; the apps reconnect by themselves. You can’t install an older version this way.
Make a backup with Back Up Now before an update.

Sayfely apps in the office

Every server app brings along the matching Sayfely app for your colleagues. If it’s newer than the one they have installed, the Update available card appears in their sidebar – “New Sayfely version from your server”. One click downloads the update over the verified, encrypted connection, checks the signature, publisher and Apple notarization, replaces the app and restarts it. An older version is never installed.

New Macs always get the current version via the download page.

9. Recordings and GDPR

Recordings are personal data. Sayfely only records with consent, stores everything end-to-end encrypted and deletes it after the periods you set.

Consent and access

  • Who starts it: the organizer of a conference. A notice stays visible to everyone the whole time.
  • Consent: recording only starts once everyone present has answered. Anyone who declines, doesn’t answer or withdraws later isn’t recorded from that point on – no audio, no video, no transcript. Everyone sees “Not recorded: …”. People who join later are asked. Every decision is listed with its time in the recording’s consent log (encrypted, exportable).
  • Transcript: created on the organizer’s Mac, per voice, with Apple’s on-device speech recognition. Nothing leaves the company network for this.
  • Storage: video, audio, transcript and analysis are stored end-to-end encrypted on your server.
  • Access: only the participants of the event or instant conference. Even you as an admin can’t open a recording in the server app.

Setting deletion periods

Sayfely Server: recordings with deletion periods for video, audio and transcript and the list of recordings
Recordings: the deletion periods at the top, below them all recordings with the status of each part.

Under Recordings → Deletion periods you set three separate periods. This is your deletion policy in the sense of the GDPR (storage limitation): choose periods as short as your purpose allows.

FieldDefault
Video (cameras, screen)90 days
Audio (every voice)1 year
Transcript and analysis2 years

For each, you can choose 7, 30, 90 or 180 days, 1, 2, 3, 5 or 10 years, or Unlimited. Click Apply to save your choice.

  • The periods count from the day of the recording and apply to all recordings, including older ones.
  • The server deletes on its own, every hour. The apps follow: deleted parts disappear there too.
  • Once video, audio and transcript are all deleted, the recording disappears completely.
  • If you shorten a period so that it has already expired for existing recordings, the app asks first (Shorten the deletion periods?) and tells you how many recordings are affected. Apply and delete deletes those parts immediately and permanently.
  • Recordings whose upload never finished are deleted by the server after 7 days.
Backups still contain deleted recordings until that backup is overwritten – which happens after 14 backups. Include this in your deletion policy.

Deleting individual recordings

The Recordings list shows for each recording: the event (the title is encrypted, so it says “Event (content encrypted)” or Instant Conference), date, duration, who recorded it, number of people, size and, for Video, Sound and Transcript, either “until <date>”, unlimited or deleted. Recordings that haven’t finished uploading are marked still uploading. The total storage used is shown at the top right of the section.

  1. Click the recording’s trash icon (Delete the recording for everyone).
  2. Confirm Delete the recording for good? with Delete. Video, audio and transcript are deleted for everyone.

You’ll need this, for example, when someone exercises their right to erasure. In the Sayfely app, the person who made the recording and all admins can also delete a recording.

10. Backup

Without a backup, everything is gone if the server Mac fails – accounts, events, messages, files and above all the server key. Set up backups on day one.

Setting up backups

Sayfely Server: Settings, Backup section with folder, backup password and nightly backup
Settings → Backup.
  1. Open Settings → Backup.
  2. Folder → Choose…: ideally a folder on an external drive or network drive, not on the same disk as the server.
  3. Backup password → Set…: at least 12 characters, enter it twice, Save. Write it down somewhere safe, separate from the server (e.g. in the management’s safe or password manager). Without this password nobody – not even you – can open a backup.
  4. Turn on Back up every night at 2:00. (The switch only becomes active once folder and password are set.)
  5. Click Back Up Now once to check that everything works. The Finder then shows the new backup file.

What gets backed up

  • the database (all accounts, events, encrypted messages, settings, security events),
  • all encrypted files and recordings,
  • the certificate with its key – so the fingerprint stays the same after a restore,
  • the installation’s settings.

How backups work

  • Each backup is a file named Sayfely-Sicherung <date> <time>.sayfelybackup.
  • It’s encrypted with the backup password (AES-256-GCM, key derived via PBKDF2-SHA256 with 600,000 rounds). A truncated, swapped or modified file can’t be opened. A wrong password is recognized as such.
  • The folder keeps the last 14 backups; the app removes older ones.
  • The backup password is stored in the server Mac’s keychain so the nightly backup can run without you.
  • You can see whether the last backup worked under Last backup and in the Backup row of the overview. If a backup fails, the reason is shown there, e.g. “Backup not set up (folder or password missing).”
The nightly backup only runs if the Mac is on, the user is signed in and the backup folder is reachable. An unplugged external drive leads to an error message in the Backup row. Check this row regularly.
Every now and then, also keep a backup off-site (rotating a second drive). Only a copy in another place protects you against fire or theft.

Restoring

  1. Settings → Backup → Restore….
  2. Choose File…, enter the Backup password, Open.
  3. The app shows the backup’s Organization and Created date and warns you: everything that happened since this backup (messages, events, accounts) will be lost.
  4. Restore. The server stops, the database, files and certificate are replaced, the certificate is reissued for this Mac (same key, same fingerprint) and the server starts again.

This installation’s database password and ports stay as they are; the company name comes from the backup.

Moving to a new Mac

  1. On the old Mac, click Back Up Now. Then quit the old server (Stop server and quit) so that two servers with the same key don’t run at the same time.
  2. If possible, give the new Mac the same local hostname as the old one (System Settings → General → Sharing).
  3. On the new Mac, open Sayfely Server, choose the Server address in the initial setup, then Restore from Backup….
  4. Select the backup file and enter the password, Open, then Set up. The new Mac takes over the key, people and data.
  5. Set up backups again on the new Mac (folder, password, nightly) – these settings belong to the Mac and aren’t part of the backup.

If the server address stays the same, all Sayfely apps reconnect without any new confirmation. If it changes, send everyone a sign-in link.

11. Security

The server logs failed attempts and unusual activity, locks automatically after too many failed attempts and reports everything live to the people affected.

Security events

Sayfely Server, Security area: list of security events with type, person, address, device and time
The Security area: every sign-in, every new device and every join request with time, address and device.

Under Security in the sidebar you see the last 200 events: type, person, network address, device and time. The color shows the result: red = rejected or locked, orange = allowed but worth checking, green = allowed. Problems only hides everything green, Refresh reloads (automatically every 15 seconds).

EventMeaningWhat to do?
Wrong passwordSign-in with a wrong password (also for accounts that don’t exist)A few: normal. Many from an unknown address: keep an eye on it.
Account temporarily lockedLockout after 5 failed attempts; also sign-in attempts for an account you lockedTalk to the person; reset the password if needed.
Sign-inSuccessful sign-in on a known device–
New deviceA person signed in on a new Mac.If in doubt, ask; lock the account if necessary.
Device removedA device was removed from an account–
Wrong invitation codeSomeone entered a wrong code for an invitationIf it happens repeatedly, revoke the invitation and create a new one.
Invitation locked5 wrong codes – the invitation can no longer be usedCreate new link and code, and this time pass on the code securely.
Certificate changedA Sayfely app saw a different server key than the one it rememberedTake this seriously, see below.
Join request, approval, rejectionA Mac asked to join without an invitation; an admin approved or declined itDecline unexpected requests.
“Certificate changed” means an app connected to a server that has a different key than your server. This happens after a reinstall without a backup – or when someone tries to slip in between. The app then blocks and shows “Connection Blocked”. If you didn’t set up the server again, check the network before sending out a new sign-in link.

Every event is also reported live to the person affected in their Sayfely app. The logs only contain the type, result, user and source – never passwords or content.

Lockout after failed attempts

  • 5 failed attempts within 15 minutes lock for 15 minutes – separately for the account and for the network address the attempts come from.
  • Every attempt is counted before the password is checked. That way, many simultaneous attempts don’t get any extra chances.
  • During the lockout, the server doesn’t even check the password. Repeated attempts are logged at most once a minute.
  • The same lockout applies to invitation links and join requests queried with wrong secrets.
  • The server only stores passwords as bcrypt hashes.
  • The lockout expires by itself after 15 minutes. The server app has no unlock button for this; Unlock on a person only lifts an account lock you set yourself.

Today’s number of failed attempts is shown on the Security card in the overview, the last 7 days in the Failed attempts, 7 days chart under Operations.

Security Center in the Sayfely app

Everyone sees the security card at the bottom of their app’s sidebar (“Connection Secure” and today’s failed attempts). Clicking it opens the Security Center. It’s also helpful for you as an admin when people have questions:

  • Connection: server, organization, server version, TLS 1.3 encryption, server pinning (Active, key matches or Key changed!), realtime channel and the Pinned fingerprint (SHA-256). You can compare the fingerprint with the one in the server app.
  • The Mac’s system permissions.
  • The person’s security events, filterable by All, Sign-in and Invitations.
  • My Devices – the person can sign out a lost device themselves with Remove.

12. Diagnostics and statistics

When something isn’t working: read error reports from the apps, create a diagnostic package, look at the traffic or test the load – always without content.

Sayfely Server: diagnostics with diagnostic package, load test and reports from the apps
Diagnostics: the diagnostic package at the top, below it the load test and reports from the apps.

Error reports from the apps

If someone has a problem, ask them for an error report. In Sayfely this is under Help → Error report to IT … (also in the app’s settings and on the start screen). The person briefly describes what happened and clicks Send to IT – or Save as file … if there’s no connection.

The report contains a technical log: versions, connection, error messages. No messages, event texts, file names, passwords or keys.

In the server app, the reports appear under Diagnostics → Reports from the apps (with a number in the sidebar for the last 24 hours): person, device, description, app version, macOS version and Mac model. Clicking one opens the log; Copy puts it on the clipboard.

  • Reports are kept for 30 days and then deleted automatically.
  • The server accepts at most 20 reports per person per day; the log is limited to 1 MB.

Diagnostic package

Create diagnostic package puts a ZIP file Sayfely-Diagnose-<date>-<time>.zip on the server Mac’s desktop and shows it in the Finder. It contains:

  • the logs of the three services (the newest 5 MB of each),
  • einstellungen.json – the settings without the database password and conference secret,
  • system.txt – versions, macOS, processor cores, memory, addresses, fingerprint, state of the services,
  • kennzahlen.json, verkehr-tag.json, verkehr-woche.json,
  • sicherheitsereignisse.json – the last 1000 security events,
  • all error reports from the apps.
The package contains no content, but it does contain personal data: names and e-mail addresses (in events and reports), device names and network addresses. Only pass it on to trusted parties, such as your Sayfely support, and preferably not by unencrypted e-mail.

Traffic

The Traffic card in the overview shows either 24 hours (in quarter hours) or 7 days (in hours):

  • People online, Devices connected, Peak, Requests, Data and – if there were any – Server errors.
  • At the top a timeline of requests and live messages, at the bottom the connected devices.

Every minute, the server counts numbers only: requests, errors, data volume, live messages, connections and people online – without addresses and without content. The values are kept for 8 days. Video and audio from conferences go directly between the Macs and LiveKit and aren’t included here.

Connection tests

If someone complains about stuttering conferences or slow files, ask them to run Help → Test connection … in Sayfely (also in the Security Center under Connection). For about 20 seconds, the app measures response time, download and upload to your server – not to some server on the internet. The result appears under Diagnostics → Connection tests with time, person and device, the Path (office or internet), Ping (median / 95 %), Download and Upload. Tests are kept for 90 days.

In the office everything is fast; if it is slow from outside, it is usually the internet line (the office’s upload or mobile data), not the server.

Load test

Want to know whether the server Mac is big enough for your team? The Load test card starts a separate test server on this Mac: its own database, its own files, its own port, not announced on the network, no join requests – plus its own LiveKit for the conference test. Your Sayfely server and your data stay untouched.

  1. Start test server (only possible while the server is running).
  2. The card shows the Address (port 18450), Code and the Conference test row (LiveKit on port 17880 with key and secret). Enter these details into the test program on another Mac, which then simulates many computers.
  3. During the test, watch the Traffic card and the state of the Mac.
  4. Stop and delete test server removes everything again. This happens automatically after two hours, and also when you quit the server app.
The test server needs ports 18450 as well as 17880, 17881 (TCP) and 17882 (UDP). If they’re in use, the app tells you.

Testing from outside (e.g. the test Mac on a mobile network): for the duration of the test, forward these ports to the server Mac in addition to the four forwards for normal operation, and remove them afterwards:

Name (suggestion)ProtocolPort external = internal
Test server (chat, speed test)TCP18450
Test conferences, signallingTCP17880
Test conferences, video and audio (fallback)TCP17881
Test conferences, video and audioUDP17882
It needs a public address under Access from the internet: the test LiveKit gives it to the test Macs; without it, a Mac outside connects but gets neither video nor audio. It is unencrypted and has no relay. A conference test from outside therefore measures the direct path (like 7882/UDP in normal operation), not the relay path (3478/UDP). On a mobile network, expect a few hundred MB of data.

13. Settings

Sayfely Server: settings with Appearance, Organization, Network, New people, Certificate, Backup, Version and Maintenance
The server app’s settings.
SectionSettingExplanation
AppearanceDark · Light · Like the systemOnly the look of the server app.
OrganizationCompany nameAppears in invitations and in the app. Press ↩ to apply; the server restarts briefly for this.
NetworkAddress for invitationsThe name or IP the apps use to reach the server; it’s included in all new invitation and sign-in links. The name (….local) stays the same even if the router hands out a new IP. Changing it reissues the certificate (the fingerprint stays) and restarts the server.
PortsDisplay only: Sayfely, conference (TLS, TCP, UDP), download.
Access from the internetPublic addressLeave empty if Sayfely is only used in the office. With an address (e.g. office.company.com or a fixed IP), the app lists the four port forwards for the router; the Macs use the address automatically as soon as they can’t reach the office. See Reachability and network.
New peopleJoin requestsOnly from the company network (default), Also from the internet or Off – invitations only. See the note below.
CertificateFingerprint, Renew certificateRenewing adds new addresses. Key and fingerprint stay the same.
BackupFolder, password, nightly, back up now, restoreSee Backup.
VersionInstall New Version…See Updating the server app.
MaintenanceShow data folder, Log, Remove services …Open the data folder in the Finder, open a service’s log, unregister the services (see Quitting).
The server recognizes the “company network” by the sender’s address (private address ranges such as 192.168.x.x, 10.x.x.x, 172.16–31.x.x). If there’s a proxy or forwarding in front of it that passes on all connections under its own internal address, every request looks as if it came from the office. Only choose Also from the internet if you know why – every request still needs your approval after comparing the words, but strangers can then submit requests.

14. Quitting, restarting, services

Closing the window is harmless. When you quit the app, it asks what should happen to the server.

Closing the window

If you only close the window, the server keeps running in the background. Just open the app again when you want to manage something.

Quitting the app

When you quit (⌘Q), the app asks Quit Sayfely Server?:

ButtonResult
Stop server and quitAll services are stopped. Chat, events and conferences stop working for everyone until you open the app again – it then starts the services by itself.
Keep runningOnly the app window closes; the server keeps running for the office. After the Mac restarts, it starts by itself once the user signs in.
CancelNothing happens.

A running load test ends in both cases.

Restarting the Mac

The services are registered with macOS and start by themselves after the user signs in. When you then open the server app, it checks everything and quietly reissues the certificate if the IP address is new.

Removing the services

Settings → Maintenance → Remove services … → Remove: server, database and conferences are stopped and no longer start automatically. All data is kept. Start in the overview sets everything up again. You’ll need this, for example, before taking the Mac out of service.

15. Switching from the old “Sayfe”

“Sayfe” was the product’s former name. Sayfely starts fresh – no data is carried over.

If the server app still finds the old “Sayfe Server” on the Mac (old services, old data folder or old app), Old Sayfe installation found appears at startup. The old server uses the same ports and would block Sayfely.

  • Delete old installation: the old server is stopped and deleted along with all its data – accounts, messages, events, files, recordings and certificates (folder ~/Library/Application Support/Sayfe Server). The old app goes to the Trash. You then set up Sayfely from scratch.
  • Quit: the app quits and nothing is changed.
Deleting can’t be undone. Plan the switch: announce it, have important files stored somewhere else beforehand, and tell everyone that afterwards they need to install the new Sayfely app and join again.

16. Reachability and network

Sayfely is built for the company network. By default, nothing is reachable from the internet – you deliberately turn on outside access in the server app.

  • In the office, every Sayfely app finds the server automatically (Bonjour). Requirement: workstations and server are on the same network. Guest Wi-Fi networks or separate network segments (VLANs) often block the announcement. In that case, an invitation or sign-in link helps, or entering the address in Sayfely under Enter Server Address….
  • Fixed address: use the ….local name. If the IP changes, the name stays. Alternatively, you can give the server Mac a fixed IP address in the router.
  • Firewall: allow incoming connections for SayfelyServer and livekit-server.
  • Router: for use in the office you don’t need to configure anything on the router. Only forward the ports the server app lists under Access from the internet – and only if you really want outside access.

Access from the internet (home office, on the road)

Two ways: a VPN into the company network (the Mac then behaves as if it were in the office; Sayfely doesn’t notice anything) – or the built-in access from the internet:

  1. Make sure your office can be reached from outside under an address – a hostname such as office.company.com (e.g. via dynamic DNS) or a fixed IP address.
  2. Enter it in the server app under Settings → Access from the internet → Public address and confirm with ↩. The server restarts briefly; the certificate and fingerprint stay the same.
  3. The app now shows Forward in the router to this Mac (…) with four forwards: Sayfely (chat, events, sign-in) 8443/TCP, Conference connection 7883/TCP, Conference video and audio (via relay) 3478/UDP and Conference video and audio direct (faster, recommended) 7882/UDP. Set up exactly these in the router (FRITZ!Box: Internet → Permit Access → Port Sharing → Add Device for Sharing → choose the Mac → one sharing rule per port).
FRITZ!Box: Internet → Port Sharing with the forwards for the Sayfely server Mac
Example FRITZ!Box: the four forwards for normal operation (3478, 8443, 7883, 7882) and – only during a load test from outside – 18450, 17880, 17881, 17882.
  • The Sayfely apps learn the public address from the server and then know both addresses. They use the office as long as they can reach it and switch to the public address by themselves – and back. Invitations point there.
  • Join requests stay limited to the office, even with a public address (unless you deliberately set Join requests to Also from the internet). Bring people outside the office on board with an invitation.
  • Under Diagnostics, next to the response time, you can see how many connections currently come from the office and how many over the internet; the apps’ connection tests name the path too.
  • Leaving the field empty means nothing is reachable from outside.
With a public address, anyone on the internet can contact the server. Security doesn’t suffer – pinning, TLS 1.3, lockouts after failed attempts and end-to-end encryption apply from outside too – but keep an eye on the security events. If the office’s internet line is slow (especially the upload), conferences from outside are the first to notice.

17. Linux and Docker

For companies with their own Linux server, Sayfely Server is also available as a Docker package. This is the route for specialists – no server app, no mouse clicks.

The Server/ package contains a Dockerfile and a docker-compose.yml with three containers: db (PostgreSQL 17), sayfely (the server, port 8443) and livekit (conferences, ports 7880, 7881 and 7882/UDP).

  1. Copy .env.example to .env and set real values: SAYFELY_ORG_NAME, POSTGRES_PASSWORD, LIVEKIT_API_KEY and LIVEKIT_API_SECRET (at least 32 characters). Remove the development entry SAYFELY_REGISTRATION_CODE.
  2. Put the certificate and key as server-cert.pem and server-key.pem into Server/certs (or generate them with scripts/make-dev-cert.sh).
  3. Start: docker compose up -d
  4. Show the fingerprint: docker compose exec sayfely /app/SayfelyServer fingerprint
  5. First admin invitation: docker compose exec sayfely /app/SayfelyServer invite --admin --name "Vorname Nachname" --email name@firma.de – link and code appear in the output.

Managing from the command line

All commands use docker compose exec sayfely /app/SayfelyServer …:

CommandEffect
invite --name … --email … [--admin] [--days 1|3|7] [--department …]Invite a colleague (link + code)
invitations list · invitations revoke --id …Show and revoke open invitations
join list · join approve --id … [--admin] · join reject --id …Join requests with check words
users listAll accounts
users promote|demote --user …Grant or remove admin rights
users disable|enable --user …Lock (ends all sessions) or unlock
users reset-password --user …Generate a new password
users rename --user … --name …Change the display name
users delete --user …Delete an account with all its data (never the last admin)
events · stats · trafficSecurity events, key figures, traffic
recordings list · recordings policy --video … --audio … --transcript … · recordings delete --id …Recordings and deletion periods (days or never)
diagnostics list|showError reports from the apps

Differences from the Mac version

  • No server app: everything runs through the command line above or through the admins’ Sayfely apps (approvals, invitations).
  • No Bonjour announcement: new Macs don’t find the server by themselves. Use invitation or sign-in links, or have people enter the address in Sayfely.
  • No built-in backup: back up the Docker volumes db and files and the certs folder yourself – above all the key.
  • The download page, app updates and TLS access to the conference control aren’t set up in the bundled Compose file. The server supports the variables SAYFELY_DOWNLOAD_PORT, SAYFELY_CLIENT_ARCHIVE and SAYFELY_LIVEKIT_TLS_PORT for this.
On a Mac there’s also an installation script for specialists (Server/deploy/macos/install.sh) that sets up the server with Homebrew packages. For offices, the server app is the recommended route.

18. Licenses

Only the server is licensed. The Sayfely apps for colleagues are free – there is no license per person or device.

  • Free for up to 3 people, with no expiry date and all features.
  • From the 4th person: one price per server and year for the whole company, no matter how many people. One license covers one server – that is, one organization.
  • Only your company’s accounts are counted; devices never are.
  • When the license expires, everything keeps running – all people, all data. There are just no more updates until it is renewed. Nobody is locked out.
  • The license is only checked when it is activated and when an update is fetched. Otherwise the server doesn’t contact anyone.
As of today: the current version of the server app doesn’t check licenses yet and doesn’t limit the number of people – there is no field for a license key yet. A license key you enter in the server app is planned; the price hasn’t been set yet. Questions: sayfely.com/preise.

19. Troubleshooting and FAQ

A colleague sees “Sayfely is looking for your company’s server on the network …”, but nothing appears.

Is their Mac on the same network as the server (not the guest Wi-Fi, not connected from outside via VPN)? Is the server running (overview green)? Does the server Mac’s firewall allow incoming connections? If all of that is fine and it still doesn’t work, send an invitation with link and code.

“A service has a problem” in the overview.

Click the service marked in red and choose Show log. Then try Start or Restart. If that doesn’t help, create a diagnostic package.

“Port … is already being used by another program.”

Another program is using a Sayfely port (see Ports) – often a second Sayfely Server, an old “Sayfe Server” or a development server. Quit the other program and try again.

The download page won’t open.

Check the download port under Settings → Network → Ports – it doesn’t have to be 8080. The address starts with http://, not https://. Is the server running? Is the port open in the firewall?

Sayfely shows “Connection Blocked” for someone.

The app sees a different server key from the one it remembered. Did you set up the server again (without a backup)? Then send the person a sign-in link; they paste it into the lock screen and Sayfely carries on without signing in again. If you didn’t change anything, take the warning seriously and check the network (see “Certificate changed”).

The server Mac’s IP address has changed.

With the ….local name, nobody notices. The server app issues the certificate for the new address the next time it’s opened; you can also do this by hand with Renew certificate. The fingerprint stays the same.

Someone has forgotten their password.

People → right-click → Reset password. Pass the new password on in person or by phone. All of the person’s devices are signed out.

“Too many failed attempts” – someone can’t get in anymore.

After 5 failed attempts, the account and the sender’s address are locked for 15 minutes. Wait, then sign in with the correct password – or reset the password. Lots of lockouts for no obvious reason? Check under Security where the attempts are coming from.

The invitation shows “Locked (5 wrong codes)” or “Expired”.

Right-click the invitation → Create new link and code. This makes the old invitation invalid.

The “Backup” row is orange.

Either there hasn’t been a backup yet, the last one is older than two days, or the last attempt failed – the reason is shown next to it. Common causes: external drive not connected or backup not set up. Check Settings → Backup and click Back Up Now.

“Less than 10 % free – make room soon.”

The server Mac is running low on storage. Check the deletion periods for recordings (video takes up the most), delete recordings you no longer need or free up space on the Mac in some other way.

Conferences don’t connect or have no video and audio.

Is the Conferences service running? Does the firewall allow incoming connections for livekit-server? Are ports 7883/TCP, 7881/TCP and 7882/UDP open on the network? If chat and calendar work, it’s usually one of these.

I closed the window – is the server still running?

Yes. Only Stop server and quit when quitting the app, or Stop in the overview, halts it.

Can I read messages or recordings as an admin?

No. Content is end-to-end encrypted. The server – and therefore the server app – only knows times, people, sizes and responses.

An update of the server app is rejected.

The app only installs newer versions signed by the same publisher and notarized by Apple. Check that you have the right file and that it really is newer than the installed version under Settings → Version.

I can’t solve the problem myself.

Ask the people affected for an error report to IT, create a diagnostic package and pass it on to your support.

20. Launch checklist

Before you start using Sayfely day to day, tick off these points.

  1. Server Mac with macOS 26 or later, wired, set up securely, with a fixed local hostname.
  2. Automatic login on, sleep off, restart after power failure on.
  3. Sayfely Server set up, overview shows Sayfely Server is running.
  4. Firewall prompts for SayfelyServer and livekit-server allowed.
  5. Your own account created via Join with word comparison – you’re an admin.
  6. At least one second admin appointed.
  7. Backup set up: folder on an external drive, backup password noted down safely and separately, Back up every night at 2:00 on, one backup with Back Up Now successful.
  8. Unlocked a backup once as a test with Open in the Restore… dialog (then Cancel) to check the password.
  9. Deletion periods for video, audio and transcript agreed with management or data protection and set.
  10. The Join requests setting chosen deliberately (default: Only from the company network).
  11. Access from the internet deliberately left empty – or set up with exactly the four port forwards the app lists.
  12. Download page opened from another Mac, Sayfely installed, a test person brought on board.
  13. Test conference held with two Macs, including video, audio and screen sharing.
  14. Colleagues informed: download page (QR code), “Join”, compare three words, error reports via Help → Error report to IT.
  15. Rule for invitations communicated: link by e-mail, code by phone or text message.
  16. This plan agreed: who checks backup, storage and security events every week?

21. Glossary

TermMeaning
AdminPerson with management rights: approves join requests and invites colleagues.
Sign-in linksayfely://connect?… – a link with the server address and fingerprint, without a secret. For new Macs and after a key change.
JoinA self-submitted request from the company network; an admin approves it after comparing the three check words.
BonjourApple’s technology that lets devices announce themselves on the local network. Sayfely uses it so new Macs can find the server.
bcryptA method for storing passwords only as an irreversible hash.
Diagnostic packageZIP with logs, versions, settings without secrets, key figures and error reports – without content.
InvitationOne-time link (256-bit secret, by e-mail) plus a 6-digit code (by a second route). Expiry is selectable; locked after 5 wrong codes.
End-to-end encryptionOnly the devices involved can read content; the server only stores and distributes ciphertext.
FingerprintSHA-256 value over the public server key. Stays the same as long as the key stays the same.
launchd / LaunchAgentmacOS service management. The Sayfely services run as LaunchAgents of the signed-in user.
LiveKitSelf-hosted conference server for video, audio and screen sharing; included in the server app.
Deletion periodHow long the video, audio or transcript of a recording is kept before the server deletes it.
Pinning (TOFU)“Trust on First Use”: the app remembers the server key on first contact and blocks if it changes.
PostgreSQLThe server’s database; included in the server app, reachable only on the server Mac itself.
Check wordsThree words that the server and the requesting Mac calculate independently. Matching words prove a direct, untampered connection.
Security eventLog entry for sign-ins, failed attempts, new devices, invitations, join requests and certificate changes.
Backup passwordPassword (at least 12 characters) used to encrypt all backups. Without it, no backup can be opened.
TLS 1.3The current version of transport encryption. The server only accepts TLS 1.3.