SentriPet-AI

skill
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

A desktop pet that shows how much of your AI plan is left (Claude, Codex, Copilot…) and nudges you to use it before it resets. Windows · macOS · Linux

README.md

SentriPet

English | 繁體中文

CI
Release
License: MIT

A desktop pet that shows how much of your AI plan is left — and nudges you to use it before it resets.

SentriPet finds the AI tools on your computer (Claude, Codex, Copilot…) and turns each one into a little pet
that shows the quota left and when it resets, so you don't keep opening Settings → Usage. When a weekly quota
is about to reset with plenty left, the pets get nervous and remind you to use it instead of letting it go to waste.
Runs on Windows, macOS and Linux.

Demo: jelly pets showing the quota left on Claude, Codex and Copilot; getting nervous when quota is about to reset unused; then the other seven looks

Why SentriPet

  • See what's left at a glance — the big number is the shortest quota (e.g. 5 hours), the bars below are the weekly ones, with a reset countdown
  • "Use it before it resets" nudges — besides warning you when a quota runs low, SentriPet tells you when you're about to waste a weekly quota
  • Eight looks to match your mood: jelly pets, frosted glass, pixel RPG, hacker terminal, race gauges, magic potions, neon city, sticky note
  • Claude, Codex, Copilot, Ollama out of the box, anything else through a small JSON plugin
  • Private by design — reads only the usage numbers the tools keep on your computer; never reads or sends your sign-in credentials
  • Five languages: English, 繁體中文, 简体中文, 日本語, 한국어 (follows your system language)
  • Drag it to any screen; starts at sign-in; hides itself while you watch videos or play in full screen
  • Light: about 110 MB of memory and well under 1% CPU

Screenshots

Eight looks (right-click the pet → Change look)

The eight looks: Jelly Pet, Minimal Glass, Pixel Hero, Hacker Terminal, Race Gauge, Magic Potions, Neon City, Sticky Note

Hover over a pet for every quota, its reset time, where the numbers come from and how fresh they are.
Quota about to expire unused? The pets get nervous (sweat, alarm clocks, blinking bars) and the card says so.

Hover card Nervous jelly pets when quota is about to expire unused

Right-click menu and settings (double-click the pet to open the settings)

Right-click menu with the looks submenu Settings page

Languages (right-click menu → Language)

English, Japanese and Korean

Install

With a package manager (recommended)

Windows (Scoop) — the pet appears right after the install; update with scoop update sentripet.

scoop bucket add sentripet https://github.com/daven55663/SentriPet-AI
scoop install sentripet

macOS (Homebrew) — installs to Applications; update with brew upgrade --cask sentripet.

brew tap daven55663/sentripet https://github.com/daven55663/SentriPet-AI
brew install --cask sentripet

SentriPet is not signed with an Apple Developer ID; the Homebrew cask removes the download quarantine,
so macOS does not block it as coming from an unidentified developer.

Download

Get the latest version from Releases:

System File Requires
Windows SentriPet-<version>-win-x64.zip Windows 10 / 11
macOS, Apple silicon (M1–M4) SentriPet-<version>-osx-arm64.zip macOS 12 or later
macOS, Intel SentriPet-<version>-osx-x64.zip macOS 12 or later
Linux SentriPet-<version>-linux-x64.tar.gz x64, X11 or XWayland desktop

Each package contains everything it needs; you don't have to install .NET.

Windows

  1. Unzip SentriPet-<version>-win-x64.zip into a folder you keep (e.g. %LOCALAPPDATA%\Programs\SentriPet).
  2. Run SentriPet.exe. If Windows says Windows protected your PC, click More info → Run anyway (the program is not code-signed).
  3. The pet appears in the bottom-right corner, with a jelly icon in the system tray. SentriPet adds itself to the
    Start menu and starts when you sign in (you can turn that off in its right-click menu).

