ThreeDoors is a radical rethinking of task management that reduces decision friction by showing you only three tasks at a time. Instead of overwhelming you with an endless list, ThreeDoors presents three carefully selected "doors" β choose one, take action, and move forward.
Traditional task lists create choice paralysis. Staring at 50+ tasks makes it hard to start anything. You spend more time reorganizing and re-prioritizing than actually doing the work.
- Three doors, one choice β Reduces cognitive load by limiting options
- Refresh when needed β Don't like your options? Roll again
- Quick search β Press
/to find something specific - Mood-aware tracking β Log your emotional state to understand work patterns
- Pattern learning β Over time, learn which tasks you avoid and why
- Avoidance detection β Automatically surfaces tasks you keep skipping
- Values alignment β Keep your goals front-and-center while working
- πͺ Three Doors Display β View three randomly selected tasks, avoiding recently shown ones
- π Refresh Mechanism β Re-roll doors when nothing appeals
- β Task Status Workflow β Complete, block, defer, expand, fork, or flag tasks for rework
- β Quick Add β Add tasks inline with
:addor pressa; supports context capture with:add --why - π·οΈ Inline Tagging β Tag tasks as you add them:
Design homepage #creative #deep-work @work - π Task Categorization β Classify by type (creative, technical, administrative, physical), effort (quick-win, medium, deep-work), and location (home, work, errands, anywhere)
- π Cross-Reference Linking β Link related tasks together; browse and navigate links from detail view
- π Quick Search β Press
/for live task search with fuzzy filtering - β¨οΈ Command Palette β Press
:for vi-style commands (:add,:mood,:stats,:health,:dashboard,:goals,:help)
- π Session Metrics β Automatic tracking of door selections, bypasses, and timing data
- π Daily Completion Tracking β Track completions per day with streak counting
- π Insights Dashboard β View trends, streaks, mood correlations, and avoidance patterns (
:dashboard) - π Mood Correlation Analysis β Discover how your emotional state affects task selection
- π¨ Avoidance Detection β Tasks bypassed 10+ times trigger an intervention prompt offering breakdown, deferral, or archival
- π§ Pattern Analysis β Identifies door position bias, task type preferences, and procrastination patterns
- π Bidirectional Sync β Read and write tasks from Apple Notes
- π Provider Architecture β Switch between text file and Apple Notes backends via
config.yaml - π©Ί Health Check β Run
:healthto verify provider connectivity, file access, and disk space
- πΎ Write-Ahead Log (WAL) β Crash-safe task persistence with atomic writes
- π‘ Offline Queue β Local change queue with replay when connectivity returns
- π Sync Status Indicator β Visual sync state per provider in the TUI
- π
Local Calendar Reader β Reads from macOS Calendar.app (AppleScript),
.icsfiles, and CalDAV caches - β° Free Block Detection β Computes available time blocks between calendar events
- ποΈ SQLite Storage β Pure-Go SQLite (no CGO) for task metadata, cross-references, learning patterns, and feedback history
- πΈοΈ Cross-Reference Graph β Track relationships between tasks across providers
- π€ Task Breakdown β Decompose complex tasks into stories using Claude or local Ollama
- π Git Integration β Write generated story specs directly to git repos
- π First-Run Onboarding β Guided welcome flow with keybinding tutorial, values/goals setup, and optional task import
- π― Values & Goals Display β Persistent footer showing your values as you work
- π Mood Logging β Capture emotional state anytime with presets or custom text
- π¬ Door Feedback β Rate doors as blocked, not-now, or needs-breakdown to improve selection
- π‘ Session Improvement Prompt β On quit, optionally share improvement suggestions
- β‘οΈ Contextual Next Steps β After completing or adding a task, see relevant next actions
- πΊ Homebrew β Install via
brew install arcaven/tap/threedoors - π Signed & Notarized β macOS binaries are code-signed and Apple-notarized
- π» Cross-Platform Binaries β Pre-built for macOS (ARM & Intel) and Linux (x86_64)
- π GitHub Releases β Automatic releases on every merge to main
| Key | Action |
|---|---|
a / Left |
Select left door |
w / Up |
Select center door |
d / Right |
Select right door |
s / Down |
Refresh doors (re-roll) |
n |
Send feedback on selected door |
/ |
Open quick search |
: |
Open command palette |
m |
Log mood |
q / Ctrl+C |
Quit |
| Key | Action |
|---|---|
c |
Mark complete |
i |
Mark in progress |
b |
Mark blocked (prompts for reason) |
e |
Expand task (break down) |
f |
Fork task (clone/split) |
p |
Procrastinate (defer) |
r |
Flag for rework |
l |
Link to another task |
x |
Browse cross-references |
m |
Log mood |
Esc |
Return to doors |
| Key | Action |
|---|---|
| Type | Live filter tasks |
j / Down |
Next result |
k / Up |
Previous result |
Enter |
Open selected task |
Esc |
Exit search |
| Command | Action |
|---|---|
:add <task> |
Add a new task |
:add --why |
Add task with context (why it matters) |
:mood [mood] |
Log mood (or open selector) |
:tag |
Open task categorization editor |
:stats |
Flash session statistics |
:health |
Run system health check |
:dashboard |
Open insights dashboard |
:insights |
Show full insights dashboard |
:insights mood |
Flash mood & productivity insights |
:insights avoidance |
Flash avoidance patterns |
:goals |
Open values & goals setup |
:goals edit |
Edit existing values & goals |
:help |
Show all commands |
:quit |
Exit application |
brew install arcaven/tap/threedoorsDownload the latest release from GitHub Releases. Binaries are available for:
| Platform | Binary |
|---|---|
| macOS (Apple Silicon) | threedoors-darwin-arm64 |
| macOS (Intel) | threedoors-darwin-amd64 |
| Linux (x86_64) | threedoors-linux-amd64 |
chmod +x threedoors-*
mv threedoors-darwin-arm64 /usr/local/bin/threedoors # adjust for your platformgo install github.com/arcaven/ThreeDoors/cmd/threedoors@latestPrerequisites: Go 1.25.4+, Git, Make (optional)
git clone https://github.com/arcaven/ThreeDoors.git
cd ThreeDoors
make build
# Binary at bin/threedoors- Launch the app:
threedoors
- First run starts the onboarding wizard β learn key bindings, set your values/goals, and optionally import existing tasks.
- Select a door with
a(left),w(center), ord(right). - Re-roll doors with
sif nothing appeals. - Act on a task using status keys:
c(complete),b(blocked),i(in progress),p(procrastinate). - Add tasks with
:add Buy groceries #quick-win @errands. - Log your mood with
m. - Search with
/to find a specific task. - View insights with
:dashboardto see trends and patterns.
All data is stored locally in ~/.threedoors/:
~/.threedoors/
βββ tasks.yaml # Active tasks (YAML format)
βββ config.yaml # Provider configuration
βββ values.json # Your values & goals
βββ completed.txt # Completed task log
βββ sessions.jsonl # Session metrics (JSON Lines)
βββ patterns.json # Cached pattern analysis
βββ enrichment.db # SQLite enrichment database
βββ improvements.txt # Your improvement suggestions
βββ onboarding.lock # First-run marker
- Language: Go 1.25.4+
- TUI Framework: Bubbletea + Lipgloss
- Database: modernc.org/sqlite (pure Go, no CGO)
- Architecture: Model-View-Update (MVU) with provider pattern
- Build System: Make
- CI/CD: GitHub Actions (lint, test, build, sign, notarize, release, Homebrew update)
ThreeDoors/
βββ cmd/threedoors/ # Entry point
βββ internal/
β βββ tasks/ # Task domain: models, providers, sync, analytics
β βββ tui/ # Bubbletea views (13 views) and UI components
β βββ calendar/ # Local calendar readers (AppleScript, ICS, CalDAV)
β βββ enrichment/ # SQLite enrichment database
β βββ intelligence/llm/ # LLM backends (Claude, Ollama) & task decomposition
β βββ dist/ # macOS code signing, notarization, pkg building
β βββ ci/ # CI validation tests
βββ Formula/ # Homebrew formula
βββ scripts/ # Analysis & build scripts
βββ docs/ # PRD, architecture, stories, research
βββ Makefile
make build # Build the application
make run # Build and run
make test # Run tests
make lint # Run golangci-lint
make fmt # Format with gofumpt
make clean # Remove build artifacts
make sign # Code-sign binary (requires APPLE_SIGNING_IDENTITY)
make pkg # Build macOS .pkg installer
make release-local # Build + sign + pkgWe use gofumpt (stricter than gofmt) and golangci-lint. See CLAUDE.md for full coding standards.
make fmt # Format code
make lint # Run linter (must pass with zero warnings)- Progress Over Perfection β Taking action on imperfect tasks beats perfect planning
- Reduce Friction β Every interaction should feel effortless
- Learn from Behavior β Track patterns to help users understand their work habits
- Emotional Context Matters β Mood affects productivity; acknowledge and track it
- Power Users Welcome β Vi-style commands without sacrificing simplicity
- Local-First β Your data stays on your machine, no accounts, no telemetry
- All data is local β Stored in
~/.threedoors/ - No telemetry β Session metrics stay on your machine
- No accounts β No sign-ups, no servers, no tracking
- Offline-first β Works without network; syncs when available
Before contributing:
- Read the PRD and Architecture docs
- Check current status in the epic list
- Open an issue to discuss significant changes
To contribute:
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Follow coding standards (
make lint && make fmt) - Write tests for new functionality
- Commit your changes
- Push and open a Pull Request
Code Quality Requirements:
gofumptformattinggolangci-lintpasses with zero warnings- Unit tests for new logic
- No
//nolintwithout justification
- Product Requirements (PRD) β Features, requirements, epics
- Architecture β Technical design and patterns
- User Stories β Story files with acceptance criteria
- Coding Standards β Go best practices
- Research β Choice architecture, mood correlation, procrastination
Distributed under the MIT License. See LICENSE for more information.
Built with the Charm ecosystem:
- Repository: github.com/arcaven/ThreeDoors
- Issues: github.com/arcaven/ThreeDoors/issues
- Releases: github.com/arcaven/ThreeDoors/releases
"Progress over perfection. Three doors. One choice. Move forward." πͺβ¨