Skip to main content
Back to projects

Margin

Catch it without breaking flow, then hand agents the evidence

Personal tool · October 2026 · ongoing
Designer & Developer
SwiftSwiftUIAppKitPythonwhisper.cppMCP

Ownership

Designer & Developer

Primary proof

Private personal tool

Margin

Overview

I designed and built Margin as the capture layer of my agent-assisted workflow. One shortcut opens a small floating panel for a note, a bug, a link or a meeting recording. Everything lands in an Inbox, gets sorted into a project when I am ready, and stays on my Mac. Coding agents can then search and quote it through a read-only interface. The screenshots show the real app running as a separate demo instance with a fictional library.

The Challenge

The useful thought usually arrives while I am in the middle of something else: an idea during a demo, a bug while testing, a decision on a call. If capturing it means choosing a folder, writing a title or switching apps, I lose either the thought or the flow. Later, when an agent picks up the work, it needs the original words, not my paraphrase of them.

Constraints

  • •Capture must work with no network, no model and no setup decisions.
  • •Private notes and recordings stay on the Mac unless I explicitly send them.
  • •Agents may read; saving, moving, deleting and handing off stay human actions.

How it works

Problem

Choosing a destination before saving slows capture down.

Decision

Inbox is a real destination. A matching project is offered as a suggestion that waits for a click; an explicit #project tag files directly.

Sorting becomes a separate step, so the Inbox has to stay cheap to empty.

Problem

Notes typed during a meeting lose their link to what was being said.

Decision

A note saved while recording keeps the recording and the second it was written. The meeting lists those notes at their time, and each note links back.

The anchor is fixed at save time; editing a note never moves it.

Problem

Agents need context but should not be able to change it.

Decision

A read-only MCP server and a JSON CLI share one lookup path, with exact text, hashes and explicit coverage limits.

Agents can quote and cite, but every write still goes through me.

Problem

An agent-facing command that defaults to recording is a trap.

Decision

The canonical command never opens the microphone without an explicit verb; only the legacy alias used by a hotkey keeps its old toggle.

Two command names behave slightly differently, which is documented.

Approach

1. One shortcut, one field

⌃⌥Space opens a nonactivating panel over whatever I am doing. Type or paste, press ⌘Return, keep going. A save can be undone for a few seconds, and drafts survive hiding the panel or restarting.

One shortcut, one field

2. Meetings with notes in the margin

Microphone and system audio are recorded on separate tracks and transcribed on the Mac with whisper.cpp. Notes written during the call are anchored to that moment, so the meeting shows what I flagged and when.

Meetings with notes in the margin

3. Context agents can cite

Projects, notes, meetings, documents and saved video transcripts are available to agents through a read-only MCP server and CLI. Results include exact source text, SHA-256 hashes, dates and what was left out, so an answer can be checked against its source.

4. Trust before features

Backups are verified with checksums, restores go into a new folder with outgoing actions paused, Trash is reversible, and a separate demo instance keeps testing and screenshots away from the personal library.

Outcome

A tool I use on my own Mac, with about 1,500 saved sources so far. The capture, library, backup and agent-access paths have automated coverage (249 tests plus native UI checks). Real-call transcription accuracy, wider hardware coverage and a signed public release are still open; this case study does not claim a distributed product.

Proof points

Private personal tool

Delivery

Read-only MCP server and CLI

Agent access

Separate demo instance, fictional library

Screenshot data

Learnings

  • →Fast capture is mostly about what you don't ask the user to decide.
  • →An agent interface needs a safe default more than it needs more commands.
  • →A note's moment in a meeting is context worth keeping.

Anti-Patterns Avoided

  • ×Asking for a folder or title before saving
  • ×Background screen or clipboard collection
  • ×Agents that can quietly create tasks or edit sources

Next Iterations

  • →Jump from an anchored note straight to that moment in the transcript
  • →Keyboard-first Inbox review
  • →A reviewed, notarized build for other Macs

Get In Touch

If you want to talk about similar work, email me.

Contact is the simplest place to start.