Upgrading from 1.x
markitai 2.0 is 1.x rewritten in Rust: one native program, no Python, no extras. The commands, ~/.markitai (configuration, .env, caches, history) and the output layout stay.
Replace 1.x
bash
curl -fsSL https://markitai.dev/setup.sh | shpowershell
powershell -ExecutionPolicy ByPass -c "irm https://markitai.dev/setup.ps1 | iex"pip, pipx and uv get 2.0 only on the platforms with wheels; elsewhere they find nothing (PyPI no longer has 1.x) and leave an installed 1.x as it is.
Going back to 1.x
Uninstall 2.0, then install 1.2.0 from its Git tag, as setup suggests for a 1.x MARKITAI_VERSION (pymupdf4llm 2 breaks its PDFs):
bash
uv tool install "git+https://github.com/Ynewtime/[email protected]#subdirectory=packages/markitai" --with "pymupdf4llm<2"What to check
Components
- The extras are built in (
markitai[ocr]and the others install and add nothing).markitai doctor --fixfetches the OCR models (PaddleOCR, not RapidOCR) and, without Chrome or Chromium, Chrome's headless shell (not Playwright). - PyMuPDF and its AGPL licence are gone (NOTICE); Office page images come from LibreOffice only.
- ChatGPT subscription: sign in again with the Codex CLI (ChatGPT).
Command line
- Usage errors exit
2, as does--llm-batchon anything but a directory (exit codes). --resume,-g,--max-depth,--llm-batch-timeoutwhere they do not apply stop the run instead of being ignored: exit1for--resume,2for the others (batch options).--llmwith no usable model stops (exit1); a picture without--ocror--llmis skipped (exit0).✓ Wrote out/a.mdgoes to stderr: stdout holds only the document.- Removed:
doctor --timings,doctor --suggest-extras. New:--text-only,--page-markers.
Output
- Page and slide number comments are off;
--page-markerskeeps them (theragprofile's<!-- page: N -->stay). - Pictures are named by content (
.markitai/assets/<hash>.jpg), slidesdeck.pptx.page0001.jpg: take names from the Markdown,images.jsonor-f json. - Folder batches skip symbolic links unless
output.allow_symlinks: true. - New:
.markitai/ownership/keeps a rerun from replacing files markitai did not write.
Configuration
fetch.remote_consent: a failed local fetch goes to Defuddle, Jina or Cloudflare only aftermarkitai config set fetch.remote_consent always.fetch.fallback_patterns: only a list you write has an effect.- No effect (
markitai config validatewarns):office.macos_fallback,batch.heavy_task_limit,image.stdout_fetch_external. - Not read:
MARKITAI_PDF_WORKERS,MARKITAI_STATIC_HTTP, and in the setup scriptMARKITAI_USE_MIRROR(useMARKITAI_DOWNLOAD_URL),MARKITAI_SETUP_LOG,MARKITAI_SETUP_MODE.
Web workspace, MCP, Python
markitai servewants its access token from every client, local scripts too (Authorization: Bearer <token>).- MCP clients launch
uvx --from markitai markitai-mcpor the installedmarkitai-mcp. - Python:
convert(),aconvert(),ConversionOutputand the exceptions stay.MarkitaiConfigis not Pydantic (bad values raiseValueError);enable_worker_processes()and the shutdown helpers do nothing; notices go towarnings, not loguru.