User guide
Installing
For installation instructions, refer to the separate installation guide.
Configuring
To update the configuration, select βConfigureβ from the system tray icon menu.
You should see a screen like this:
There is documentation in the configuration file that explains the various configuration options. A few of these are called about below.
π Setting up a daily deep work goal
By default, there are no deep work goals set for any days of the week:
# For each day in your maker schedule, how many deep work hours are you targeting?# Set to 0 if you don't have any deep work goals for that day, or remove the day entirely.# The numbers can be whole numbers or decimals (eg, 1.5)deep_work_hours_goal_by_day = { Mon = 0, Tue = 0, Wed = 0, Thu = 0, Fri = 0 }
If you set this to a number (including fractions), the you can track against your deep work goals. When you hit your deep work goal, you will see a full-screen popup notification letting you know.
Example config:
deep_work_hours_goal_by_day = { Mon = 4, Tue = 4, Wed = 6, Thu = 4, Fri = 2.5, Sat = 0, Sun = 2 }
βοΈ Setting up a work schedule
The configuration file has a default schedule of:
maker_schedule_days = ["Mon", "Tue", "Wed", "Thu", "Fri"]
and
maker_schedule_hour_ranges = ["9-18"]
This configuration ensures the app monitors and analyzes screenshots only during these specified times. For the hour ranges, you can specify a comma seperated list of hour ranges, like: ["9-17", "20-22"]
.
This means that the app will only monitor and analyze screenshots during these times.
π π»ββοΈ Enabling distraction blockers
To enable real-time work deviation alerts during working hours, update the configuration:
enable_distraction_blocker = true
This activates full-screen alerts for non-work activities detected during work hours.
You can also tune the settings of these, see Advanced Configuration below.
The distraction blocker screen looks like this:
If you donβt get distraction blockers as expected, see the Understanding the Event Log section.
π Customize what is categorized as deep work
Customize the categories
in the configuration to meet your specific needs, tailored for software engineers.
It is geared towards the categories of a software engineer, but you can update it to suit your particular flavor of deep work.
π Use OpenAI API instead of LLama3
To use OpenAI instead of the Llama3 model, enter your OpenAI API key.
You will need to:
- Create or get an existing key from https://platform.openai.com/
- Set the
openai_api_key
to this value - Set
llava_backend
toOpenAI
- Update
llm_model
to one of the OpenAI models, for examplegpt-4o
β° Tuning the screenshot capture frequency
By default, these two configuration values control how often screenshots are collected:
duration_between_screen_captures_secs = 45
By default, the app captures your current screenshot every 45 seconds.
Itβs not recommended to lower duration_between_screen_captures_secs
below 30 seconds since it will use a lot of CPU.
βοΈ Understanding how it works
Hereβs how distraction blockers work:
- Wait 45 seconds (unless changed in configuration)
- Check what the active app is, for example Google Chrome. If itβs Chrome or Safari, also check the browser URL.
- Wait another 45 seconds - has the app changed or is it the same app? If itβs Chrome or Safari, also check if its the same browser URL.
- The app takes a screenshot and retrieves OCR text via a local OSX API call if youβre using the same app and browser URL (for browsers), are actively using the computer, and itβs within scheduled hours. It skips this step if recently a distraction blocker was shown.
- Invoke the LLM with the OCR text and pass the prompt, and receive a category and productivity score. If the OCR text is similar to a previous result, it will reuse that result instead.
- The app analyzes the OCR text with the LLM, receiving a category and productivity score, and reuses the result for similar OCR text.
- The app then deletes the screenshot, with an option to save it for event log display.
- If consecutive low-productivity snapshots fall below a threshold, the app displays a distraction blocker, unless disabled. Otherwise, it resets the low-productivity count.
π Data security
MakerTime automatically takes screenshots every 45 seconds by default.
- π¦ MakerTime analyzes screenshots locally using the Llama3 open weights model.
- β MakerTime temporarily saves any collected screenshots to your hard drive in the
/Users/<username>/Library/Application Support/ai.makertime
directory, and then immediately deletes them a few seconds later after analysis. - π MakerTime does not send logs or any usage data to servers.
To purge any collected screenshots, see the Uninstalling + purging data section below.
If you update the configuration to use OpenAI instead of the default llama3 local model, refer to the OpenAI data security notes.
π οΈ Advanced configuration
π π»ββοΈ Preventing certain apps and websites from being processed by the LLM
For enhanced privacy, MakerTime can ignore specific apps or websites by adding them to a βdeny list,β useful for both OpenAI and local Llama3 analyses.
Note: The deny list only works for Chrome and Safari. Contact us for support with other browsers.
Here are the configuration values and instructions for using this feature:
# List of apps that should not be captured by screenshot since they will likely contain# sensitive informationapp_screenshot_denylist = ["com.apple.finder"]
# List of domain names that should not be captured by screenshot in either Chrome or Safari,# since they might contain sensitive information. Enter the domain name without http or https,# exact match only (no wildcards supported). Only Chrome and Safari supported for this feature# at the moment.# Example list of domain names:# ["meet.google.com", "teams.microsoft.com", "teams.live.com"]url_screenshot_denylist = []
π₯ Minimizing false positive distraction blockers
To minimize false positives with distraction blockers, consider these tips.
Via tuning the number of consecutive distraction threshold
Adjust the num_consecutive_distractions_before_block
setting to reduce false positives.
The configuration value that you can tune is this, which is by default set to:
num_consecutive_distractions_before_block = 3
This setting triggers a distraction blocker after three consecutive low scores.
With this setting, if you are still getting consistent false positives, and the prompt tuning isnβt helping, you could try raising this to 4
and seeing if it helps.
If you feel like you are able to slack off too long without getting a distraction blocker, then try updating the num_consecutive_distractions_before_block
to a lower value, for example:
num_consecutive_distractions_before_block = 2
π΄ Snoozing distraction blockers
To snooze a distraction blocker when not working, follow these steps:
Thatβs currently the only way to snooze distraction blockers.
π§ Understanding the Event Log
Annotated columns
Click this screenshot to show a zoomed-in version:
Icon explanation by column
Overall action | LLM call | Deep Work | Screenshot |
---|---|---|---|
πͺ Ignored event because it detected MakerTime was running | π Did not call LLM | π N/A | π N/A |
πΎ Re-use prior cached LLM result with similar screenshot | β LLM call success | π Performing Deep Work | π₯οΈ View Screenshot |
πΆ Switching between apps or browser URLs | π« LLM call failed | π¬ Apparently not in the zone | |
π₯ Unexpected error | |||
β³ Ignored because there was a recent distraction blocker | |||
πΈ Exceeded LLM daily budget (OpenAI only) | |||
π§ Dev Mode | |||
π² Screen was blank | |||
ποΈ Outside scheduled hours | |||
π΄ Snoozed | |||
π€ Called LLM for analysis | |||
π Idle (no mouse or keystrokes) | |||
π π»ββοΈ App was in denylist |
π Battery usage notes
MakerTime only calls the LLM when the device is plugged in and the battery is over 90% charged.
If the battery charge falls below 25%, MakerTime will not call the LLM, regardless of power status.
Adjust the only_analyze_screenshots_while_plugged_in
value to change this behavior.
Debug logs
Locate debug logs at:
/Users/<username>/Library/Logs/ai.makertime
Uninstalling + purging data
For data purging instructions, see the Uninstalling guide