🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
Desktop worktree manager for Claude Code and Codex
Jean gives you one place to run AI agent sessions, manage git worktrees, and keep context across projects. It works as a Tauri desktop app or a headless server, with browser access, terminal panes, GitHub and Linear integrations, and support for several local CLI agents.

Builders who want to manage multi-project agent work, worktrees, and chat sessions in one place.
You can keep agent work organized across projects instead of juggling separate terminals and sessions.
What it does
Worktree management
Creates, archives, restores, and deletes git worktrees, with support for linked projects and cross-project context.
Session management
Tracks multiple sessions per worktree, supports Plan/Build/Yolo modes, recaps, saved context, archiving, recovery, and auto-naming.
Multi-agent chat
Connects to Claude, Codex, Cursor, OpenCode, PI, Command Code, Grok, and Kimi with model, effort, prompt, and MCP support.
Magic commands
Runs commands for issue investigation, code review, commit messages, PR content, merge conflict resolution, and release notes.
GitHub and Linear integrations
Shows issues, PRs, security alerts, advisories, Dependabot work, and Linear issue context inside the app.
Web access
Serves the same UI over HTTP and WebSocket so you can use Jean from a browser or as a headless server.
Developer tools
Includes docked terminals, a command palette, diff viewers, file previews, and token usage tracking.
Customization
Supports themes, fonts, keybindings, prompts, and mobile swipe gestures.
How to get it
- 1Run
brew tap coollabsio/jean brew install --cask jean
- 2Interactive install (prompts for bind interface + port when a TTY is available)
curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh | sudo bash
- 3Non-interactive (defaults to 127.0.0.1:3456, or pass --host / --port)
curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh | sudo bash -s -- -y
- 4Or from a clone
sudo ./scripts/install-jean-server.sh --host 127.0.0.1 --port 3456 -y
README
Jean
A desktop AI assistant for managing multiple projects, worktrees, and chat sessions with Claude CLI, Codex CLI, Cursor CLI, OpenCode, PI, Command Code, Grok, and Kimi Code.
Tauri v2 · React 19 · Rust · TypeScript · Tailwind CSS v4 · shadcn/ui v4 · Zustand v5 · TanStack Query · Pierre Diffs · xterm.js
About the Project
Jean is an opinionated native desktop app built with Tauri that gives you a powerful interface for working with Claude CLI, Codex CLI, Cursor CLI, OpenCode, PI, Command Code, Grok, and Kimi Code across multiple projects. It has strong opinions about how AI-assisted development should work - managing git worktrees, chat sessions, terminals, GitHub and Linear integrations in one cohesive workflow.
No vendor lock-in. Everything runs locally on your machine with your own CLI installations.
For more information, take a look at jean.build.
Screenshots
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
Features
- Project & Worktree Management - Multi-project support, linked projects for cross-project context, git worktree automation (create, archive, restore, delete), custom project avatars
- Session Management - Multiple sessions per worktree, execution modes (Plan, Build, Yolo) with plan approval flows, session recap/digest, saved contexts with AI summarization, archiving with retention settings, recovery, auto-naming, canvas views
- AI Chat (Claude, Codex, Cursor, OpenCode, PI, Command Code, Grok, Kimi) - Model selection and thinking/effort levels with per-mode overrides, MCP server support, multi-agent collaboration, file picker & image attachments, chat search, notification sounds, custom system prompts, custom CLI profiles
- Magic Commands - Investigate issues/PRs/workflows, code review with finding tracking, AI commit messages, PR content generation, merge conflict resolution, release notes generation, customizable per-prompt model/backend/effort selection
- GitHub Integration - Dashboard with Issues, PRs, Security Alerts, and Advisories tabs, Dependabot investigation, checkout PRs as worktrees, auto-archive on PR merge, workflow investigation
- Linear Integration - Issue investigation, context loading, per-project API key and team configuration
- Developer Tools - Multi-dock terminal (floating, left, right, bottom), command palette, open in editor (Zed, VS Code, VSCodium, Cursor, Xcode, IntelliJ), git operations (status, stash, revert, fetch/merge with conflict detection), diff viewer (unified & side-by-side), file tree with preview, debug panel with token usage tracking
- Web Access - Every Jean instance (desktop or headless server) can expose the full UI over HTTP/WebSocket with token auth so you can use it from a browser on your network
- Customization - Themes (light/dark/system), custom fonts, customizable AI prompts, configurable keybindings, mobile swipe gestures
Installation
Download the latest version from the GitHub Releases page or visit jean.build.
Homebrew (macOS)
brew tap coollabsio/jean
brew install --cask jean
Building from Source
Prerequisites:
- Node.js
- Rust
- Windows only: In the Visual Studio Installer, ensure the "Desktop development with C++" workload is selected, which includes:
- MSVC C++ build tools
- Windows SDK (provides
kernel32.liband other system libraries required by Rust)
See CONTRIBUTING.md for full development setup and guidelines.
Platform Support
- macOS: Tested
- Windows: Not fully tested
- Linux: Community tested (Arch Linux + Hyprland/Wayland)
Web Access
Every Jean instance can run Web Access: an embedded HTTP + WebSocket server that serves the same UI in a browser. That applies to both:
| Mode | How you get Web Access |
|---|---|
| Native desktop (macOS / Windows / Linux) | Settings → Web Access - enable the HTTP server, set port/bind address, copy the token URL |
Headless server (jean-server) | Always on - the process is the Web Access endpoint |
Use it to open Jean from another machine on your LAN, a phone/tablet browser, or a remote host. Token authentication is on by default; keep it enabled for any non-localhost bind.
Network access (recommended: Tailscale)
Web Access binds a normal TCP port (default 3456). For access beyond the local machine, prefer a private mesh VPN rather than exposing the port to the public internet:
- Tailscale (recommended) - prefer
jean-server --host 127.0.0.1plustailscale serve --bg 3456so the browser gets real HTTPS (clipboard and other secure-context APIs work). Binding the Tailscale IP directly (--host tailscale) is HTTP-only and browsers will treat it as an insecure origin. - Other options: WireGuard, ZeroTier, SSH tunnel, or a reverse proxy with TLS
in front of
127.0.0.1
Keep token auth enabled, use a long random token
(openssl rand -base64 32), and avoid binding 0.0.0.0 on untrusted networks
unless you also terminate TLS and restrict who can reach the port.
Desktop app
- Open Settings → Web Access
- Enable HTTP server (optionally turn on Auto-start)
- Set Port and Bind address (
127.0.0.1for local only, LAN IP,0.0.0.0, or your Tailscale IP) - Open the shown URL (includes
?token=...) in a browser, or share it with devices that can reach that host
The native app can also connect to a remote Jean Web Access server (title bar server icon → Add remote) while keeping the desktop shell.
Headless server (jean-server)
Run Jean as a standalone Linux server with browser Web Access - no desktop window, GTK, or WebView required. Linux amd64 and arm64 only (glibc + OpenSSL 3; Ubuntu 22.04+ / Debian 12+ recommended).
Install (release binary + systemd)
Interactive install (prompts for bind interface + port when a TTY is available):
curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh | sudo bash
Non-interactive (defaults to 127.0.0.1:3456, or pass --host / --port):
curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh | sudo bash -s -- -y
Or from a clone:
sudo ./scripts/install-jean-server.sh --host 127.0.0.1 --port 3456 -y
The installer downloads the latest release, installs the binary, writes an env
file (host/port/token), and registers a systemd service. Re-run to upgrade;
existing tokens are preserved unless you pass --token.
Common options:
# Public bind with an explicit token
sudo ./scripts/install-jean-server.sh \
--host 0.0.0.0 \
--port 3456 \
--token "$(openssl rand -base64 32)" \
-y
# Tailscale-only bind (auto-detect Tailscale IPv4) - recommended for remote use
sudo ./scripts/install-jean-server.sh --host tailscale -y
# Current user only (user systemd unit)
./scripts/install-jean-server.sh --user-install --host 127.0.0.1 -y
Run manually
jean-server --host 127.0.0.1 --port 3456
# or with an explicit token:
jean-server --host 127.0.0.1 --port 3456 --token "$JEAN_TOKEN"
--host accepts localhost, presets (tailscale, lan, 0.0.0.0, …), or
any IP/hostname to bind only that interface. Docker images are also published
as ghcr.io/coollabsio/jean-server.
See docs/headless-server.md for systemd details, reverse proxies, updates, native remote connections (including Install via SSH from user + IP), and security notes.
Contributing
See CONTRIBUTING.md for development setup and guidelines.
Core Maintainer
| Andras Bacsai |
|---|
![]() |
Philosophy
Learn more about our approach: Philosophy
Star History
Files in the repo
- .ai
- .claude
- .commandcode
- .cursor
- .github
- .vscode
- data
- dist
- docs
- e2e
- jean-core
- public
- screenshots
- scripts
- src
- src-server
- src-tauri
- tasks
- .cursorignore
- .dockerignore
- .gitattributes
- .gitignore
- .prettierignore
- AGENTS.md
- bun.lock
- CLAUDE.md
- components.json
- CONTRIBUTING.md
- Dockerfile.server
- Dockerfile.server-runtime
- eslint.config.js
- GEMINI.md
- icon.sh
- index.html
- jean.json
- LICENSE.md
- logo_og.jpeg
- logo_og.jpg
- logo.png
- package.json
- playwright.config.ts
- prettier.config.js
- README.md
- SECURITY.md
- tsconfig.json
- tsconfig.node.json
- tsconfig.node.tsbuildinfo
- tsconfig.tsbuildinfo
- vite.config.d.ts
- vite.config.ts
- vitest.config.ts
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More tools
The best-benchmarked open-source AI memory system. And it's free.
Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.







