CASE 01 / LOCAL-FIRST ASSISTANT
息壤 · 2026 · ACTIVE
SOLUM
A local-first personal assistant that turns everyday notes into schedules, reminders, and an inspectable memory ledger.
A personal assistant whose desktop and Android clients share a Rust/Tauri implementation, with an independent ArkTS HarmonyOS client and optional encrypted sync and cloud AI.
Current shared Rust workspace and Android package release; the HarmonyOS client follows its own version line.
Personal reminders, routines, and audit history live in a user-owned local database.
When sync is enabled, the server receives encrypted blobs rather than personal plaintext.
Each high-impact action needs its own explicit confirmation token.
01 / Screenshots & UI
A look at the interface.
Screenshots taken from actual running builds.

A conversation records a library reminder while the right sidebar keeps upcoming commitments visible.

Before a high-impact action runs, Solum explains the consequence and asks for a deliberate one-time confirmation.

The local ledger makes captured reminders and actions inspectable, searchable, and individually removable.
02 / Why build this
What I worked on
Product design, architecture, and full-stack development
An assistant is only useful when it is available at the moment a thought occurs, yet cloud-first products make offline use and personal data boundaries feel like trade-offs.
Keep ingest, parsing, storage, alarms, and audit history on the device. Add encrypted sync and optional cloud inference only as deliberate extensions.
03 / How it works
Execution flow.
- 01
Capture
Text, shared content, and notifications enter a local ingest queue.
- 02
Interpret
The Rust core extracts intent, dates, reminders, and routine candidates.
- 03
Guard
High-impact actions show a consequence preview before waiting for approval.
- 04
Notify
Local alarms and reminders continue to work independently of cloud availability.
- 05
Audit
Completed reminders and actions append to a reviewable local history.
04 / Trade-offs
A few design choices along the way.
Make time injectable
Core scheduling logic accepts caller-provided timestamps so behavior can be replayed and tested deterministically.
Keep personal data legible
Reminders and routines are stored in transparent SQLite tables instead of being buried in chat transcripts.
Separate sync from trust
Encrypted synchronization extends the device model without making a remote service the source of truth.
05 / Verified details
Notes and numbers taken directly from local configs and tests.
CLI and core tests inject fixed clocks to verify parsing, due times, and reminder behavior.
VERIFIEDLocal ingest, storage, and alarm flows remain available without a network connection.
VERIFIEDUnconfirmed destructive actions are blocked and cannot bypass the impact preview.
VERIFIED06 / Stack & Timeline
Established the Rust core, desktop shell, local database, and action Guard.
Added encrypted device sync, notification parsing, and mobile companion improvements.
Published v0.2.15 with Android UI refinements and session-selection improvements.