Overview
typemux-cc has several known limitations, most of which have practical workarounds. These limitations are often intentional design decisions to prevent silent failures.Summary Table
| Limitation | Impact | Workaround |
|---|---|---|
| Windows unsupported | Cannot run on native Windows | Use WSL2 |
| macOS Intel unsupported | No prebuilt binaries | Build from source |
Fixed venv name (.venv only) | Only detects .venv directories | Rename to .venv or create symlink |
| Symlinks may fail | Cannot detect pyvenv.cfg through symlinks | Use actual .venv directory |
Late .venv creation | Cached as None if created after file open | Reopen file after creating .venv |
| setuptools editable installs | Import resolution fails | Switch to hatchling/flit or configure extra-paths |
Detailed Limitations
Windows Unsupported
Issue:- Unix-like path assumptions (forward slashes, POSIX semantics)
- Different environment variable conventions
- Process spawning differences
macOS Intel Unsupported (Prebuilt Binaries)
Intel macOS is supported when building from source. Only prebuilt binaries are arm64-only.
- Prebuilt binaries target arm64 (Apple Silicon) only
- Limited demand for Intel builds
- Build infrastructure costs
Fixed Virtual Environment Name
Issue:- Poetry, conda, and custom-named environments are not detected
- This is intentional: prevents silently using the wrong environment
- Design philosophy: “A silently lying LSP is the worst”
- ✅
.venvcreated withpython -m venv - ✅
.venvcreated withuv venv - ✅
.venvcreated withvirtualenv
- ❌
venv,env,.virtualenv(wrong name) - ❌ Poetry environments (different structure)
- ❌ Conda environments (not a venv)
The strict
.venv requirement prevents accidentally using a wrong or stale environment, which would cause LSP to return incorrect type information.Symlinks May Fail
Issue:- If
.venvis a symlink, typemux-cc may fail to detectpyvenv.cfg - Symlink traversal behavior varies by OS
Late .venv Creation Cache Behavior
This is the most common issue in git worktree workflows.
- typemux-cc caches the venv path on first file open
- If
.venvdoesn’t exist yet, it cachesNone - Subsequent requests use the cached value without re-searching
.venv and caches the result. If .venv doesn’t exist, it caches None. Later requests reuse this cached value for performance, so creating .venv afterwards won’t trigger a new search.
Workaround:
Reopening the file is a one-time action per document. After the first reopen, the correct
.venv will be cached.Setuptools Editable Installs
Issue:- Setuptools-style editable installs use import hooks at runtime
- LSP backends perform static analysis and cannot execute import hooks
- Result: imports from editable packages fail to resolve
.pth file that registers an import hook. This hook runs at Python runtime to redirect imports. LSP backends analyze code statically (without running Python), so they cannot execute these hooks.
This affects:
- pyright (microsoft/pyright#5471)
- ty (astral-sh/ty#475)
- pyrefly (same underlying issue)
.pth files that LSP can resolve.
Workaround 2: Configure backend extra-paths
For pyright, add to pyrightconfig.json or pyproject.toml:
pyproject.toml:
This issue is fundamental to how setuptools editable installs work. It’s not specific to typemux-cc.
Debugging Tips
Enable Detailed Logging
Check Current Configuration
Verify Plugin Installation
Feature Requests & Bug Reports
If you encounter limitations not listed here, please:- Check the GitHub Issues
- Enable trace logging and gather logs
- Open a new issue with details
Some limitations are intentional design decisions (like strict
.venv naming) to prevent silent failures. These are unlikely to change.