Explore
Topics
Collections
Documents
FAQ
GitHub
Explore repos
Explore
Topics
Collections
Documents
FAQ
GitHub
Explore repos
Explore
/
TypeScript
/
jean
coollabsio
coollabsio/jean
A dev environment for AI agents.
View on GitHub
Website / Demo
Copy link
Back to listing
1.4k
stars
171
forks
57
contributors
TypeScript
README.md
View on GitHub
<div align="center"> # Jean A dev environment for AI agents. Run Claude, Codex, Cursor, OpenCode, Pi, Command Code, Grok, Kimi Code, Antigravity, and Muse in parallel - each in its own git worktree - on your laptop or your own server. Tauri v2 · React 19 · Rust · TypeScript · Tailwind CSS v4 · shadcn/ui v4 · Zustand v5 · TanStack Query · Pierre Diffs · xterm.js </div> ## About the Project Jean is an opinionated AI agent workspace. It has strong opinions about how AI-assisted development should work: every task gets its own git worktree, agents run in parallel, and git work, reviews, terminals, and GitHub, Linear, and Sentry integrations live in one cohesive workflow. Run it as a native desktop app, as a headless `jean-server` on Linux, or both: the desktop app shows local and remote projects together in one sidebar, grouped by server. No vendor lock-in. Jean uses your own CLI installations and subscriptions, and everything runs on machines you control. For more information, take a look at [jean.build](https://jean.build). ## Screenshots <p align="center"><img src="screenshots/worktrees.webp" width="820" alt="Project view with worktrees, linked pull requests, diff stats and labels" /></p> <table> <tr> <td><img src="screenshots/recent-sessions.webp" width="400" alt="Agent session with a recap, next to a second session tab" /><br /><sub><b>Parallel sessions with recaps</b></sub></td> <td><img src="screenshots/terminal.webp" width="400" alt="Terminal panel next to an agent session" /><br /><sub><b>Built-in terminal</b></sub></td> </tr> <tr> <td><img src="screenshots/diff-review.webp" width="400" alt="Split diff viewer with a file list" /><br /><sub><b>Diff review with line comments</b></sub></td> <td><img src="screenshots/magic-commands.webp" width="400" alt="Magic command palette" /><br /><sub><b>Magic commands</b></sub></td> </tr> <tr> <td><img src="screenshots/magic-prompts.webp" width="400" alt="Magic Prompts settings with backend, model, reasoning and mode" /><br /><sub><b>Magic prompts</b></sub></td> <td><img src="screenshots/issues.webp" width="400" alt="New session dialog with open GitHub issues" /><br /><sub><b>Start from an issue, PR, Linear or Sentry</b></sub></td> </tr> </table> ## Features - **Project & Worktree Management** - Multi-project support, linked projects for cross-project context, git worktree automation (create, archive, restore, delete), worktree labels and filters, custom project avatars - **Session Management** - Multiple sessions per worktree, Recent tab across all projects, execution modes (Plan, Build, Yolo) with plan approval flows, `/goal` tracking, session recap/digest, saved contexts with AI summarization, archiving with retention settings, recovery, auto-naming, canvas views - **AI Backends** - Claude, Codex, Cursor, OpenCode, Pi, Command Code, Grok, Kimi Code, Antigravity (beta), and Muse. 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 & Prompts** - Investigate issues/PRs/workflows/security alerts, code review with finding tracking, AI commit messages, PR content generation, merge conflict resolution, release notes generation; every prompt is editable with its own backend, model, effort, and mode - **Mr. Robot (beta)** - Polls open GitHub issues, creates one worktree per issue, drafts a plan, and can execute approved plans - **Integrations** - GitHub (Issues, PRs, Security Alerts, Advisories, Dependabot, checkout PRs as worktrees, auto-archive on merge), Linear, Sentry, CodeRabbit - **Developer Tools** - Multi-dock terminal (floating, left, right, bottom), built-in browser (desktop app), 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) with line comments, file browser with preview and editing (`Cmd/Ctrl+Shift+B`), usage and token tracking - **Opinionated Plugins** - One-click RTK (cuts tool-output tokens 60-90%) and Caveman (terse Claude replies) - **Local + Remote** - Add any number of `jean-server` instances to the desktop app (or install one over SSH); their projects appear next to your local ones and every action runs on the server that owns the project - **Web Access** - Every Jean instance (desktop or headless server) can serve the full UI over HTTP/WebSocket with token auth, including on phones - **Customization** - Themes (light/dark/system), custom fonts, configurable keybindings, mobile swipe gestures ## Installation Download the latest version from the [GitHub Releases](https://github.com/coollabsio/jean/releases) page or visit [jean.build](https://jean.build). ### Homebrew (macOS) ```bash brew tap coollabsio/jean brew install --cask jean ``` ### Building from Source Prerequisites: - [Node.js](https://nodejs.org/) - [Rust](https://www.rust-lang.org/tools/install) - **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.lib` and other system libraries required by Rust) See [CONTRIBUTING.md](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](https://tailscale.com/)** (recommended) - prefer `jean-server --host 127.0.0.1` plus `tailscale serve --bg 3456` so 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 1. Open **Settings → Web Access** 2. Enable **HTTP server** (optionally turn on **Auto-start**) 3. Set **Port** and **Bind address** (`127.0.0.1` for local only, LAN IP, `0.0.0.0`, or your Tailscale IP) 4. Open the shown URL (includes `?token=...`) in a browser, or share it with devices that can reach that host ### Local + remote in the desktop app The desktop app can work with any number of Jean servers at the same time: 1. Open the server menu at the top of the project sidebar → **Connections** (onboarding also offers this step) 2. Click **Add remote** and either: - **Install via SSH** - enter SSH user, host/IP, and ports; Jean installs `jean-server` on that machine for you, or - **Existing URL** - paste the Web Access URL and access token 3. Projects from Local and every enabled remote appear together in one sidebar, grouped by server. Use the **All servers** filter to focus on one host. There is no switching: sessions, terminals, file previews, and git actions run on the server that owns the project. Uncheck **Include in combined dashboard** to hide a server without removing it. ### 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): ```bash 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`): ```bash curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh | sudo bash -s -- -y ``` Or from a clone: ```bash 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: ```bash # 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 ```bash 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](docs/headless-server.md) for systemd details, reverse proxies, updates, and security notes. ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines. ## Core Maintainer | Andras Bacsai | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | <img src="https://github.com/andrasbacsai.png" width="200px" alt="Andras Bacsai" /> | | <a href="https://github.com/andrasbacsai"><img src="https://api.iconify.design/devicon:github.svg" width="25px"></a> <a href="https://x.com/heyandras"><img src="https://api.iconify.design/devicon:twitter.svg" width="25px"></a> <a href="https://bsky.app/profile/heyandras.dev"><img src="https://api.iconify.design/simple-icons:bluesky.svg" width="25px"></a> | ## Philosophy Learn more about our approach: [Philosophy](https://coollabs.io/philosophy/) ## Star History [](https://star-history.com/#coollabsio/jean&Date)
Live Chat