Living in the terminal

The guide the command reference is not: what a day at the prompt actually looks like.

rememd ships a CLI that covers the full team workflow without touching the menu bar panel. Same backend the app talks to - just a different wire protocol.

The three access paths

                      ┌─────────────────────────┐
  SwiftUI app    ────▶│                         │
                      │  Storage protocol       │
  rememd CLI     ────▶│  (local or remote)      │
                      │                         │
  your agent ──MCP──▶│                         │
   (rememd                └─────────────────────────┘
    mcp-server)                   │
                                  ▼
                           ~/Recall/   or   Postgres

All three hit identical operations. When the agent claims a task for you, dev B's rememd task claim X, and the app's right-click menu all execute the exact same atomic transaction on the backend.

Dev B's first day, by CLI

# Install (the app writes this, or do it by hand)
sudo cp ~/Downloads/rememd /usr/local/bin/rememd
sudo chmod 755 /usr/local/bin/rememd

# Join the team backend
rememd join 'https://rememd.team.com/join?token=...' --name "Dev B"

# Confirm
rememd me
# → Name: Dev B, Server: https://..., Admin: false

# What's on my plate?
rememd ls tasks --mine --open

# Grab the next task
rememd task claim a4f91c0e           # by id prefix
rememd task claim "CI/CD pipeline"   # or by title substring

# Code on it in whatever clone you have
cd ~/wherever/the-repo-is

# Log a note along the way
rememd note "EAS requires an org seat for this to work"

# Mark done via the agent (MCP) or directly:
# (claim ↔ release is the only enforced atomic lock; status lives in the blob)

# Tail live activity in a spare tab
rememd watch

Command reference

Identity & mode

CommandWhat it does
rememd mode showCurrent storage mode + source (env var / mode file / default).
`rememd mode set remote \local`
rememd meYour user record on the remote backend.
rememd join <url>Consume an invite, save access token, persist remote mode.

Browsing

CommandNotes
rememd ls workspacesEvery workspace you can see.
rememd ls products [--workspace <slug>]Products + focus-area / feature counts.
rememd ls focus-areas [--workspace <slug>] [--product <name>]Focus areas with feature counts.
rememd ls features [--workspace <slug>]Features, statuses, done/total task ratio.
rememd ls tasks [--mine] [--open] [--feature <substr>]Filter to your claimed work or just open items.

Short flags work too: -w for workspace, -p for product, -f for feature.

Task operations

CommandNotes
rememd task show <id-or-substring>Title, status, priority, assignee, description.
rememd task claim <id-or-substring>Atomic; 409 if already claimed.
rememd task release <id-or-substring>403 if you're not the holder (admin can force).

Substrings match title case-insensitively. UUID prefixes work (6+ chars usually unique). Ambiguous matches print the top 5 and refuse.

Content

CommandNotes
rememd prd show <feature>Dump the feature's PRD markdown to stdout.
rememd prd edit <feature>Open in $VISUAL or $EDITOR or vi. Saves on exit.

On save, rememd prd edit catches version conflicts. If someone else edited between your fetch and save, it drops the server copy next to yours as <name>.server.md and refuses to overwrite. You merge manually and re-run.

Live push

rememd watch stays open, printing every backend event as it happens:

Watching http://localhost:8080... (Ctrl-C to exit)
[14:07:22] PRESENCE online=2
[14:07:31] CLAIMED task=a4f91c0e ws=4d9841ec v12
[14:08:04] CHANGED ws=4d9841ec v13
[14:08:15] RELEASED task=a4f91c0e ws=4d9841ec v14

Filtered to workspaces you can see. Auto-reconnects on network drops (3s backoff). Same SSE stream the app uses; this just prints each event instead of re-rendering.

Container folders (per-user)

"Where each project lives on my disk" lives in ~/.recall/repo-map.json, never synced. The folder you link is a container - it doesn't have to be a git repo, and any cwd at or beneath it (including subdirectories that aren't repos themselves) inherits the project context.

CommandNotes
rememd whereShow the resolved current project for cwd, plus where the resolution came from.
rememd link showPrint the current map.
rememd link focus-area <name> <path>Link a folder as the focus area's container.
rememd link feature <name> <path>Link a folder for a specific feature (overrides the focus area's link inside that folder).
`rememd link unlink focus-area\feature <name>`

Resolution rule: walk up from cwd; the deepest registered ancestor wins. So linking ~/work/famnly then linking ~/work/famnly/packages/auth gives you the auth context only inside packages/auth/, and the broader famnly context everywhere else under ~/work/famnly/.

You only need links if you want:

  • rememd note, rememd log, rememd resume to auto-resolve the project from cwd.
  • Auto-scoped rememd ls tasks (no --workspace / --feature flags needed).
  • rememd connect to resolve the right target from the folder you are standing in.

Pure CLI workflow with explicit flags (rememd ls tasks --workspace X, rememd task claim, rememd watch, rememd prd edit) needs zero path setup.

Legacy repo-aware commands

These work everywhere now (no longer require the app to be running) - they go through Storage directly. They still need a linked folder to auto-resolve "current project" from cwd:

  • rememd connect - bind this terminal to the current repo's product, so tool calls default to it.
  • rememd note "..." - save a note to the product covering cwd.
  • rememd log - log a session checkpoint with branch + recent commits.
  • rememd resume - print context from the most recent session for this project.

Administrative (backend box)

cd backend/
make up                 # docker compose up
make logs               # tail server logs
make backup             # compressed dump to backups/
make restore FILE=...   # atomic restore (stops server, drops db, reloads, starts)
make test               # full Go test suite on ephemeral Postgres

Scripting

All commands write human-readable tables by default. JSON output is on the Tier-2 roadmap - today, parsing is manual. For quick scripts, lean on awk:

rememd ls tasks --mine --open | awk 'NR>2 {print $1}'    # just the ids

Once --json ships, this gets nicer.

What the CLI does NOT do (yet)

  • Start agent sessions. Run claude yourself, then rememd connect.
  • Edit the workspace/product/focus-area hierarchy. Use the menu bar panel.
  • Create invites or manage members. Use Invite on any row in the menu bar panel, or hit the admin HTTP endpoints with curl.
  • Show the session timeline. Open the session from the panel's rail.

The CLI is scoped to daily-work operations: find work, claim it, note insights, watch activity. The menu bar app owns connecting a terminal, browsing context, and administration.