vimit gives your VibeMode quota a visual presence: one native Rust binary with CLI, TUI, GUI, and a floating overlay where remaining credits pulse as a living creature.
Polls GET /v1/me, summarizes credit/request windows (5h / 24h / 7d / 30d),
renders a live TUI dashboard (or JSON / compact text), sends desktop
notifications on threshold breach, and supports multiple VibeMode accounts.
No Python, Node, or SDK dependencies — just one executable.
# Download from releases, then:
vimit --demo # try without an API key
vimit --demo --monitor # full-screen dashboard
vimit --init # interactive setup wizard
vimit # real VibeMode limits
vimit --doctor # system diagnosticsVibe coders need to know whether they can safely keep a Codex/Droid/Claude session running or whether they are about to hit VibeMode limits. The tool is small, local-first, and intentionally avoids storing API keys or logging private prompts.
- Self-updates (
vimit update): check and update the CLI & GUI natively using GitHub Releases. The GUI includes a dedicated Updates section with a Check Now button and an Auto-check toggle. - Active endpoint failover: automatically failover between API routers, displaying an active connection badge (
api/r-api). - Trend sparklines: 15-day usage graphs rendered inside GUI quota cards.
- Stealth Mode: mask sensitive numeric values with
***in the GUI. - Living overlay creature: a floating, color-shifting quota indicator with compact/full modes, skin switching, pulse animation, Windows sounds on level changes, and calm sleep/recovery behavior instead of punishment mechanics.
- Multiple output modes: human, JSON (
--json), compact one-line (--compact). - Live TUI monitor (
--monitor): ratatui dashboard with gauges, sparklines, color themes. - Monitor presets:
full(2-column grid),compact(single-column),mini(one-liner). - 12 color themes: btop, dracula, catppuccin, tokyo-night, gruvbox, nord, high-contrast, protanopia, deuteranopia, tritanopia, solarized, monokai.
- Multi-account:
accounts.tomlprofiles, Tab switching in TUI, dropdown in GUI. - Desktop notifications (
--notify): alert on warning/danger, no-repeat logic. - Custom thresholds (
--warning,--danger,--threshold): per-window warning/danger levels. - CI integration (
--fail-on): exit non-zero when threshold is breached. - Watch mode (
--watch N): periodic polling every N seconds. - abtop integration (
--with-abtop): merge local Codex/Claude agent status. - Diagnostics (
--doctor): validate config, accounts, env, API connectivity. - Setup wizard (
--init): interactive config, .env, and API key setup. - GUI (
--features gui): Slint-based desktop window with stealth toggle, sparklines, account dropdown, informative system tray tooltip with exact usage percentages on hover, proper taskbar application icon on Windows, updates configuration panel, and floating creature overlay. - Safe by design: API key from env only, never logged, no telemetry.
stale cachemeansvimitcould not fetch fresh/v1/medata and is showing the last cached snapshot instead.offline APImeans the live API is currently unreachable; when cache fallback is available, output can show both states at once.- JSON exposes this explicitly with
data_status,api_status,stale, andoffline_duration_min.
Release binaries:
https://github.com/xodapi/vimit/releases
Pick the archive for your platform, unpack it, then run:
vimit --version
vimit --demo
vimit --demo --monitorWindows PowerShell:
.\vimit.exe --version
.\vimit.exe --demo
.\vimit.exe --demo --monitorIf you double-click vimit.exe in Explorer, the Windows console will stay
open after the command finishes. The Windows archive also includes
vimit-open.cmd, a double-click helper that always pauses at the end, and
vimit-monitor.cmd for launching the live monitor directly.
You can keep the VibeMode API key in a local .env file next to vimit
or in the directory where you run it. The release archive includes
.env.example.
cp .env.example .envEdit .env:
VIBEMODE_API_KEY=YOUR_VIBEMODE_API_KEY
VIBEMODE_API_BASE=https://r-api.vibemod.proThen run:
vimit
vimit --compact
vimit --jsonWindows PowerShell:
Copy-Item .env.example .env
notepad .env
.\vimit.exe --compactDouble-click option on Windows:
vimit-open.cmd
vimit-monitor.cmd
Lookup order:
--env-file <PATH>.envin the current directory.envnext to thevimitexecutable~/.vimit/.env(or%USERPROFILE%\.vimit\.envon Windows)
Real environment variables have priority over .env values. .env is ignored
by git and should not be committed.
Requirements: Rust stable.
git clone https://github.com/xodapi/vimit.git
cd vimit
cargo build --release --lockedBinary location:
- Windows:
target/release/vimit.exe - Linux/macOS:
target/release/vimit
Check system health:
vimit --doctorExample output:
vimit doctor — system diagnostics
[✓] config.toml found: /home/user/.config/vimit/config.toml
[✓] config.toml is valid TOML
[✓] accounts.toml: 2 account(s): dev, prod
environment:
HOME: /home/user
VIBEMODE_API_BASE: (not set, will use default)
VIBEMODE_API_KEY: (set)
testing API connection to https://r-api.vibemod.pro... OK (4 window(s))
status: all checks passed
vimit --initCreates config directory, config.toml with defaults, optionally sets up
.env with your API key, and tests the connection.
vimit supports native self-updating via GitHub Releases:
vimit update --check # Check if a new version is available
vimit update # Automatically download and install the latest releaseBackground checking is performed automatically in the background on TUI and GUI startup (if enabled). To avoid GitHub API rate limits, checks are cached for 24 hours in ~/.config/vimit/state.json.
In the GUI, a dedicated Updates section has been added to the settings panel:
- Check Now button to trigger an immediate check.
- Auto-check toggle (On/Off) to enable or disable automatic startup checks (setting is persisted in
state.json). - Orange "Update Available" badge next to the router status in the window header when a newer version is found.
Try without a key or network:
vimit --demo
vimit --demo --jsonUse a real VibeMode key:
export VIBEMODE_API_KEY="YOUR_VIBEMODE_API_KEY"
vimit
vimit --json
vimit --with-abtopWindows PowerShell:
$env:VIBEMODE_API_KEY = "YOUR_VIBEMODE_API_KEY"
.\vimit.exe
.\vimit.exe --jsonMock a saved /v1/me payload:
vimit --mock tests/fixtures/me.json
vimit --mock tests/fixtures/me.json --jsonWatch mode:
vimit --watch 60 --with-abtop
vimit --watch 60 --notifyLive monitor:
vimit --monitor
vimit --monitor --watch 10
vimit --monitor --with-abtop
vimit --monitor --notifyMonitor presets for different terminal sizes:
vimit --monitor --preset full # 2-column grid, sparklines (default)
vimit --monitor --preset compact # single-column, gauge + metrics
vimit --monitor --preset mini # one line per window, minimalPer-window thresholds:
vimit --monitor --threshold 5h=80:95,7d=90
vimit --fail-on warning --threshold 24h=85:98Format: KEY=WARNING[:DANGER] where KEY is one of 5h, 24h, 7d, 30d.
Per-window thresholds override --warning/--danger for those windows.
In monitor mode, press r to refresh immediately and q or Esc to quit.
It renders an abtop-style dashboard with VibeMode quota windows, warning
alerts, reset timers, remaining credits/requests, and optional local
Codex/Claude agent context from abtop --status-json.
API cache behavior:
- Successful live
/v1/meresponses are cached for 30 seconds by default. - Set
cache_ttl_secs = 120inconfig.tomlto change the cache TTL. --no-cachealways performs a live fetch and does not read or write the API cache, including stale fallback.- In monitor mode, pressing
rclears the current account/endpoint cache entry before forcing the next refresh.
Desktop notifications:
vimit --notify
vimit --watch 60 --notify
vimit --monitor --notify--notify sends a local desktop alert when a quota window escalates into
warning or danger. It keeps one in-process state map, so polling and
monitor loops do not spam the same alert on every refresh. De-escalation after a
window reset is silent.
CI/automation threshold:
vimit --fail-on warning
vimit --fail-on danger --json
vimit --warning 80 --danger 95 --fail-on warning
vimit --fail-on warning --ci-annotate--ci-annotate keeps normal stdout output intact and emits GitHub Actions-style
::warning / ::error lines to stderr for breached windows, so it can be used
in CI logs without adding hook orchestration or request mutation.
Compact one-line output for widgets/status bars:
vimit --compact
vimit --compact --with-abtopHuman output:
VibeMode limits
5h warning reset in 2h 30m
credits 39/50 (78.0%, left 11)
requests 610/1000 (61.0%, left 390)
JSON output:
{
"source": "vibemode",
"windows": [
{
"window": "5h",
"level": "warning",
"credits": { "used": 39.0, "limit": 50.0, "remaining": 11.0, "percent": 78.0 }
}
],
"abtop": null
}- API key is read from the environment variable
VIBEMODE_API_KEY(withNEUROGATE_API_KEYsupported as a fallback). - The key is never written to disk.
- Errors do not print the key.
- JSON output intentionally omits account identity fields.
--with-abtopusesabtop --status-json, which is the compact, privacy-preserving abtop payload without local paths, prompts, chat text, or session IDs.--monitoruses the same privacy-safe summaries and keeps the API key out of the terminal output.--notifyonly passes quota summary text to a local OS notification helper: Windows PowerShell toast/fallback popup, macOSosascript, or Linux/BSDnotify-send.- No telemetry, no external network calls except VibeMode
/v1/me.
Environment variables:
VIBEMODE_API_KEY: VibeMode API key (fallback:NEUROGATE_API_KEY).VIBEMODE_API_BASE: API base URL, defaulthttps://r-api.vibemod.pro(fallback:NEUROGATE_API_BASE).ABTOP_BIN: abtop binary path, defaultabtop.
CLI options:
vimit --helpIdeas, feature requests, and VibeMode/Codex/Droid workflow notes are welcome in GitHub Discussions:
https://github.com/xodapi/vimit/discussions
See ROADMAP.md for the current improvement backlog.
- Windows (x86_64)
- macOS (aarch64)
- Linux (x86_64, aarch64)
- Android/Termux — see docs/termux.md; native Slint Android spike is tracked in docs/android.md
jj is reasonable here only as an optional local workflow on top of the
existing Git repository. It can improve local iteration with operation log,
conflict recovery, and cleaner in-progress history, but it should not replace
the project's canonical GitHub flow.
Recommended stance:
- Use
jjonly if a developer or agent already prefers it locally. - Keep GitHub Issues, branches, PRs, and remote state managed through
git+gh. - Do not require
jjin CI, build scripts, onboarding, or AGENTS workflow. - Do not add
vcs-jjorvcs-coreunless a future automation issue proves they solve a concrete project problem.
Minimal issue workflow with jj:
jj git clone https://github.com/xodapi/vimit.git
cd vimit
gh issue view 138
git checkout -b issue-138-evaluate-optional-jujutsu-workflow
jj bookmark create issue-138-evaluate-optional-jujutsu-workflow -r @
# edit files, then verify the required check
cargo fmt --check
# when ready, sync the current jj commit to the Git branch and push normally
jj git push --bookmark issue-138-evaluate-optional-jujutsu-workflow
gh pr create --base main --title "docs(dev): evaluate optional Jujutsu workflow" --body "Closes #138"If you use jj, treat it as a personal productivity layer. The repository
still expects Git-compatible branch names, standard commits, and the same issue
assignment / PR review flow documented in AGENTS.md.
cargo test --locked
cargo clippy --all-targets -- -D warnings
cargo fmt --check
cargo run --locked -- --demo --json- Native Rust CLI and GUI (build with
--features gui). - VibeMode
/v1/mepolling with robust schema tolerance. - 5h / 24h / 7d / 30d credit and request windows.
- Human, JSON, and compact output modes with ANSI color coding.
- Full-screen ratatui monitor with gauges, sparklines, color coding.
- Monitor presets:
full,compact,minifor different terminal sizes. - 12 color themes including accessibility-optimized (protanopia, deuteranopia, tritanopia, high-contrast).
- Per-window thresholds:
--threshold 5h=80:95,7d=90. .envfile next to the binary or working directory.- Custom warning/danger thresholds.
- Desktop notifications with escalation tracking.
- Multi-account support via
accounts.toml(Tab switching in TUI, dropdown in GUI). - Demo/mock mode without a key.
- Optional local abtop integration.
--doctorsystem diagnostics.--initinteractive setup wizard.- Actionable error messages with suggestions.
- CI and release workflow for native binaries (Windows, Linux, macOS, ARM).
- PowerShell install/uninstall scripts.
- Termux/Android install guide.
Note: Sign up for VibeMode using this referral link to receive a $5 bonus on your account.
