How to use Sempa and how to host it. The same on web, the Windows desktop app and Android, except where noted.
After signing in, a short setup wizard helps you connect email and calendar — all optional, and addable later in Settings. You land on Today, ready to plan.
On desktop and web, a left sidebar holds Today, Search, This Week, Plan Day, Email, Backlog, Reminders, Shutdown and Journal — with Settings and a theme toggle tucked into the footer.
On mobile, a bottom tab bar carries Today, Week, Journal and More (which opens the rest, grouped). A + button creates a task on list screens. To install the PWA, open your Sempa instance in a browser and choose “Install” / “Add to Home Screen”.
The core unit. Open any task to edit it in a side panel (desktop) or bottom sheet (mobile).
Plan Day is a guided morning ritual: write your intention, see what carried over from yesterday, and pull tasks from your backlog into today. Your previous day's note is shown for continuity.
The Week board is a Kanban across seven days — drag tasks between days and statuses. Set Weekly Objectives (the handful of outcomes that matter) and link tasks to them so progress is visible. Plan and review the week from dedicated screens, also surfaced as gentle in-app prompts.
Shutdown is an end-of-day ritual: tick off what's done, reschedule what isn't, record a win and an optional reflection. The Weekly review captures wins, challenges and your next focus. It all collects in the Journal — a searchable timeline of intentions and reflections. Optionally show reflections inline on day and week screens (Settings → Appearance).
Open a task in Focus mode to work distraction-free with a built-in Pomodoro timer. Completed sessions are logged per task, so you can see time spent against your estimate.
Create daily, weekly or monthly templates (Settings → Recurring Tasks). Instances generate automatically; editing one occurrence customises just that one while the series rolls forward.
See events beside your tasks in the Schedule panel. Connect Google and Fastmail calendars, a CalDAV server, or subscribe to any ICS / webcal feed. In Settings → Calendars, show/hide each calendar and cycle its colour through the brand palette.
Import your assigned issues as tasks. Marking a Jira-sourced task done transitions/closes the linked ticket. View issue details and available transitions from the task.
Set Remind me (date + time) on any task for a hard alert with Mark done and Snooze 1h actions. Choose delivery channels independently:
Pick from 10 calm alert tones, and set the times for the in-app weekly planning and daily shutdown prompts.
The desktop and Android apps are local-first: they keep a local copy of your data, so the app stays fully usable with no connection. Changes queue and sync automatically when the server is reachable; a sync indicator shows status. Plain web (in a browser, not installed) talks directly to the server.
In Settings → Backup & Restore: automatic daily backups at an hour you choose, optional encryption with a passphrase, and destinations — keep them local or push to S3, WebDAV or Google Drive. Run one on demand, download the latest, or restore from a file. Migrations run automatically on startup.
| Key | Action |
|---|---|
| n | New task (day view) |
| e | Edit the hovered task |
| t | Go to today |
| j / k | Previous / next week |
| ? | Show shortcuts help |
| Esc | Close the open dialog |
You need Docker and Docker Compose (v2). The installer writes your config, builds the image and starts the container — about two minutes.
Open the URL it prints and follow the in-app setup wizard to connect email and calendar. To upgrade: git pull && docker compose build && docker compose up -d. Your data lives in the sempa_data volume and is preserved across rebuilds.
Tailscale is the easiest way to reach Sempa securely from all your devices without exposing it to the public internet — no port forwarding, automatic HTTPS, and only your devices can connect.
Configuration lives in two local files: .env (URL, port — for Docker Compose substitution) and .env.local (secrets, loaded into the container).
| Variable | Purpose |
|---|---|
| APP_URL | Where Sempa is accessible (no trailing slash) |
| HOST_PORT | Port to expose on the host (default 9001) |
| SEMPA_ALLOWED_EMAILS | Comma-separated allow-list for Google sign-in |
| SEMPA_USERNAME / _PASSWORD | Username + password auth (unset disables auth) |
| TS_AUTHKEY | Auth key for the Tailscale sidecar |
| ANTHROPIC_API_KEY | Enables AI task-title cleanup on email import |
Authentication supports Google Sign-In (OAuth — the same client also powers Gmail import) and username + password. Full details, integration setup and all optional variables are in the repository README.