Skip to main content

kim — keep in mind

Lightweight cross-platform reminder daemon for developers.
No UI. Config-driven. Runs in the background.

Documentation: pratikwayal01.github.io/kim
PyPI

kim demo


Install

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/pratikwayal01/kim/main/install.sh | bash

Windows (PowerShell)

powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/pratikwayal01/kim/main/install.ps1 | iex"

pip

pip install --break-system-packages kim-reminder

That's it. kim starts automatically on login.

Windows + pip: If kim is not found after install, run this once to add it to your PATH:

$p = python -c "import sysconfig; print(sysconfig.get_path('scripts','nt_user'))"
[Environment]::SetEnvironmentVariable("PATH",$env:PATH+";"+$p,"User")
$env:PATH += ";$p"

Usage

kim start          Start the daemon
kim stop           Stop the daemon
kim status         Show running reminders and config paths
kim list           List all reminders  (shows index #)
kim list -o        Also show pending one-shot reminders
kim logs           Tail the log file
kim edit           Open config in $EDITOR
kim add            Add a new reminder
kim remove         Remove a reminder  (by name or index)
kim enable         Enable a reminder
kim disable        Disable a reminder
kim update         Update a reminder
kim remind         One-shot reminder after a delay or at a time
kim interactive    Arrow-key TUI  (-i shortcut)
kim self-update    Update to latest release
kim uninstall      Remove kim completely
kim export         Export reminders to JSON or CSV
kim import         Import reminders from JSON or CSV
kim validate       Validate config file
kim slack          Show or test Slack configuration
kim sound          Manage notification sound
kim completion     Generate shell completions (bash/zsh/fish)

Recurring reminders

# Interval-based
kim add eye-break -I 30m -t "Eye Break" -m "Look away" -u critical
kim add water --every 1h

# Daily at a fixed time
kim add standup --at 10:00
kim add standup --at 10:00 --tz Asia/Kolkata

One-shot reminders

# Relative
kim remind "standup call" in 10m
kim remind "deploy window opens" in 2h 30m

# Absolute
kim remind "standup" at 10:00
kim remind "standup" at tomorrow 9am
kim remind "call" at friday 2pm
kim remind "deploy" at 2026-04-07 14:30 --tz America/New_York

# Urgency
kim remind "wake up!" in 5m --urgency critical

Fires once, runs in the background, frees your terminal immediately. Survives daemon restarts and reboots — stored in ~/.kim/oneshots.json.

Removing reminders

# Recurring — by name or index from `kim list`
kim remove water
kim remove 2

# One-shot — by index or message substring from `kim list -o`
kim remove 1 -o
kim remove "standup" -o

Config — ~/.kim/config.json

{
  "reminders": [
    {
      "name": "eye-break",
      "interval": "30m",
      "title": "Eye Break",
      "message": "Look 20 feet away for 20 seconds.",
      "urgency": "critical",
      "enabled": true
    },
    {
      "name": "standup",
      "at": "10:00",
      "timezone": "Asia/Kolkata",
      "title": "Standup",
      "message": "Time for standup!",
      "urgency": "normal",
      "enabled": true
    }
  ],
  "sound": true,
  "slack": {
    "enabled": false,
    "webhook_url": "https://hooks.slack.com/services/...",
    "channel": "#general"
  }
}
Field Values Description
name string Unique identifier
interval "30m", "1h", "1d", "90s" Recurring interval (required unless at is set)
at "HH:MM" Fire daily at a fixed time (required unless interval is set)
timezone IANA name e.g. "Asia/Kolkata" Timezone for at (default: local)
title string Notification heading
message string Notification body
urgency low / normal / critical Notification priority
enabled true / false Toggle without deleting
sound_file path Per-reminder sound file (overrides global)
slack object Per-reminder Slack override

Use kim validate to check your config. Use kim edit to open it in $EDITOR.


How it works

Platform Autostart Notifications
Linux systemd user service notify-send
macOS launchd agent osascript
Windows Task Scheduler PowerShell toast
  • Pure Python stdlib — zero runtime dependencies
  • Single scheduler thread — all reminders share one heapq event loop (~0.02 MB flat)
  • Atomic writes — all config and state files written via .tmp → rename
  • Secrets never logged — Slack tokens and webhook URLs are not written to ~/.kim/kim.log
  • Logs at ~/.kim/kim.log (5 MB rotating, 3 backups)

Uninstall

kim uninstall

Cancels pending one-shot reminders, removes autostart entries, deletes ~/.kim/ and the binary.

If kim is broken, use the standalone script:

curl -fsSL https://raw.githubusercontent.com/pratikwayal01/kim/main/uninstall.sh | bash

Start small. Keep it in mind.

Release files for kim-reminder 4.5.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kim-reminder 4.5.10
File Size Uploaded
kim_reminder-4.5.10.tar.gz 83.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kim-reminder 4.5.10
File Interpreter ABI Platform
kim_reminder-4.5.10-py3-none-any.whl Python 3 none any Details

Total release size:146.0 kB

Release files / kim_reminder-4.5.10.tar.gz

Download URL kim_reminder-4.5.10.tar.gz
Size 83.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a1d5c2a596d46e3a4dedb0d7c457bbfe757d1ed95d2f5a1ce361d7a094eda89d
BLAKE2b-256 checksum
How to use checksums
a173e64eca840948d81bb0538d459b9a1296f8a09a91bbebac87c4a056966bc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / kim_reminder-4.5.10-py3-none-any.whl

Download URL kim_reminder-4.5.10-py3-none-any.whl
Size 62.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b7909dcde2cd0115caa5168550ac1b66b8d266da9eb89525f73bf20cb476856
BLAKE2b-256 checksum
How to use checksums
d47e994c795c27ceefdd748c72767fb940cbe371f2e85196c534c9381bb0b2c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

4.5.10 This release

2 release files

4.5.9

2 release files

4.5.8

2 release files

4.5.7

2 release files

4.5.6

2 release files

4.5.5

2 release files

4.5.4

2 release files

4.5.3

2 release files

4.5.0

2 release files

4.4.0

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page