Skip to content

Make all standard optional dependencies install by default#1253

Open
YOUSSEFELJAYAD wants to merge 1 commit into
headroomlabs-ai:mainfrom
YOUSSEFELJAYAD:batteries-included-default
Open

Make all standard optional dependencies install by default#1253
YOUSSEFELJAYAD wants to merge 1 commit into
headroomlabs-ai:mainfrom
YOUSSEFELJAYAD:batteries-included-default

Conversation

@YOUSSEFELJAYAD

Copy link
Copy Markdown

What

Adds a single self-referential headroom-ai[all] entry to the core [project.dependencies] in pyproject.toml, so a plain pip install headroom-ai (or npm-style discovery → uvx/pipx) ships every standard feature out of the box.

Why

New users install headroom-ai, run headroom proxy, and hit:

Error: Proxy dependencies not installed. Run: pip install headroom-ai[proxy]

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

dependencies = [
    ...
    "headroom-ai[all]",   # batteries-included default
]
  • Reuses the same intra-package self-reference pattern the project already relies on for the all, proxy-prod, and voice-train extras — 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).
  • Platform-specific extras that [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 "run pip install headroom-ai[all]" hint on missing extras. Happy to repoint this PR at either approach.

🤖 Generated with Claude Code

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>
@github-actions

Copy link
Copy Markdown
Contributor

PR governance

This PR does not yet satisfy the required template fields:

  • Missing required section Description.
  • Missing required section Type of Change.
  • Missing required section Changes Made.
  • Missing required section Testing.
  • Missing required section Real Behavior Proof.
  • Missing required section Review Readiness.
  • Check I have performed a self-review before requesting human review.
  • Check This PR is ready for human review or convert the PR back to draft.

Please update the PR body, or move the PR back to draft while it is still in progress.

@github-actions github-actions Bot added the status: needs author action Pull request body or readiness checklist still needs author updates label Jun 21, 2026

@JerrettDavis JerrettDavis left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: needs author action Pull request body or readiness checklist still needs author updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants