Claude Code's official pyright plugin spawns a single LSP backend at startup and holds onto it. If .venv doesn't exist yet — or you create a new one later — it never picks it up. You have to restart Claude Code.
This is especially painful with git worktrees, now common in AI-assisted development: you spin up a fresh worktree, create .venv, and then must restart Claude Code just to get type-checking.
typemux-cc is a Python LSP proxy that fixes this — .venv changes are reflected within your running session, no restarts required.
This is a recurring, unresolved pain in the Claude Code ecosystem: worktree/venv breakage keeps being reported upstream — anthropics/claude-code#31391 (closed as not planned), astral-sh/claude-code-plugins#18 (open), anthropics/claude-code#58365 — while the official pyright plugin remains a single pyright-langserver spawn with no environment handling. typemux-cc exists to solve the environment-lifecycle side of this problem for Python.
Quickstart
# 1. Install a backend (pyright recommended)
npm install -g pyright
# 2. Disable the official pyright plugin
/plugin disable pyright-lsp@claude-plugins-official
# 3. Add marketplace and install
/plugin marketplace add K-dash/typemux-cc
/plugin install typemux-cc@typemux-cc-marketplace
# 4. Restart Claude Code (initial installation only)
For ty/pyrefly, set TYPEMUX_CC_BACKEND in your config.
Problems Solved
- ⚡ Late
.venv creation (worktrees, hooks) — Spin up a git worktree, create .venv later, and typemux-cc picks it up on the next file open. No Claude Code restart needed.
- 🔄 Multi-project venv switching (monorepos) — typemux-cc keeps a per-
.venv backend pool and routes requests to the correct one. Switching between projects is instant.
- 🔀 Multi-backend support — Not locked into pyright. Choose between pyright, ty, or pyrefly — switch via a single env var.