Know what to do.
Right now.
Right here.

Sense Time, place, and day type
Score Priority, habit, and energy
Recommend Ranked with reasons

Platform

COSMIC Desktop Pop!_OS

Philosophy

Your time deserves intention. These principles guide how Presence thinks.

Context is everything

What you should do depends on when it is, where you are, and what kind of day it is. Presence knows the difference.

Transparent reasoning

Every recommendation comes with an explanation. You see exactly why something was suggested — no black boxes.

You stay in control

Presence suggests — you decide. Give feedback, skip, or complete. The system adapts to your choices over time.

Local and private

All data stays on your machine in a local SQLite database. No cloud, no accounts, no telemetry.

Features

Smart suggestions grounded in your actual life

Context-aware engine

Matches activities to your current time of day, location, weekday vs. weekend, and even Danish holidays.

Multi-signal scoring

Priority weight, recurrence urgency, feedback boost, variety bonus, and fatigue penalty — combined into one ranked list.

Explainability

Every recommendation tells you why it was chosen. Understand the reasoning, not just the result.

Flexible recurrence

Daily, weekly, biweekly, every N days, or flexible min/max intervals. Your habits, your rhythm.

Feedback loop

Mark activities as done, skip, or snooze. Presence learns from your responses and adjusts future scores.

Native COSMIC app

Built with libcosmic and Iced. Feels native on Pop!_OS with full desktop integration.

Architecture

Four crates. Clean boundaries. Pure Rust.

COSMIC UI

presence-app

Application services. Wires domain logic to infrastructure and resolves data directories.

presence-domain

Pure business logic. Models, recommendation engine, scoring, holidays. Zero I/O.

presence-infra

SQLite persistence via rusqlite. Implements domain port traits. Schema migrations and TOML seed data.

How It Works

From context to recommendation in three steps

Step 1

Infer context

Presence reads the current time, determines if it's a weekday, weekend, or Danish holiday, and identifies your place. This forms the context for scoring.

Step 2

Score and rank

Each activity is scored by combining priority weight, recurrence urgency, feedback history, variety bonus, and fatigue penalty. Specific context matches beat wildcards.

Step 3

Present with reasons

The top-ranked activities appear with clear explanations of why they were chosen. You complete, skip, or snooze — and the system learns from your response.