A Command-Line Tool for Deep Work
Flow is a minimalist command-line tool designed to help you focus on single-tasking by creating a mindful boundary around your work. It emphasizes mindfulness and presence, not productivity metrics.
For ambient awareness in your shell prompt:
- Mindful Focus: Helps you maintain a single-tasking mindset with one active session at a time
- Session Management: Start, pause, resume, and end sessions easily
- Session Logging: Automatic tracking of completed sessions for reflection and insights
- Shell Integration: Seamlessly integrates with your shell for ambient awareness
- Automation Hooks: Customize workflows with session event hooks (on_start, on_pause, on_resume, on_end)
- Privacy First: No tracking, no cloud, purely local with XDG-compliant storage
- Script Friendly: Raw output mode for integration with other tools
Flow believes in creating a mindful boundary around your work. It's about protecting your attention and engaging deeply with one task at a time. The tool serves your consciousness, not metrics.
start [--tag "name"] | Begin a deep work session | flow start --tag "code review" |
status [--raw] | Check the current session | flow status or flow status --raw |
pause | Take a mindful break | flow pause |
resume | Continue working | flow resume |
end | Complete the session | flow end |
log [flags] | View session history | flow log --today --stats |
completion [bash|zsh] | Generate shell completions | flow completion bash |
--today | Show only today's sessions |
--week | Show this week's sessions |
--stats | Display summary statistics |
--all | Show all sessions (no limit) |
Examples:
Download pre-built binaries from the releases page.
Flow supports automation hooks that trigger on session events. Create executable scripts in ~/.config/flow/hooks/:
- on_start - Triggered when starting a session
- on_pause - Triggered when pausing a session
- on_resume - Triggered when resuming a session
- on_end - Triggered when ending a session
Each hook receives the session tag as its first argument.
Example hook (~/.config/flow/hooks/on_start):
Flow follows XDG Base Directory standards:
- Session data: $XDG_DATA_HOME/flow/session (default: ~/.local/share/flow/session)
- Session logs: $XDG_DATA_HOME/flow/logs/YYYYMM_sessions.jsonl (default: ~/.local/share/flow/logs/202507_sessions.jsonl)
- Hooks: $XDG_CONFIG_HOME/flow/hooks/ (default: ~/.config/flow/hooks/)
- Custom session path: Set FLOW_SESSION_PATH environment variable
- Custom log path: Set FLOW_LOG_PATH environment variable
We welcome contributions! Please see CONTRIBUTING.md for guidelines. This is a tool for mindful computing that serves consciousness.
MIT License - see the LICENSE file for details.
One thing at a time. Runs offline. Powered by presence.