From source (needs the .NET 10 SDK): git clone this repository and run
install.cmd; it builds SentriPet, installs it to %LOCALAPPDATA%\Programs\SentriPet and starts it (uninstall.cmd removes it).

macOS

  1. Unzip the package for your Mac (osx-arm64 for Apple silicon, osx-x64 for Intel) and drag SentriPet.app into Applications.
  2. First start: because the app is not signed with an Apple Developer ID, macOS blocks it. Run this once in Terminal:
    xattr -dr com.apple.quarantine /Applications/SentriPet.app
    
    or open it once (it gets blocked), then go to System Settings → Privacy & Security, scroll down and allow SentriPet
    (up to macOS 14 you can also right-click SentriPet.app → Open). Not needed when you install with Homebrew.
  3. The pet appears on your desktop with a jelly icon in the menu bar (not in the Dock). macOS may ask whether SentriPet may send notifications.

Linux

tar xzf SentriPet-<version>-linux-x64.tar.gz
cd SentriPet-<version>-linux-x64
./install.sh

install.sh installs to ~/.local/share/sentripet, adds SentriPet to the application menu and starts it (no root needed).

  • The background is transparent on desktops with a compositor (GNOME, KDE, Xfce and most others).
  • On GNOME, the tray icon needs the AppIndicator and KStatusNotifierItem Support extension; without a tray, use the pet's right-click menu.
  • Notifications use notify-send (Debian/Ubuntu: sudo apt install libnotify-bin).
  • There is no Claude desktop app for Linux: to see Claude's usage, turn on Connect the Claude Code status line (see the FAQ).

Update and uninstall

  • Update: scoop update sentripet / brew upgrade --cask sentripet (quit SentriPet first: right-click → Quit).
    A downloaded copy: replace the files with the new version (on Linux, run install.sh again). Your settings are kept.
  • Uninstall: turn off Start at sign-in in the right-click menu → Quit, then scoop uninstall sentripet /
    brew uninstall --cask sentripet, or delete the program and its settings folder (see File locations).

Using SentriPet

First start

SentriPet looks for AI tools on your computer and every one it finds becomes a pet that says hello. To read the usage it needs:

  • Claude — the Claude desktop app running (it records the usage every 15 minutes; while you use Claude Code, SentriPet
    estimates the usage in between), or Settings → AI services → Connect the Claude Code status line for the official
    numbers straight from Claude Code (the only way on Linux)
  • Codex — the Codex app, the VS Code extension or the codex CLI, signed in with a ChatGPT account
  • Copilot — Copilot CLI used at least once (it leaves a quota cache)

Settings → AI services shows why an AI was not detected; anything else can be added with a plugin.

Controls

Action What happens
Drag Move it (snaps to screen edges); the position is remembered
Click The pet answers
Hover Details: every quota, reset times, data source
Right-click Menu: change look (each look with its mood, or leave it to fate), language, size, opacity, move to screen, click-through…
Double-click Settings
Tray / menu-bar icon Left click shows/hides the pet; right click opens the menu (turn click-through off here). The jelly in the icon is as full as your lowest quota; a blue dot means an AI is working

Settings

Section What you can do
Looks Live previews of the eight looks; a random look every day
Appearance Size, opacity, always on top, hide in full screen, click-through, talking, power saving
AI services What was detected for each AI and the numbers it reads; turn AIs on or off; Codex refresh rate; Claude weekly reset time, the Claude Code status line, live estimate
Reminders Quota notifications, "nudge me to use up weekly quota", warning and critical thresholds
General Language, start at sign-in, open the settings / log / program folder

Reading the pets

  • The big number is always the shortest quota (5 hours for Claude and Codex), so it doesn't jump between the 5-hour
    and the weekly quota; the weekly quota is the small bar. The face follows the tightest quota: happy with plenty left,
    sweating when it runs low, asleep when it's used up.
  • The line below is the reset countdown and says which quota it is (5h resets in 2h 11m).
  • A ≈ in front of a number (~ on Windows) marks an estimate: between two records of the Claude desktop app,
    SentriPet estimates Claude's usage from Claude Code's token counts.
  • Numbers that are getting old (say, Copilot CLI not used for a while) are marked old.

