mirror of
https://github.com/headroomlabs-ai/headroom.git
synced 2026-08-27 14:17:10 -04:00
## Description Clarifies the recommended install path for the Headroom CLI on macOS Apple Silicon and Linux. The docs now prefer `uv tool install --python 3.13 "headroom-ai[all]"` for host-level CLI use, keep `pip install` scoped to Python project environments, and call out absolute executable paths for MCP clients that do not inherit interactive shell `PATH`. ## Type of Change - [ ] Bug fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [x] Documentation update - [ ] Performance improvement - [ ] Code refactoring (no functional changes) ## Changes Made - Added `uv tool install --python 3.13` guidance to the README, docs install page, quickstarts, and wiki install pages. - Documented `uv tool update-shell` for shells that cannot find the installed `headroom` command. - Clarified absolute MCP server command paths for clients that do not inherit the interactive shell `PATH`. - Pointed Intel macOS users at the Docker-native install path until native wheel support lands. ## Testing Describe the tests you ran to verify your changes: - [ ] Unit tests pass (`pytest`) - not run; docs-only change. - [ ] Linting passes (`ruff check .`) - not run; docs-only change. - [ ] Type checking passes (`mypy headroom`) - not run; docs-only change. - [ ] New tests added for new functionality - not applicable. - [x] Manual testing performed - [x] `git diff --check upstream/main...HEAD` ## Real Behavior Proof ```bash $ git diff --check upstream/main...HEAD # exits 0; no whitespace errors ``` `npm --prefix docs run types:check` was also attempted. It regenerated MDX and route types successfully, then failed in existing docs app code because `@/lib/...` imports cannot resolve from files such as `app/(home)/layout.tsx`, `app/api/search/route.ts`, and `components/button.tsx`. This PR only changes `README.md`, `docs/content/docs/installation.mdx`, `docs/content/docs/quickstart.mdx`, and `wiki/*.md` files. ## Review Readiness - [x] Draft PR; docs wording and install-path accuracy are ready for review. - [x] No code or runtime files changed. - [x] Known docs type-check blocker is documented above. ## Test Output ```bash $ git diff --check upstream/main...HEAD # no output ``` ```text $ npm --prefix docs run types:check [MDX] generated files ✓ Types generated successfully app/(home)/layout.tsx(2,29): error TS2307: Cannot find module @/lib/layout.shared or its corresponding type declarations. ... components/button.tsx(4,20): error TS2307: Cannot find module @/lib/cn or its corresponding type declarations. ``` ## Checklist - [x] My code follows the project's style guidelines - [x] I have performed a self-review of my code - [ ] I have commented my code, particularly in hard-to-understand areas - not applicable; docs-only change. - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - not applicable; docs-only change. - [ ] New and existing unit tests pass locally with my changes - not run; docs-only change. - [ ] I have updated the CHANGELOG.md if applicable - not applicable. ## Screenshots (if applicable) Not applicable. ## Additional Notes The PR remains a draft while docs verification is limited by the existing docs app `@/lib/*` resolution issue. --------- Co-authored-by: JerrettDavis <mxjerrett@gmail.com>
150 lines
3.1 KiB
Markdown
150 lines
3.1 KiB
Markdown
# Getting Started with Headroom
|
|
|
|
This guide will help you get up and running with Headroom in under 5 minutes.
|
|
|
|
## Installation
|
|
|
|
**CLI on macOS Apple Silicon/Linux with uv:**
|
|
|
|
```bash
|
|
uv tool install --python 3.13 "headroom-ai[all]"
|
|
headroom --version
|
|
```
|
|
|
|
Use `uv tool update-shell` if the install succeeds but `headroom` is not on
|
|
`PATH`.
|
|
|
|
**Python project / virtualenv:**
|
|
|
|
```bash
|
|
# Core package (minimal dependencies)
|
|
pip install headroom-ai
|
|
|
|
# With proxy server
|
|
pip install "headroom-ai[proxy]"
|
|
|
|
# With semantic relevance (for smarter compression)
|
|
pip install "headroom-ai[relevance]"
|
|
|
|
# Everything
|
|
pip install "headroom-ai[all]"
|
|
```
|
|
|
|
**TypeScript / Node.js:**
|
|
|
|
```bash
|
|
npm install headroom-ai
|
|
```
|
|
|
|
**Docker-native:**
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/chopratejas/headroom/main/scripts/install.sh | bash
|
|
```
|
|
|
|
PowerShell:
|
|
|
|
```powershell
|
|
irm https://raw.githubusercontent.com/chopratejas/headroom/main/scripts/install.ps1 | iex
|
|
```
|
|
|
|
See [Docker-native install](docker-install.md) for wrapper behavior, compose usage, and host-integrated `wrap` flows.
|
|
|
|
If you want Headroom to stay up in the background and automatically serve supported tools, use [Persistent Installs](persistent-installs.md):
|
|
|
|
```bash
|
|
headroom install apply --preset persistent-service --providers auto
|
|
```
|
|
|
|
## Quick Start: Proxy Mode (Recommended)
|
|
|
|
The easiest way to use Headroom is as a proxy server:
|
|
|
|
```bash
|
|
# Start the proxy
|
|
headroom proxy --port 8787
|
|
```
|
|
|
|
Then point your LLM client at it:
|
|
|
|
```bash
|
|
# Claude Code
|
|
ANTHROPIC_BASE_URL=http://localhost:8787 claude
|
|
|
|
# GitHub Copilot CLI (default Anthropic-style proxy route)
|
|
headroom wrap copilot -- --model claude-sonnet-4-20250514
|
|
|
|
# OpenAI-compatible clients
|
|
OPENAI_BASE_URL=http://localhost:8787/v1 your-app
|
|
```
|
|
|
|
That's it! All your requests now go through Headroom and get optimized automatically.
|
|
|
|
## Quick Start: Python SDK
|
|
|
|
If you want programmatic control:
|
|
|
|
```python
|
|
from headroom import HeadroomClient
|
|
from openai import OpenAI
|
|
|
|
# Create a wrapped client
|
|
client = HeadroomClient(
|
|
original_client=OpenAI(),
|
|
default_mode="optimize",
|
|
)
|
|
|
|
# Use exactly like the original
|
|
response = client.chat.completions.create(
|
|
model="gpt-4o",
|
|
messages=[
|
|
{"role": "system", "content": "You are a helpful assistant."},
|
|
{"role": "user", "content": "Hello!"},
|
|
],
|
|
)
|
|
```
|
|
|
|
## Modes
|
|
|
|
### Audit Mode
|
|
|
|
Observe without modifying:
|
|
|
|
```python
|
|
client = HeadroomClient(
|
|
original_client=OpenAI(),
|
|
default_mode="audit",
|
|
)
|
|
# Logs metrics but doesn't change requests
|
|
```
|
|
|
|
### Optimize Mode
|
|
|
|
Apply transforms to reduce tokens:
|
|
|
|
```python
|
|
client = HeadroomClient(
|
|
original_client=OpenAI(),
|
|
default_mode="optimize",
|
|
)
|
|
# Compresses tool outputs, aligns cache prefixes, etc.
|
|
```
|
|
|
|
### Simulate Mode
|
|
|
|
Preview what optimizations would do:
|
|
|
|
```python
|
|
plan = client.chat.completions.simulate(
|
|
model="gpt-4o",
|
|
messages=[...],
|
|
)
|
|
print(f"Would save {plan.tokens_saved} tokens")
|
|
print(f"Transforms: {plan.transforms_applied}")
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
- [Proxy Server Documentation](proxy.md) - Configure the proxy
|
|
- [Transforms Reference](transforms.md) - Understand each transform
|
|
- [API Reference](api.md) - Full API documentation
|