Installation¶
Jean-Michel is intended to be installed and used from another repository.
Option 1: Install from PyPI¶
From your target project root:
uv add jean-michel
Then use the CLI:
uv run jm --help
Option 2: Install from a Local Path (development phase)¶
If you are iterating locally on Jean-Michel and want to consume it from another repo:
uv add --editable /absolute/path/to/jean-michel
Then:
uv run jm --help
Conversation DB Path¶
Jean-Michel stores conversation data in DuckDB.
You can force a specific database path with:
JEAN_MICHEL_DB_PATH=/path/to/your/project/.jean-michel/storage.duckdb uv run jm lm
If this variable is not set, the default path is:
.jean-michel/storage.duckdb
API Port Strategy¶
By default, Jean-Michel computes a deterministic API port per repository (range 5600-6599) from repository identity.
This avoids port collisions when multiple repositories use Jean-Michel on the same machine.
To force a specific port:
JEAN_MICHEL_API_PORT=5656 make api
Coverage Command¶
Coverage is computed in an isolated worktree at the selected commit.
Default command:
uv run pytest --cov --cov-report=xml
Override command when needed:
JEAN_MICHEL_COVERAGE_CMD="uv run pytest --cov --cov-report=xml --cov=your_package" uv run jm api
You can also update the command at runtime from:
- Repository tab in the web app
- API endpoints:
GET /api/coverage/command,POST /api/coverage/command - MCP tools:
get_coverage_command,set_coverage_command