frm

maintain meaningful relationships

A CLI personal relationship manager backed by CardDAV. Single binary, no database — your contacts live in your existing address book, interaction history in a local file.

go install github.com/justinabrahms/frm@latest

Or download a binary from Releases.

What it looks like

$ frm check
Overdue contacts:
  Alice Johnson        last: 3 weeks ago   every: 2w
  Bob Chen             last: 2 months ago   every: 1m

$ frm log "Alice Johnson" --note "caught up over coffee"
Logged interaction with Alice Johnson.

$ frm triage
Dana Williams — dana@example.com
  (m)onthly  (q)uarterly  (y)early  (c)ustom  (i)gnore  (s)kip  (Q)uit
  > m
  ✓ Tracking Dana Williams every 1m

$ frm stats
Tracked: 42   Ignored: 15   Overdue: 2   Groups: 3

Get started in three steps

1

Connect your address book

Run frm init to connect iCloud, Fastmail, or any CardDAV server.

2

Triage your contacts

Run frm triage to walk through contacts and decide how often to stay in touch — monthly, quarterly, yearly, or a custom interval like 2w.

3

Check in regularly

Run frm check to see who is overdue. After you reach out, log it: frm log "Alice" --note "caught up over coffee".

Built for automation

Every command supports --json for structured output and --dry-run for safe previews. An AI agent can drive your entire relationship maintenance workflow: check who needs attention, prepare context before meetings, and triage new contacts automatically.

Read the Agent Integration Guide to learn more.

Explore the docs

How it works

frm stores metadata directly on your contacts using custom vCard fields in your CardDAV server. There is no separate database to manage or sync.

Interaction history lives in ~/.frm/log.jsonl. This is the only local state — back it up or symlink it to a synced directory.