Skip to content
Native macOS app · Early build · Local-only

LockIn

Your friends are on the call.LockIn lets you stay.

You want to be there with them. You just don’t want to talk for forty minutes. Blockers make you leave. LockIn lets you stay — camera on, studying beside your friends, without falling into Discord for “just one second.”

Launch email and occasional build notes. No weekly funnel.

Real LockIn window with focus timer, selected apps, and focus presets
5 min
Each exception
3
Available behaviors
0
Accounts required

Discord isn’t the problem. Opening it without thinking is.

I started building LockIn for nights when my friends and I study together on Discord: everyone in the call, cameras on, trying to get work done. I wanted to stay in the room without turning one quick reply into forty minutes of yapping.

Most blockers remove Discord. LockIn removes the decision to resist it. Discord can stay alive. You just can’t fall into it without first seeing the choice you are making.

What happens when you click Discord

LockIn hides Discord and puts Guard Screen in front of the habit. Go back to work, open a five-minute exception, or end the session. Nothing is disguised as willpower and none of the exits are hidden.

  • Discord is hidden; LockIn does not terminate its process in Guard Screen
  • The call can stay active while you return to the app where you were working
  • Each exception lasts five minutes, can be repeated, and has no penalty in v0.1

The call stays. The Discord window goes away.

Guard Screen uses macOS app hiding instead of terminating the process. The rest of LockIn is there to decide when that behavior applies and to make the boundary visible.

01

Guard Screen

Hides the selected app and shows Guard Screen without terminating the process.

02

Menu bar control

Start or stop the block and check the time without opening another surface to manage.

03

Breaks turn guarding off

LockIn stops watching apps during the break and starts again with the next focus block.

04

Your history, in open formats

Sessions are stored locally and export as CSV or JSON.

What the first version actually does

No promises of impossible discipline and no features that do not exist yet.

Presets and your own timing

Use 25/5, 45/10, or set the focus and break lengths yourself.

Guard Screen · Hide Only · Quit App

All three behaviors exist and are selectable in Settings. Guard Screen is the default.

Quitting ends the block

LockIn does not prevent ⌘Q. An interrupted focus block is recorded as abandoned, and relaunch starts fresh.

CSV and JSON export

Local history can be exported from the History menu in both formats.

Pick Discord. Start a focus block. Keep studying.

  1. 01

    Add Discord to the list

    LockIn rejects Finder, Dock, System Settings, Terminal, WindowServer, and itself both when they are added and when they open.

  2. 02

    Start the amount of time you actually need

    Choose 25/5, 45/10, or custom timing from the native app or menu bar.

  3. 03

    Stay in the call, not in the window

    When you enter Discord during focus, LockIn hides it and shows Guard Screen. During the break, it does nothing.

Built for the nights you study together.

Study calls with friends

Stay present in the call without turning it into a forty-minute conversation.

Camera-on coworking

Share the room with other people while protecting the block you said you would finish.

Apps that need to stay alive

For calls, uploads, and background work that should not die because you opened a window.

People who want local data

Your focus history does not need to become an account or a remote profile.

Your focus data does not leave your Mac.

No account, cloud sync, remote analytics, or network dependency in the current build.

  • Config, temporary state, and history live in ~/Library/Application Support/LockIn/.
  • The current code has no login, sync, remote analytics, or network client.
  • Export sessions as CSV or JSON from the History menu.

The questions a blocker has to answer

What stops you, what does not, and exactly where the escape hatches are.

What stops me from quitting LockIn?

Nothing. v0.1 does not install a privileged helper or prevent ⌘Q. Quitting LockIn stops guarding immediately, records an active focus block as abandoned, and relaunch starts fresh. Guard Screen is a speed bump, not a cage.

What does “Allow for 5 Minutes” do?

It opens that app for exactly five minutes. You can use it again; v0.1 has no allowance cap or penalty. If the app is still frontmost when time expires, LockIn hides it and shows Guard Screen again.

Does it log exceptions or every Guard Screen hit?

Not yet. Current history records session timestamps, duration, final status, selected-app count, and behavior—not each Guard Screen hit or exception.

Does LockIn quit selected apps?

Not in Guard Screen or Hide Only: both behaviors hide the app. Quit App is a separate, explicit third behavior that requests termination.

Do the call, camera, microphone, and screen share keep working?

Guard Screen uses macOS hide, not terminate, so the process stays alive. The full Discord call, camera, microphone, and screen-sharing matrix still needs manual validation before release.

Can it block Finder or System Settings?

No. Finder, Dock, System Settings, Terminal, WindowServer, and LockIn are excluded by bundle ID and name. Validation happens when an app is added and again when it opens.

When does Guard Screen intervene?

Only during the focus phase and only for selected apps. Guarding stops during breaks and when the session ends.

Do I need an account or internet?

No. The current build stores everything on your Mac, has no network client, and works offline.

Want the first build?

Join the early-access list. I’ll email when LockIn is ready to test with a real Discord study call.

Designed and built by Orlando AscanioSwift · SwiftUI · AppKit
LockIn – Stay in the Discord call without falling into Discord | Orlando Ascanio