Skip to content

lba-studio/n-cli

Repository files navigation

✉️ Notification CLI (n-cli) - Send notifications to yourself through the command line

Why stare at your laptop when you can go make yourself a coffee and have your computer/agent let you know when it's done compiling that monstrous 4GB monorepo?

🚀 Features

  • Works out-of-the-box - no need to go through any external service (other than your chat apps, of course)
  • Coding agent integration – get notifications when Cursor, Codex, or Claude Code finishes its work or needs your approval
  • Desktop notification
  • Discord notification through Discord webhooks
  • Slack notification through Slack workflow webhooks
  • Custom webhook notification to any HTTP endpoint with configurable payloads and headers
  • [Planned] Mobile app notification through our mobile app

Do open an issue if you're interested in a notification channel being implemented.

👨🏻‍💻 Installation

Through go install (easiest if you have Go 1.25+ installed):

go install github.com/lba-studio/n-cli@latest

If you don't have Go installed: download the latest release for your machine here: Releases

Which one should I download?

{version} refers to the current version of n-cli.

MacOS Apple Silicon MacOS Intel Windows Intel 64-bit
n-cli-{version}-darwin-arm64.tar.gz n-cli-{version}-darwin-amd64.tar.gz n-cli-{version}-windows-amd64.tar.gz

*Open an issue / PR if this table is wrong, thank you!

🐈 Usage

n-cli --help

# send "My message here" to your configured destinations. if you haven't configured n-cli, we'll setup a config for you
n-cli send My message here
n-cli s My message here

# example - make build takes 20 minutes to complete
make build; n-cli s "Build is done, stop making coffee"

# alternatively, run your shell command through n-cli
n-cli run make build

# make sure to use `--` if you'd like to pass in flags
n-cli r -- make build --whatever-args-i-have-here

# pro tip: you can set an alias to make the whole command shorter
alias n="n-cli s"
make build; n Build is done;

# integrations with LLM agents
n-cli setup cursor       # set up Cursor hooks so you get notified when the agent finishes or session ends
n-cli setup codex        # set up Codex hooks so you get notified when the agent finishes or needs approval
n-cli setup claude-code  # set up Claude Code hooks so you get notified when the agent finishes or needs approval
n-cli setup codex --ignored-events=PermissionRequest # skip notifications for selected hook events

# useful commands
n-cli init # optional: initializes & configures n-cli without running anything
n-cli where config # where is your config?
n-cli version # get version

🔌 Integrations

Cursor Agent

Get notifications when the Cursor Agent stops or when the session ends.

n-cli setup cursor # registers n-cli hook cursor in ~/.cursor/hooks.json
n-cli setup cursor --ignored-events=sessionEnd

Known Cursor hook events registered by n-cli: stop, sessionEnd.

Codex

Get notifications when Codex finishes a turn (Stop) or is waiting for your approval (PermissionRequest).

n-cli setup codex # registers n-cli hook codex in ~/.codex/hooks.json
n-cli setup codex --ignored-events=PermissionRequest

After setup, restart Codex and review/trust the hooks with /hooks if prompted. Ensure n-cli stays on your PATH in the shell environment Codex uses.

Known Codex hook events registered by n-cli: Stop, PermissionRequest.

Claude Code

Get notifications when the Claude Code agent finishes (Stop) or needs your approval (Notification with permission_prompt).

n-cli setup claude-code # registers n-cli hook claude-code in ~/.claude/settings.json
n-cli setup claude-code --ignored-events=Notification

After setup, restart Claude Code and review/trust the hooks with /hooks if prompted. Ensure n-cli stays on your PATH in the shell environment Claude Code uses.

Known Claude Code hook events registered by n-cli: Stop, Notification.

--ignored-events accepts comma-separated event names. Event matching is exact and case-sensitive against hook_event_name, and unknown future event names are allowed.

📝 Configuration

Default config is at ~/.n-cli/config.yaml

system: # optional - controls desktop/system notifications
  disabled: true # if true, n-cli won't send system notifications

discord: # if missing, n-cli won't use Discord as a notification channel
  # https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
  webhookUrl: https://discord.com/api/webhooks/{yourwebhookurlhere} # required
  messageFormat: "<@1234> {{message}}" # optional

slack: # if missing, n-cli won't use Slack as a notification channel
  # you can create one by following the steps here https://slack.com/intl/en-gb/help/articles/360041352714-Create-workflows-that-start-with-a-webhook
  # must have "message" as a variable. sample payload to the webhook: { "message": "{{message}}" }
  webhookUrl: https://hooks.slack.com/triggers/ABCDEFG123/123456789/whateverstringishere # required
  messageFormat: "{{message}}" # optional

customs: # if missing, n-cli won't use custom webhooks as a notification channel
  - name: pagerduty # optional - custom label shown in notification output (default: "custom[0]", "custom[1]", etc.)
    targetUrl: https://api.example.com/webhook # required - the webhook URL to call
    payloadTemplate: '{"text": "{{message}}", "priority": "high"}' # required - template with {{message}} placeholder
    method: POST # optional - HTTP method (default: POST), case-insensitive
    headers: # optional - custom HTTP headers
      Authorization: Bearer your-token-here
      X-Custom-Header: custom-value
  - name: monitoring
    targetUrl: https://n-cli.sh/my_cool_topic_here
    payloadTemplate: 'Alert: {{message}}'

hooks: # optional - per-agent hook notification preferences
  codex:
    setup: true
    ignored_events:
      - PermissionRequest
  claude_code:
    setup: true
    ignored_events:
      - Notification
  cursor:
    setup: true
    ignored_events:
      - stop

About

✉️ Send notifications - Discord, Slack, desktop, whatever - through your terminal. Integrates with popular LLM tools such as Codex, Claude Code and Cursor.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages