Concepts
How Jean2 works — server, clients, workspaces, sessions, and configuration.
Concepts
A quick tour of how Jean2 is structured. One server, any client, any number of workspaces.
The server
Jean2 is a single binary that runs as a background daemon on your machine. It handles everything — LLM communication, tool execution, session storage, and the API that clients connect to.
There's no container, no separate database process, no runtime to install. The binary bundles its own SQLite store, a built-in HTTP/WebSocket server, and the Bun runtime for running tools.
Clients
Clients connect to the server over WebSocket and REST. The protocol is the same whether the client is on the same machine or across the internet — local, Tailscale, VPN, or public.
| Client | Platform |
|---|---|
| Desktop | Native app (macOS, Windows) |
| Web | npx @jean2/client — any browser, any platform |
The desktop app and the web client are the same UI. Pick whichever is convenient.
Workspaces
A workspace is a directory on your machine that the agent works in. It's where tools read and write files, where the agent navigates, and where workspace-specific configuration lives.
You can have as many workspaces as you want. Switch between them instantly from any client.
Workspace-scoped configuration lives inside the workspace directory:
| Path | Purpose |
|---|---|
.jean2/mcp.json |
MCP server connections |
.agents/skills/ |
Skill definitions |
AGENTS.md |
Project-level instructions (injected into every session) |
An agent working in one workspace cannot see or use MCP connections, skills, or AGENTS.md from another workspace.
Sessions
A session is a single conversation with the agent. It has its own message history, its own preconfig (which defines the system prompt, tools, and model), and its own permission state.
Sessions belong to a workspace. When you create a session, you pick a preconfig — that determines what the agent can do in that session.
Session features
- Compact — LLM-powered conversation summarization to stay within context limits
- Fork — Branch any session at any message
- Revert — Undo to any previous point
- Interrupt — Cancel running generation (cascades to subagents)
- Queue — Queue messages while the agent is busy
Configuration
All configuration lives in ~/.jean2/:
~/.jean2/
.env # API keys
models.json # Model definitions and defaults
preconfigs/ # Agent personality presets
prompts/ # Reusable prompt templates
tools/ # Installed tools
AGENTS.md # Global instructions (every session, every workspace)
data/
agent.db # SQLite database (sessions, messages, permissions)
Per-workspace configuration lives in the workspace directory (see Workspaces above).
Preconfigs
A preconfig defines what an agent is — its system prompt, available tools, model preferences, and capabilities. When you create a session, you pick a preconfig, and that determines the agent's behavior.
Jean2 ships with a few defaults (General, Code, Code Planning, Explore). You can create your own — drop a markdown or JSON file in ~/.jean2/preconfigs/ and it appears in the preconfig picker immediately.
Jean2 adds no hidden system message. The system prompt is exactly what you write — this is where the magic happens.
See Preconfigs for the full schema and examples.
Tools
Tools are scripts the agent can call — file operations, shell commands, web fetching, search, and anything else you add. They execute as sandboxed child processes and communicate via JSON on stdin/stdout.
Jean2 ships with 12 built-in tools (installed by jean2 init). You can also write your own or connect external tools via MCP.
See Tools for the full list and Writing Tools to create your own.