"Use it before it resets"

When a weekly or monthly quota is about to reset with a lot left, the pets nudge you to use it. There's no extra text on
the widget: the bar that's about to expire blinks and the pet's face changes; the hover card has the details.

Until the reset Left The pet
2 days 30% or more The bar blinks slowly; raised eyebrows, glances at its alarm clock; says something about once an hour
Last day 10% or more Faster blinking, mouth open, sweating, jumps when the alarm rings; about every 25 minutes
Last 6 hours 5% or more Fast blinking, trembling, the alarm rings non-stop; about every 12 minutes

Each new level shows one notification (not repeated after a restart). The pets never interrupt while an AI is working, and
don't nudge while the 5-hour quota is used up (you couldn't use it anyway). Turn it off in the right-click menu or in Settings → Reminders.

Languages

English, 繁體中文, 简体中文, 日本語 and 한국어. Auto (the default) follows your system's display language.
Switch in the right-click menu → Language or in Settings → General; it changes right away. The Claude weekly reset
time can be typed in any of them: Thu 23:00, 週四 23:00, 周四 23:00, 木曜日 23:00, 목요일 23:00.

Translations live in src/Lang/<language>.json (the Traditional Chinese text in the code is the key; keep {0}, {name}
and the like). The tests check that every sentence is translated and the placeholders match.

FAQ

Claude isn't detected / says it can't find usage records
Start the Claude desktop app and it starts recording. On Linux there is no desktop app: turn on Connect the Claude Code status line.

