Make all standard optional dependencies install by default#1253
Make all standard optional dependencies install by default#1253YOUSSEFELJAYAD wants to merge 1 commit into
Conversation
Adds a self-referential `headroom-ai[all]` entry to the core `[project.dependencies]` so a plain `pip install headroom-ai` ships every standard feature (proxy, ML/Kompress, code, memory, relevance, image, reports, otel, evals, voice, html, benchmark, mcp, spreadsheet) without requiring users to discover and append extras. This reuses the same intra-package self-reference pattern already used by the `all`, `proxy-prod`, and `voice-train` extras. Platform-specific extras that `[all]` intentionally omits (pytorch-mps, proxy-prod/gunicorn, memory-stack) remain opt-in, so Windows/CI/Python-3.14 installs are unaffected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR governanceThis PR does not yet satisfy the required template fields:
Please update the PR body, or move the PR back to draft while it is still in progress. |
JerrettDavis
left a comment
There was a problem hiding this comment.
This needs a different packaging shape before it can merge. Adding headroom-ai[all] to core [project.dependencies] makes the package depend on its own aggregate extra, which is a risky resolver/build behavior to rely on for the default install path. More importantly, [all] is not just the proxy quickstart surface: it pulls in heavy and specialized stacks such as ML/voice/evals/benchmark dependencies (torch, transformers, benchmark tooling, etc.) for every plain pip install headroom-ai.
That is too broad for a default enterprise install, especially when the stated failure is that headroom proxy needs the proxy extra. Please solve the quickstart/runtime gap more directly: either move the minimal proxy/runtime dependencies into the base install, make the CLI error/install hint clearer, or introduce a smaller default extra/install path that does not pull every optional feature. Also please include a lockfile/update and an install smoke test for the chosen packaging behavior so we know pip install headroom-ai and pip install "headroom-ai[all]" both resolve as intended.
What
Adds a single self-referential
headroom-ai[all]entry to the core[project.dependencies]inpyproject.toml, so a plainpip install headroom-ai(ornpm-style discovery →uvx/pipx) ships every standard feature out of the box.Why
New users install
headroom-ai, runheadroom proxy, and hit:The CLI's headline commands (
proxy,learn, code/memory features) all live behind optional extras, so the default install can't run them. This makes the documented quickstart fail until users discover and append the right extra.How
all,proxy-prod, andvoice-trainextras — nothing new for the build backend (maturin) to support.[all]already curates the cross-platform-safe set (proxy, code, ml, memory, relevance, image, reports, otel, evals, voice, html, benchmark, mcp, spreadsheet).[all]intentionally omits stay opt-in:pytorch-mps(macOS-only),proxy-prod/gunicorn(Unix-only),memory-stack(Qdrant/Neo4j). So Windows, CI, and Python 3.14 installs are unaffected.Trade-off (please weigh)
This is deliberately the batteries-included direction: the default install gets heavier (pulls
torch,transformers, etc. via[ml]/[voice]). That is the explicit goal of this PR — make the documented commands work with zero extra steps. If you'd prefer to keep the lean core, a lighter alternative would be to default only to[proxy](what the quickstart actually needs) and/or emit a clearer "runpip install headroom-ai[all]" hint on missing extras. Happy to repoint this PR at either approach.🤖 Generated with Claude Code