Security

Your data, kept safe — and provably so.

Sempa runs entirely on a server you own, and there's no Sempa cloud to trust. The whole codebase is open for anyone to read, the project follows a recognised open-source security standard, and every change is scanned and reviewed before it ships. Here's what that means for you.

For everyone

Six reasons your day is in safe hands.

No jargon required — just the plain reasons Sempa is built to be trustworthy.

It lives on your server

Sempa is self-hosted — your tasks, notes, email and calendar stay on infrastructure you control. There's no central service collecting your data, because there's no central service at all.

Open to inspection

Every line of Sempa is public under the AGPL-3.0 licence. You don't have to take our word that it's safe — you, or anyone you trust, can read exactly what it does.

Independently assessed

Sempa has earned the OpenSSF Best Practices badge — a recognised checklist for how safely an open-source project is run, from code review to vulnerability handling.

Private network access

Pair Sempa with Tailscale and only your own devices can reach your server — no ports left open to the public internet, with real HTTPS handled for you.

Encrypted, automatic backups

Schedule daily backups — kept local or pushed off-server — and optionally protect them with a passphrase, so a bad upgrade or a failed disk can never cost you your data.

Nothing is watching you

No ads, no trackers, no analytics, no telemetry. Even the optional AI assist runs on a model on your own server — nothing ever leaves it.

The certification

OpenSSF Best Practices — passing.

OpenSSF Best Practices passing Passing level · 100%

A trusted, independent standard.

The OpenSSF Best Practices programme, run by the Linux Foundation's Open Source Security Foundation, is a public checklist of the things well-run open-source projects do to stay secure. Earning the badge means an independent set of criteria has been met and documented — and the assessment is open for anyone to read.

  • Clear reporting of and response to vulnerabilities
  • Reviewed changes & protected releases
  • Automated tests on every change
  • Encrypted delivery & secure development
For the curious

Checked on every change.

You don't need any of this to use Sempa safely — but if you like to look under the hood, here's what runs automatically every time code changes or a release is cut.

Code scanning

CodeQL inspects the backend and frontend for security flaws on every push and pull request.

Dependency checks

govulncheck and Trivy watch for known vulnerabilities in everything Sempa builds on, and fail the build on serious ones.

Secret scanning

gitleaks and push protection make sure passwords and keys never slip into the codebase.

Up-to-date dependencies

Dependabot opens weekly update requests, so the building blocks stay current and patched.

Tested & reviewed

The full test suite runs on every change, and the main branch is protected — code lands only through reviewed pull requests.

Fuzzed & race-tested

The parsers that read untrusted input — calendar feeds, imported email, AI output — are continuously fuzzed, and tests run under Go's race detector.

Pinned build pipeline

Every step that builds and ships Sempa is pinned to an exact version, so the release pipeline can't be quietly swapped from under it.

Signed releases

Desktop and Android downloads are signed with cosign (Sigstore) — you can verify any file before you install it.

Hardened container

The server image runs as a non-root user and is built on digest-pinned bases with a health check — published to GHCR for each release.

Findings, in the open

Every scan result and any accepted trade-off is documented publicly in the repository's Security tab and SECURITY.md.

Found something?

Reporting a vulnerability.

Report it privately, please.

If you believe you've found a security issue in Sempa, please report it through GitHub's private vulnerability reporting. That lets the maintainers assess and fix it before any details are made public — protecting everyone who self-hosts Sempa.

Please don't open a public issue for a security vulnerability — a public report exposes users before a fix is available.

Private reports route straight to the maintainer via a GitHub Security Advisory. Non-security bugs and feature requests belong in regular issues.

Want to dig deeper?

Everything is in the open. Read the policy, browse the scan results, or read the code itself.