A terminal curfewthat feels human.
Curfew helps you protect your quiet hours with clear rules, rounded edges, and just enough friction to keep late-night confidence from making tomorrow more expensive.
Tonight
11:00 pm
Warning window starts at 10:30. Hard stop lands at 1:00.
Check
$ git push
“Still sure? Type the passphrase.”
Mood
Helpful, not smug.
The copy nudges you like a kind teammate.
Protect the version of you that has good intentions and bad circadian timing.
Curfew is built for the moment when you know you should wind down, but your terminal still looks full of possibility.
Late-night confidence is a liar
Curfew gives you a pause before a sleepy push, deploy, or rabbit-hole session turns into tomorrow's repair job.
The rules stay boring on purpose
Quiet hours, warning windows, hard stops, and first-match-wins command rules are explicit enough to trust at 12:47 a.m.
It feels like a helpful friend
Use gentle prompts, waits, passphrases, math, or harder blocks instead of a one-size-fits-all lockout.
Five colors. Six sharp edges softened on purpose.
Curfew keeps the semantics boring while making the experience approachable enough to actually use.
No daemon. No account. No telemetry.
Curfew is one Go binary with managed shell hooks and local storage. The hot path stays fast and predictable.
Everything lives on your machine.
Thin adapters, real policy in the binary.
The shell hook only forwards `curfew check <cmd>`. Schedule evaluation, rules, friction, and history all stay in Go.
Supports zsh, bash, and fish.
Soft reminders or a real stop sign.
Choose presets or custom tiers with prompts, waits, passphrases, math, or combined challenges.
Different tiers for warning, curfew, and hard stop.
First match wins.
Mix exact command words, multi-word prefixes, and trailing `*` prefix patterns without clever parsing.
Allowlist entries always bypass curfew.
See what happened after hours.
Curfew records nightly adherence, blocked attempts, snoozes, overrides, and streak-friendly stats in local storage.
SQLite history plus lightweight runtime state.
Friendly enough to tweak without editing TOML all night.
Jump through Dashboard, Schedule, Rules, Override, History, and Stats from one Bubble Tea interface.
Designed for quick edits and clearer habits.
Set it once. Let the shell do the checking.
Curfew stays out of the way until your rules, schedule, and current tier say it’s time to slow down.
Set your quiet hours
Run Curfew once, then choose your bedtime, wake time, warning window, and how strict you want each tier to feel.
curfewInstall the shell hook
Curfew adds a managed block to your shell rc file so interactive commands get checked before they run.
curfew install --shell zshLet the night unfold locally
During warning and curfew windows, matching commands are allowed, warned, delayed, or blocked according to your config.
curfew statusThe setup is simple enough to remember half asleep.
Curfew keeps the config shape direct: schedule, grace, override behavior, rules, allowlist, and logging. No mystery toggles hiding somewhere else.
Rules
Match exact commands, multi-word prefixes, or a trailing `*` prefix, then let first match win.
Friction
Move from soft reminders to waits, passphrases, math, or a hard block when it’s time to really go to bed.
[schedule]
timezone = "auto"
[schedule.default]
bedtime = "23:00"
wake = "07:00"
[grace]
warning_window = "30m"
hard_stop_after = "01:00"
[override]
preset = "medium"
passphrase = "i am choosing to break my own rule"
[[rules.rule]]
pattern = "git push*"
action = "warn"Everything important stays on disk.
Curfew is intentionally small. No telemetry. No accounts. No server to keep alive while you’re trying to sleep.
Config
`config.toml`
Quiet hours, grace periods, override presets, rules, allowlist entries, and retention settings.
Runtime
`runtime.json`
Fast session state for snoozes, disabled nights, and the shell hot path where latency matters.
History
`history.db`
Local SQLite storage for nightly rollups, streaks, blocked attempts, overrides, and after-hours command history.
Bring a little bedtime structure to your terminal.
Install Curfew, configure your rules, and let the docs walk you through the details without getting preachy about it.
brew install iamrajjoshi/tap/curfew