# context7-cli
[](https://crates.io/crates/context7-cli)
[](https://docs.rs/context7-cli)
[](https://github.com/daniloaguiarbr/context7-cli#license)
---
## English
### What is context7-cli?
`context7-cli` is a native Rust binary that queries the public [Context7](https://context7.com) REST API (`https://context7.com/api/v1`) to search library documentation directly from your terminal — no Node.js, no Python, no extra runtime needed.
### Why use it?
1. **Single binary** — one file, zero runtime dependencies (no Node/Python required)
2. **Cross-platform** — Linux, macOS, and Windows with identical behavior
3. **XDG-compliant storage** — API keys stored securely in `~/.config/context7/config.toml` with `chmod 600` (or OS equivalent)
4. **Multi-key rotation** — up to 17 API keys with automatic shuffle and exponential backoff retry (500ms → 1s → 2s, 3 attempts)
5. **Bilingual UI** — English and Brazilian Portuguese output (v0.2.0+)
6. **Privacy-first** — no telemetry, no analytics, no data collection; keys are masked in all logs and `list` output
7. **Structured error handling** — zero `unwrap()` in production; every error path returns a user-friendly message
8. **Multiple output formats** — colored human-readable, `--json` for pipes/scripts, `--text` for LLM context
### Quick install
**Linux / macOS (via Cargo):**
```bash
cargo install context7-cli
context7 --help
```
**Windows (via Cargo + rustup):**
```powershell
# Install Rust from https://rustup.rs first, then:
cargo install context7-cli
context7 --help
```
**Build from source:**
```bash
git clone https://github.com/daniloaguiarbr/context7-cli
cd context7-cli
cargo build --release
./target/release/context7 --help
```
> The crate is published as `context7-cli` on crates.io. The installed binary is `context7` (no `-cli` suffix).
### First run
```bash
# Step 1 — Add your API key (get yours at https://context7.com)
context7 keys add ctx7sk-YOUR-KEY-HERE
# Step 2 — Verify it was stored
context7 keys list
# Step 3 — Search a library
context7 library react
# Step 4 — Fetch documentation
context7 docs /facebook/react --query "useEffect cleanup"
```
### Core commands
```bash
# Search libraries by name
context7 library react
context7 lib axum "middleware" # alias + semantic context
context7 search tokio "mpsc channel" # alias + semantic context
# Fetch documentation
context7 docs /facebook/react
context7 docs /tokio-rs/tokio --query "spawn_blocking" --text
context7 docs /tokio-rs/tokio -q "spawn_blocking" --text # -q is short for --query
context7 doc /rust-lang/rust --query "lifetimes" --json
# Manage API keys
context7 keys add ctx7sk-... # add a key
context7 keys list # list saved keys (masked)
context7 keys remove 2 # remove by 1-based index
context7 keys clear --yes # remove all keys
context7 keys path # show config file path
context7 keys export # export to .env format
context7 keys import .env # import from .env file
context7 keys rotate # rotate to next available key
```
### Output formats
| (none) | Colored, human-readable | Terminal reading |
| `--json` | Pretty-printed JSON | Scripts, pipes, `jaq` |
| `--text` | Plain text (docs only) | LLM context, `rg` pipelines |
| `--lang en\|pt` | Force UI language | Multilingual workflows |
### Language selection (v0.2.0+)
```bash
# Force English output
context7 --lang en library react
# Force Portuguese output
context7 --lang pt docs /facebook/react --query "hooks"
# Permanent override via environment variable
export CONTEXT7_LANG=en
context7 library react # always English from now on
```
Auto-detect order: `--lang` flag → `CONTEXT7_LANG` env var → system locale → English (default).
### Full documentation
See [`docs/HOW_TO_USE.md`](docs/HOW_TO_USE.md) for a complete step-by-step guide covering Linux, macOS, and Windows.
For LLM integration patterns, see [`docs/context7-skill.md`](docs/context7-skill.md) and [`docs/context7-llm-rules.md`](docs/context7-llm-rules.md).
---
## Português
### O que é o context7-cli?
`context7-cli` é um binário Rust nativo que consulta a API REST pública do [Context7](https://context7.com) (`https://context7.com/api/v1`) para buscar documentação de bibliotecas diretamente no terminal — sem Node.js, sem Python, sem runtime adicional.
### Por que usar?
1. **Binário único** — um arquivo só, zero dependências de runtime (sem Node/Python)
2. **Cross-platform** — Linux, macOS e Windows com comportamento idêntico
3. **Armazenamento XDG** — chaves de API salvas com segurança em `~/.config/context7/config.toml` com `chmod 600` (ou equivalente do OS)
4. **Rotação multi-chave** — até 17 chaves de API com shuffle automático e retry com backoff exponencial (500ms → 1s → 2s, 3 tentativas)
5. **Interface bilíngue** — saída em inglês e português brasileiro (v0.2.0+)
6. **Privacidade em primeiro lugar** — sem telemetria, sem analytics, sem coleta de dados; chaves mascaradas em todos os logs e no output de `list`
7. **Tratamento estruturado de erros** — zero `unwrap()` em produção; todo caminho de erro retorna mensagem amigável ao usuário
8. **Múltiplos formatos de saída** — colorido legível para humanos, `--json` para pipes/scripts, `--text` para contexto de LLM
### Instalação rápida
**Linux / macOS (via Cargo):**
```bash
cargo install context7-cli
context7 --help
```
**Windows (via Cargo + rustup):**
```powershell
# Instale o Rust em https://rustup.rs primeiro, depois:
cargo install context7-cli
context7 --help
```
**Build a partir do fonte:**
```bash
git clone https://github.com/daniloaguiarbr/context7-cli
cd context7-cli
cargo build --release
./target/release/context7 --help
```
> O crate está publicado no crates.io como `context7-cli`. O binário instalado é `context7` (sem o sufixo `-cli`).
### Primeira execução
```bash
# Passo 1 — Adicione sua chave de API (obtenha em https://context7.com)
context7 keys add ctx7sk-SUA-CHAVE-AQUI
# Passo 2 — Verifique se foi salva
context7 keys list
# Passo 3 — Busque uma biblioteca
context7 library react
# Passo 4 — Busque documentação
context7 docs /facebook/react --query "useEffect e cleanup"
```
### Comandos principais
```bash
# Buscar bibliotecas por nome
context7 library react
context7 lib axum "middleware" # alias + contexto semântico
context7 search tokio "canal mpsc" # alias + contexto semântico
# Buscar documentação
context7 docs /facebook/react
context7 docs /tokio-rs/tokio --query "spawn_blocking" --text
context7 docs /tokio-rs/tokio -q "spawn_blocking" --text # -q é alias de --query
context7 doc /rust-lang/rust --query "lifetimes" --json
# Gerenciar chaves de API
context7 keys add ctx7sk-... # adicionar chave
context7 keys list # listar chaves salvas (mascaradas)
context7 keys remove 2 # remover por índice 1-based
context7 keys clear --yes # remover todas as chaves
context7 keys path # exibir caminho do arquivo config
context7 keys export # exportar em formato .env
context7 keys import .env # importar de arquivo .env
context7 keys rotate # rotar para a próxima chave disponível
```
### Formatos de saída
| (nenhuma) | Colorido, legível por humanos | Leitura no terminal |
| `--json` | JSON pretty-printed | Scripts, pipes, `jaq` |
| `--text` | Texto plano (apenas `docs`) | Contexto de LLM, pipelines com `rg` |
| `--lang en\|pt` | Forçar idioma da interface | Fluxos multilíngues |
### Seleção de idioma (v0.2.0+)
```bash
# Forçar saída em inglês
context7 --lang en library react
# Forçar saída em português
context7 --lang pt docs /facebook/react --query "hooks"
# Override permanente via variável de ambiente
export CONTEXT7_LANG=pt
context7 library react # sempre em português a partir de agora
```
Ordem de detecção: flag `--lang` → variável `CONTEXT7_LANG` → locale do sistema → inglês (padrão).
### Documentação completa
Veja [`docs/HOW_TO_USE.md`](docs/HOW_TO_USE.md) para um guia passo a passo completo cobrindo Linux, macOS e Windows.
Para padrões de integração com LLM, veja [`docs/context7-skill.md`](docs/context7-skill.md) e [`docs/context7-llm-rules.md`](docs/context7-llm-rules.md).
---
## License
Dual-licensed under **MIT OR Apache-2.0**, at your choice.
- [LICENSE-MIT](LICENSE-MIT)
- [LICENSE-APACHE](LICENSE-APACHE)
Copyright 2026 Danilo Aguiar <daniloaguiarbr@pm.me>