micro / micro/mu

Protect personal memory with per-account encryption and explicit background access

Open
#1,811 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
434
Forks
21
Avg merge
18m
Merged PRs (30d)
326

Description

The user wants useful remembered facts (vehicle registration, verified MOT expiry, preferences) without implying that other people's data is safe merely because it lives on this server.

Current source findings: internal/notes persists account-keyed records through ordinary JSON and indexes title/text in the owner-scoped search index. Google standing grants persist refresh tokens. Mail has separate instance-key encryption, not a user-only vault. Account scoping is authorization, not encryption; disk encryption alone does not protect from a running server with access.

Proposed default: per-account random data encryption keys wrapped by a separately managed instance key, authenticated encryption bound to owner/record kind/ID/version, access checks before decryption. This supports explicitly authorized offline work and is not end-to-end encryption: the operator/server can still decrypt. Do not claim otherwise.

A true user-unlocked vault is a separate mode/design: client-controlled unlock material, expiry, multi-device access and recovery. When locked, the assistant cannot inspect its contents or refresh encrypted Google credentials. Existing email/SMS entry points and background briefs cannot silently unlock it. A reminder can still fire if its minimal schedule/delivery record is separately authorized; it does not need ongoing access to the complete personal vault.

  • Inventory private stores and every derived copy: notes, threads, task payloads/results, events, Google refresh tokens, search indexes/FTS, attachments, logs and backups.
  • Define and implement a common account-bound encrypted store, external key provisioning, rotation, restart recovery and failure behavior. Never generate a replacement key over unreadable encrypted data or fall back to plaintext.
  • Plan migration and rollback without plaintext duplicate indexes/backups or silent data loss. Treat deletion across replicas/backups explicitly.
  • Retrieve only relevant remembered facts for a task. Separate user-provided facts from observations; keep source, checked-at time and expiry. Expose review/correction/deletion using existing sparse surfaces.
  • Save only explicit facts or verified observations needed for a user's goal, not speculative inferences. Clearly acknowledge remembered vehicle details and reminders.
  • Define minimal background task access independent of broad interactive access. A fixed MOT reminder should not require an LLM or Google mailbox read at firing time.
  • Finish Google controls: task-specific older-mail authorization, bounded background reads, selected Drive material, minimal calendar fields and non-content access receipts. Gmail's first seven-day enforcement change is #1809.
  • Assess user-unlocked mode separately, including what genuinely stops working while locked. Do not retrofit login-password-derived encryption as a shortcut (passkeys/Google sign-in/reset/recovery matter).

No encryption migration or user-only vault is implemented by this issue. Encryption at rest also does not prevent plaintext tool results from being sent to the configured cloud model; data minimization remains necessary.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with internal/notes and the existing mail instance-key encryption, then inventory the private stores and derived copies listed in the issue, including Google refresh tokens, indexes, logs and backups. Read #1809 for the Gmail enforcement context. Done means the scope, key management, migration and rollback behavior, background-access boundaries, and separate user-unlocked mode are defined without claiming that server-side encryption is end-to-end.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, google-cloud
Domain
authentication, backend, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.