No description
Find a file
Dunemask 08aa77e808 merge: ep/Apr20-2026/ModelSwitchRespawn
PTY respawn on model/tier switch + context-threshold escalation dialog.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 09:01:52 -06:00
demo style: biome format drift in demo/ and miscellaneous files 2026-04-11 14:17:05 -06:00
docs chore: clean up tray icon workarounds, keep recreate fix 2026-04-15 18:03:45 -06:00
resources chore: clean up tray icon workarounds, keep recreate fix 2026-04-15 18:03:45 -06:00
scripts style: format generate-icons.ts 2026-04-15 18:23:42 -06:00
src feat: respawn PTY on model/tier switch + context-threshold dialog 2026-04-20 09:01:39 -06:00
tests feat: respawn PTY on model/tier switch + context-threshold dialog 2026-04-20 09:01:39 -06:00
.gitignore chore: clean up round-4 icon dir, wt-* gitignore, stale comments 2026-04-10 08:07:02 -06:00
biome.json chore(biome): ignore wt-* worktrees so format doesn't see nested configs 2026-04-08 18:14:06 -06:00
bun.lock feat: open terminal links in default browser instead of jeff 2026-04-13 10:41:24 -06:00
bunfig.toml Initial baseline 2026-04-08 15:28:46 -06:00
CLAUDE.md docs: add AI documentation layer for agent context reduction 2026-04-10 14:51:54 -06:00
electrobun.config.ts feat: use jeff-dev naming throughout dev builds 2026-04-15 13:30:44 -06:00
INSPIRATION.md docs: clean up completed plan docs 2026-04-10 00:07:04 -06:00
INSTALL.md docs: add INSTALL.md with per-platform install instructions 2026-04-15 13:46:42 -06:00
package.json feat: add interactive indicator engine test harness 2026-04-13 20:22:44 -06:00
README.md chore: add path aliases, vite-tsconfig-paths, rewrite README 2026-04-10 08:14:34 -06:00
tsconfig.json feat: scaffold slop-for-pigs demo marketplace benchmark harness 2026-04-11 13:35:27 -06:00
vite.config.ts chore: add path aliases, vite-tsconfig-paths, rewrite README 2026-04-10 08:14:34 -06:00

jeff

A desktop companion for Claude Code. Run multiple claude sessions side-by-side as tabs, get notified when one needs your attention, and manage your Claude settings visually.

What it does

  • Tabbed sessions — open several claude conversations at once, each in its own PTY terminal
  • Attention indicators — colored dots on each tab show what's happening (red = working, blue = needs input, pink = you typed but didn't send)
  • OS notifications — get notified when claude finishes or asks a question while you're in another app
  • Patrol — background health monitor catches hung sessions, spinning loops, and context exhaustion
  • Settings editor — visual UI for indicators, patrol thresholds, roles, cost budgets, and keybinds
  • Roles — preset spawn profiles (model, effort, context tier, system prompt, tool restrictions)
  • Cost tracking — per-tab token usage and budget enforcement
  • Tray icon — shows how many tabs need attention at a glance
  • jeff CLI — open a new tab from any terminal with jeff (uses your current directory)

Install

bun install
bun run start

The first launch installs:

  • Hook bridge in ~/.claude/settings.json (backs up first)
  • jeff CLI binary at ~/.local/bin/jeff
  • Desktop entry at ~/.local/share/applications/jeff.desktop

jeff CLI

cd ~/code/my-project
jeff              # open a new claude session here
jeff --resume     # pick a previous session to resume

If jeff is already running, the CLI talks to it over a unix socket. If not, it launches jeff first.

Keyboard shortcuts

Shortcut Action
Ctrl+N New session (opens directory picker)
Ctrl+Shift+N New private session (no file access)
Ctrl+T Open external terminal at tab's cwd
Ctrl+[ / Ctrl+] Switch to previous / next tab

All shortcuts are configurable in Settings.

Indicator colors

Color Meaning
Red (solid) Idle or focused
Red (pulsing) Working (claude is responding)
Blue (pulsing) Needs attention (question or permission prompt)
Pink You typed something but didn't send it
Yellow Patrol warning (quiet too long, spinning)
Dark red Hung (no output for 30s)

Logs

Structured JSONL logs with rotation at ~/.config/jeff/logs/:

  • indicator.jsonl — indicator state changes and notification decisions
  • crash.jsonl — unhandled exceptions
  • server.jsonl — PTY spawn/exit, hook events

Configuration

All config lives at ~/.config/jeff/config.json and is editable through the Settings UI. Indicator events, patrol thresholds, roles, cost budgets, and keybinds are all configurable.

Requirements