What does "Connect the Claude Code status line" do?
After every reply Claude Code hands the official usage and reset times to its status line command. With this option on,
SentriPet sets itself as that command in ~/.claude/settings.json (backing the file up to settings.json.sentripet-backup
first) and keeps the official numbers:

  • On Linux this is how SentriPet reads Claude's usage; on Windows and macOS the reset times become the official ones instead of estimates.
  • Your own status line keeps showing (SentriPet runs your original command); without one, the status line shows the quota left.
    Turning the option off restores your settings exactly.
  • The numbers update while you use Claude Code; usage from claude.ai, the phone or the desktop app shows up the next time you use Claude Code.
  • Needs a Pro or Max plan (with an API key Claude Code doesn't provide these numbers).

Claude's reset time is a little off
The Claude desktop app's records don't include reset times, so SentriPet estimates them from the history. Connect the Claude
Code status line for the official times, or type the time shown on Claude's Settings → Usage page once into
Settings → AI services → Claude weekly reset time (e.g. Thu 23:00).

The pet is in the way
Turn on Click-through in the right-click menu and clicks go straight through it (turn it off from the tray icon).
You can also make it smaller or move it to another screen.

The pet disappeared in full screen
That's Hide in full screen (Windows, Linux); it comes back when you leave full screen, or turn it off in Settings → Appearance.
On macOS full-screen apps live in their own space, where the pet doesn't show anyway.

I hid it by accident
Click the tray icon, or start SentriPet again (a second start brings the running pet back).

Where the numbers come from

Everything stays on your computer. SentriPet never reads or sends sign-in credentials.

AI Source How often
Claude The Claude desktop app's own plan-usage-history.json (the same numbers as Settings → Usage), plus the token counts in Claude Code's local transcripts (numbers only, never the content); with the status line connected, the official usage and reset times Claude Code hands to it The desktop app writes about every 15 minutes; in between, SentriPet estimates from Claude Code's tokens (calibrated on your own history, about 1 percentage point off in tests); the status line updates after every Claude Code reply
Codex The official codex app-server (account/rateLimits/read), plus the rate limits in ~/.codex/sessions Every 5 minutes by default; the local records update live while you use Codex
Copilot Copilot CLI's quota cache When you use Copilot CLI
Ollama http://127.0.0.1:11434 (no quota, shows the loaded models) 30 seconds
Others Gemini CLI, Cursor, Windsurf, LM Studio… are detected and listed in the settings; add their usage with a plugin —

Other AIs (plugins)

Put a JSON file in the settings folder's providers directory and a new pet appears. A plugin can run a program that prints
JSON, call an HTTP API, or read a JSON file. See examples/providers/README.md
(Settings → AI services → Open plugins folder copies the examples there).

Development

SentriPet is written in C# (.NET 10) with Avalonia: one code base for Windows, macOS and Linux.
The Windows-only 1.x version (WPF) is in the git tag v1.4.0.

src/Core, src/Providers    usage model, one data source per AI, reminders, translations (no UI code)
src/Lang                   translations
src/Tests                  core tests
xplat/SentriPet.Desktop    the app: 8 looks, hover card, settings page, tray, per-system integration (Integration.cs)
xplat/SentriPet.Tests      runner for the core tests
bucket/, Casks/, packaging/winget/   Scoop, Homebrew and winget manifests (written by packaging/update-manifests.py)

With the .NET 10 SDK:

dotnet build SentriPet.slnx -c Release
dotnet run -c Release --project xplat/SentriPet.Desktop            run it
dotnet run -c Release --project xplat/SentriPet.Desktop -- --dev   separate settings, never touches autostart
xplat/package.sh win-x64                                           package (also osx-arm64, osx-x64, linux-x64)
  • A new look: a class deriving from Theme in xplat/SentriPet.Desktop/Themes, added to ThemeCatalog.All.
  • A new built-in AI: a class deriving from Provider in src/Providers, added to ProviderRegistry.
  • --lang en forces a language; --dev --show-detail claude keeps one hover card open for 45 s.
  • --snapshot <dir> draws every look, the hover cards, the bubble and the settings page with sample data to PNG (no display needed);
    --demo <file.gif> --lang en makes the demo at the top of this page.
  • --probe <file> writes a detection and usage report.
Tests What Checks
xplat/SentriPet.Tests Core, every data source (sample files and local fake servers, never your real data), reminders, translations, the Claude Code status line 396
SentriPet --selftest <file> The eight looks, the pets' faces, hover card and placement, bubble, menu, settings page, languages, tray icon, autostart, notifications, single instance, the demo GIF 86
SentriPet --dev --smoke-test <file> Runs the real app for 15 s: window shown, on screen, bottom-right on first start, animating, tray icon, no errors 7

On every push, CI builds and runs all tests on Windows,
macOS and Linux (on Linux the smoke test runs on a virtual display), renders the screenshots and builds the packages.
Pushing a v* tag runs the Release workflow: every package is built on its own system and
self-tested before the release is published; then the Scoop, Homebrew and winget manifests are updated and SentriPet is
installed through Scoop and Homebrew and self-tested again (Package managers).
The development log (in Chinese) is docs/DEVLOG.md.

File locations

Windows macOS Linux
Program %LOCALAPPDATA%\Programs\SentriPet\ (Scoop: ~\scoop\apps\sentripet\) /Applications/SentriPet.app ~/.local/share/sentripet/
Settings and log %APPDATA%\SentriPet\ ~/Library/Application Support/SentriPet/ ~/.config/SentriPet/
Plugins %APPDATA%\SentriPet\providers\ ~/Library/Application Support/SentriPet/providers/ ~/.config/SentriPet/providers/
Autostart SentriPet in the registry key HKCU\…\Run ~/Library/LaunchAgents/com.sentripet.app.plist ~/.config/autostart/sentripet.desktop
Menu entry SentriPet in the Start menu — ~/.local/share/applications/sentripet.desktop

The settings file is settings.json, the log logs/app.log.

License

MIT © 2026 歐育典

Yorumlar (0)

Sonuc bulunamadi