# Fovea: Product Facts

Machine-readable fact sheet. Last updated: 2026-11-06.

## Product

- Name: Fovea
- Category: focus companion / task focus app (macOS desktop utility)
- Designed for: people with ADHD first; anyone juggling several streams of screen work
- Developer and publisher: IDv4, Inc.
- License: MIT
- Price: free. No account, subscription, or license key.
- Current version: 0.1.0 (November 2026)
- Minimum OS: macOS 14 Sonoma or later
- Architectures: universal binary (Apple Silicon and Intel)
- Built with: Swift, SwiftUI hosted in AppKit, SQLite (GRDB), Sparkle 2 for updates
- Website: https://fovea.idv4.com/
- Distribution: universal .dmg from https://fovea.idv4.com/#download; Homebrew: `brew install --cask dciobanu/tap/fovea`
- Releases: https://github.com/IDv4/fovea-releases/releases (each release has `Fovea-<version>.dmg`, `Fovea-<version>.zip`, `appcast.xml`, `SHA256SUMS.txt`)

## Design principles

| Principle | In the app |
|---|---|
| One thing at a time | The Lens shows one task, never a list |
| Externalise working memory | The app records what you were doing, what came in, and what is next |
| Make time visible | A ring that fills and shifts colour; digits optional |
| Decide ahead | Next is chosen before the current task ends |
| Zero-friction capture | One hotkey and two seconds to park a thought |
| No shame | No red, no "overdue", no streaks; unfinished work carries over |
| Micro-starts | Every start is a two-minute commitment |
| Gentle, never modal | No dialog over your work during a running timer |
| Agents propose, the human disposes | Agents cannot set Now or Next |
| Calm by default | One accent colour, Reduce Motion honoured, sounds off by default |

## Features in 0.1

| Feature | Detail |
|---|---|
| The Lens | Non-activating floating panel: pill (260×36 pt: title, time ring, parked count), card (Next, Park, Done), expanded panel. All Spaces, over full-screen apps, never takes focus, remembers position per display |
| Now / Next / Today | One Now, one Next, Today WIP limit of 4 (at most 1 deep task) |
| Start 2 min | Every start is a two-minute commitment; the timer simply continues afterwards |
| Pomodoro | Default 25/5, long break every 4, configurable; "finish the thought (+5)" at interval end |
| Free-running timer | Stopwatch against the estimate |
| Hyperfocus guard | After 90 minutes (configurable) of continuous work: slow breathing, then elapsed time, then a break suggestion |
| Break countdown | Teal ring; at zero shows the next task |
| Park it | Option+P: one-line field over the Lens; saved with timestamp and current task |
| Where was I | Option+W: current task, last note, time away, recent app names |
| Interrupt | Pauses the task, logs an interruption, Lens becomes a Resume button |
| CLI | `fovea` (add, now, start, pause, done, next, list, move, park, where, log, settings; `--json` everywhere) |
| MCP server | `fovea mcp` over stdio; tools to snapshot, list, create, update, complete tasks, ask the user, park thoughts, where was I |
| Agent questions | An agent can mark a task as waiting on you with a question; the Lens shows a blue badge |

## Planned (not in 0.1)

- Calendar awareness and a day bar
- Morning sheet and shutdown review
- Energy match for Next suggestions
- Promotion rules and a Streams view of running agents
- App-context restore from Where was I
- Weekly review with estimate calibration; Markdown daily-note export
- Windows (later)

## Data and network

- Storage: one SQLite file in `~/Library/Application Support/Fovea/`
- Local API: Unix domain socket (mode 0600) plus a per-install token; nothing listens on the network
- Network: the update check against the public appcast (can be turned off) and downloading an accepted update. No telemetry, no account, no backend.
- Website: no cookies or analytics; one request to the GitHub API for the newest download link

## Connecting agents

- Claude Code: `claude mcp add fovea -- fovea mcp`
- Codex (`~/.codex/config.toml`): `[mcp_servers.fovea]` with `command = "fovea"` and `args = ["mcp"]`
- Generic `.mcp.json`: `{"mcpServers": {"fovea": {"command": "fovea", "args": ["mcp"]}}}`
