[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80494":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":11,"contributorsCount":11,"subscribersCount":11,"size":11,"stars1d":13,"stars7d":14,"stars30d":14,"stars90d":11,"forks30d":11,"starsTrendScore":15,"compositeScore":11,"rankGlobal":8,"rankLanguage":8,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":11,"starSnapshotCount":11,"syncStatus":13,"lastSyncTime":24,"discoverSource":25},80494,"GalileuCLI","eubrunocase\u002FGalileuCLI","eubrunocase",null,"Go",61,0,57,2,4,6,"Apache License 2.0",false,"main",true,[],"2026-06-12 02:04:03","# Galileu — Proxy de Segurança e Governança para Ferramentas de AI\n\n![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Feubrunocase\u002FGalileuCLI?style=flat-square)\n![Latest Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Feubrunocase\u002FGalileuCLI?style=flat-square)\n![CI Status](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Feubrunocase\u002FGalileuCLI\u002Frelease.yml?style=flat-square)\n\n> Suporta: macOS (Apple Silicon & Intel) · Windows · Linux\n\n**Galileu** é uma ferramenta de segurança e governança de dados voltada para o monitoramento e sanitização de informações enviadas a provedores de Inteligência Artificial (LLMs). O projeto adota uma arquitetura de **Proxy Reverso MITM (Man-in-the-Middle)**, atuando como camada inteligente entre a sua ferramenta de desenvolvimento e os servidores das LLMs.\n\nO Galileu é **agnóstico a ferramentas de AI** — funciona com qualquer ferramenta que permita configurar um proxy customizado: OpenCode, Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini CLI, Codex e muito mais.\n\n---\n\n## Ferramentas Suportadas\n\nO Galileu funciona com qualquer ferramenta de AI que permita configurar um proxy:\n\n| Ferramenta | Detecção Automática | Configuração |\n|---|---|---|\n| OpenCode | ✅ | Padrão |\n| Claude Code | ✅ | Modo `passive` |\n| Cursor | ✅ | Modo `passive` |\n| Windsurf | ✅ | Modo `passive` |\n| GitHub Copilot | ✅ | Modo `passive` |\n| Gemini CLI | ✅ | Padrão |\n| OpenAI API | ✅ | Padrão |\n| Anthropic API | ✅ | Padrão |\n| Google AI API | ✅ | Padrão |\n| Qualquer outra | ✅ | Modo `passive` |\n\n---\n\n## Demonstração\n\n### Funcionamento em Tempo Real\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"media\u002Fuse-galileu.gif\" alt=\"OpenCode com Galileu\" width=\"80%\">\n\u003C\u002Fp>\n\n*O GIF acima mostra o OpenCode tentando ler dados sensíveis de ficheiros `.env` — o Galileu intercepta e sanitiza automaticamente as informações antes de chegarem à LLM.*\n\n### Terminal em Execução\n\n![Terminal Galileu](media\u002Fterminal-galileu.png)\n\n*Print do terminal durante a execução do Galileu, mostrando o proxy ativo e os registros de auditoria.*\n\n---\n\n## Arquitetura do Sistema\n\n![Arquitetura do Sistema](media\u002FSystemArchitecture.png)\n\n*Diagrama da arquitetura e funcionamento do sistema.*\n\n### Fluxo de Processamento\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                         GALILEU PROXY                           │\n├─────────────────────────────────────────────────────────────────┤\n│                                                                 │\n│  Request → Filter(Input) → [Is JSON? + Is POST?] →              │\n│                                     │                           │\n│                          ┌──────────┴──────────┐                │\n│                          │                     │                │\n│                   Skip (telemetry)      Analyze (Payload)       │\n│                                              │                  │\n│                                        ┌─────┴─────┐            │\n│                                        │           │            │\n│                                  ┌─────▼───┐   ┌───▼────┐       │\n│                                  │ Has model│  │  Has   │       │\n│                                  │ messages │  │contents│       │\n│                                  │  etc?    │  │  etc?  │       │\n│                                  └─────┬───┘   └────┬───┘       │\n│                                        │            │           │\n│                                        └──────┬─────┘           │\n│                                          Detected!              │\n│                                              │                  │\n│                                    ┌─────────┴─────────┐        │\n│                                    │ Infer Provider    │        │\n│                                    │ from Payload      │        │\n│                                    └─────────┬─────────┘        │\n└─────────────────────────────────────────────┼─────────────────┘\n                                              │\n                                        Analyze for\n                                        sensitive data\n```\n\n---\n\n## Instalação Rápida\n\nBaixe o binário pré-compilado para a sua plataforma em\n[Releases](https:\u002F\u002Fgithub.com\u002Feubrunocase\u002FGalileuCLI\u002Freleases\u002Flatest):\n\n| Plataforma | Arquivo |\n|---|---|\n| macOS Apple Silicon (M1\u002FM2\u002FM3) | `galileu-darwin-arm64` |\n| macOS Intel | `galileu-darwin-amd64` |\n| Linux x86_64 | `galileu-linux-amd64` |\n| Windows x86_64 | `galileu-windows-amd64.exe` |\n\n**macOS \u002F Linux:**\n```bash\nchmod +x galileu-darwin-arm64\n.\u002Fgalileu-darwin-arm64\n```\n\n**Windows:**\n\nExecute `galileu-windows-amd64.exe` como Administrador (clique direito → \"Executar como administrador\").\n\n> Não é necessário ter Go instalado. A compilação é necessária apenas para desenvolvimento.\n\n### Configuração Opcional\n\nO binário funciona de forma autônoma. O arquivo `galileu.yml` é **opcional** — se não existir, todos os padrões built-in são ativados automaticamente.\n\nO Galileu procura o `galileu.yml` no diretório onde o binário é executado, não dentro do próprio binário.\n\n```\npasta-do-usuario\u002F\n├── galileu-darwin-arm64   ← binário baixado\n└── galileu.yml            ← arquivo opcional (criado pelo usuário)\n```\n\nPara personalizar, crie um `galileu.yml` na mesma pasta do binário usando o `galileu.yml.example` como referência.\n\n---\n\n## Compilação\n\n### macOS — Apple Silicon (M1\u002FM2\u002FM3)\n```bash\nmake build-mac-arm\n```\n\n### macOS — Intel\n```bash\nmake build-mac-intel\n```\n\n### Windows\n```bash\nmake build-windows\n```\n\n### Linux\n```bash\nmake build-linux\n```\n\nOu compilar para todas as plataformas de uma vez:\n```bash\nmake build-all\n```\n\n---\n\n## Configuração do Certificado CA\n\n> **⚠️ PONTO CRÍTICO DE SEGURANÇA**\n>\n> O Galileu gera um Certificado de Autoridade (CA) **localmente na sua máquina**. Este certificado é exclusivo para o seu ambiente e **nunca deve sair do seu computador**.\n\n### Como Funciona\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    SUA MÁQUINA LOCAL                        │\n│                                                             │\n│  ┌──────────┐    ┌──────────────────┐    ┌──────────┐       │\n│  │ Cliente  │───▶│  Galileu Proxy  │───▶│   LLM    │       │\n│  │ (Claude   │◀───│  (localhost:9000)│◀───│ Provider│       │\n│  │  Code)    │    │                  │    │          │       │\n│  └──────────┘    └──────────────────┘    └──────────┘       │\n│                        │                                    │\n│                        ▼                                    │\n│              ┌──────────────────┐                           │\n│              │   Certificado CA  │                          │\n│              │  (Local apenas)   │                          │\n│              │                   │                          │\n│              │ galileu-ca.pem    │  ⚠️ NUNCA                │\n│              │ galileu-ca-key.pem│  ⚠️ COMPARTILHAR         │\n│              └──────────────────┘                           │\n│                        │                                    │\n│                        ▼                                    │\n│              ┌──────────────────┐                           │\n│              │  Keychain \u002F Cert │                           │\n│              │  Store do SO     │                           │\n│              └──────────────────┘                           │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### O que acontece tecnicamente\n\n1. O Galileu gera um par de chaves RSA 4096-bit **localmente** (`galileu-ca.pem` + `galileu-ca-key.pem`)\n2. O certificado é instalado **apenas no seu sistema operacional** (Keychain no macOS, Cert Store no Windows, `\u002Fusr\u002Flocal\u002Fshare\u002Fca-certificates\u002F` no Linux)\n3. Quando o proxy intercepta uma requisição HTTPS, ele apresenta um certificado assinado por esta CA\n4. O seu SO confia no certificado porque a CA está instalada localmente\n5. A chave privada (`galileu-ca-key.pem`) **nunca sai da sua máquina**\n\n### Instalação por Sistema Operacional\n\n#### macOS\nO Galileu tentará instalar o certificado automaticamente no Keychain do sistema (será solicitada a senha de administrador na primeira execução). Caso prefira instalar manualmente:\n\n```bash\nsudo security add-trusted-cert -d -r trustRoot \\\n  -k \u002FLibrary\u002FKeychains\u002FSystem.keychain galileu-ca.pem\n```\n\n#### Windows\nO Galileu instala automaticamente o certificado CA no repositório de certificados do sistema ao executar como **Administrador**. Basta executar `galileu.exe` com privilégios administrativos.\n\n#### Linux\nO Galileu instala automaticamente o certificado CA no repositório de certificados do sistema ao executar com privilégios de **sudo** (na primeira execução será solicitada a senha). Caso prefira instalar manualmente:\n\n```bash\nsudo cp galileu-ca.pem \u002Fusr\u002Flocal\u002Fshare\u002Fca-certificates\u002Fgalileu.crt\nsudo update-ca-certificates\n```\n\n### Desinstalação do Certificado CA\n\nSe precisar remover o certificado CA do seu sistema, utilize os comandos abaixo:\n\n#### macOS\n```bash\nsudo security remove-trusted-cert -d -r trustRoot \\\n  -k \u002FLibrary\u002FKeychains\u002FSystem.keychain \"Galileu Local CA\"\n```\n\nOu use o Makefile:\n```bash\nmake uninstall-cert-macos\n```\n\n#### Linux\n```bash\nsudo rm \u002Fusr\u002Flocal\u002Fshare\u002Fca-certificates\u002Fgalileu.crt\nsudo update-ca-certificates\n```\n\nOu use o Makefile:\n```bash\nmake uninstall-cert-linux\n```\n\n#### Windows\nExecute no PowerShell como Administrador:\n```powershell\ncertutil -delstore -f Root \"Galileu Local CA\"\n```\n\nOu use o Makefile (execute como Administrador):\n```bash\nmake uninstall-cert-windows\n```\n\n> **Nota:** Após desinstalar o certificado, o proxy não funcionará até que o certificado seja reinstalado. Para reinstalar, basta executar o Galileu novamente.\n\n### ⚠️ Proteção dos Ficheiros `.pem`\n\nO seu `.gitignore` **já está configurado** para impedir o commit acidental:\n\n```gitignore\n# Certificados — nunca versionar\n*.pem\ngalileu-ca-key.pem\ngalileu-ca.pem\n```\n\n**NUNCA** remova estas linhas do `.gitignore`. A chave privada (`galileu-ca-key.pem`) é o que permite ao Galileu fazer o MITM — se ela for exposta, um atacante pode criar certificados falsificados em seu nome.\n\n### Riscos de Segurança\n\n#### Vazamento do Certificado CA\n\nSe a chave privada (`galileu-ca-key.pem`) vazar, um atacante pode:\n\n- Criar certificados SSL válidos para **qualquer domínio** (Google, AWS, bancos, etc.)\n- Interceptar todo o tráfego HTTPS da rede onde o certificado for confiar\n- Realizar ataques de MITM sofisticados sem que o usuário perceba\n- Assinar certificados que serão trustados por qualquer máquina que tenha o certificado CA instalado\n\n**Consequência**: Qualquer dispositivo que tenha o certificado CA do Galileu instalado passa a confiar em certificados fraudulentos criados pelo atacante.\n\n#### Comprometimento do Binário\n\nSe o binário (`galileu`) for comprometido (malware ou substituição), um atacante pode:\n\n- Modificar o comportamento do proxy para exfiltrar dados sensíveis das requisições\n- Armazenar em log todas as mensagens enviadas aos provedores de LLM\n- Alterar as respostas dos LLMs antes de retorná-las ao cliente\n- Usar a mesma infraestrutura de proxy para ataques adicionais\n\n**Mitigação**:\n- Sempre verifique a integridade do binário (checksums, assinaturas)\n- Baixe binários apenas de fontes oficiais\n- Mantenha o sistema operacional e dependências atualizados\n- Utilize ferramentas de detecção de integridade (ex: AIDE, Tripwire)\n\n---\n\n## Comandos\n\nO binário `galileu` suporta os seguintes subcomandos:\n\n| Comando | Descrição |\n|---------|-----------|\n| `galileu` | Iniciar o proxy |\n| `galileu --dry-run` | Iniciar proxy em modo DRY-RUN (apenas detectar, não modificar) |\n| `make doctor` | Executar diagnóstico do sistema |\n| `make version` | Mostrar versão do binário |\n| `make help` | Mostrar ajuda |\n\n### Modo DRY-RUN\n\nO modo `--dry-run` permite testar a detecção de dados sensíveis **sem modificar os payloads**:\n\n```bash\n.\u002Fgalileu --dry-run\n```\n\nQuando ativado:\n- O proxy analisa todas as requisições normalmente\n- Detecta padrões sensíveis e exibe quais dados seriam redatados\n- **Não modifica** o payload original - mantém intacto\n- Útil para debugging e verificação de padrões de detecção\n\nExemplo de saída:\n```\n[GALILEU] Modo DRY-RUN ativo - apenas detectando, sem modificar payloads.\n[GALILEU] [DRY-RUN] Detectado em api.openai.com: 2 dado(s) sensivel(is) - NAO modificado.\n[GALILEU]         Padroes: [openai_key, github_token]\n```\n\n### Diagnóstico (`galileu doctor`)\n\nO comando `doctor` verifica:\n\n- **Certificado CA**: Se o certificado está instalado no repositório do sistema\n- **Porta**: Se a porta configurada está disponível\n- **Variáveis de ambiente**: Se `GALILEU_PORT` está configurada\n\nExemplo de saída:\n\n```\n=== Diagnostico do Galileu ===\n\nCertificado CA:      [OK] Instalado\nPorta configurada:    [OK] 9000 (padrao)\nPorta disponivel:    [OK] Livre\n\nTudo OK!\n```\n\n---\n\n## Compilação e Execução\n\n### Usando Make (Recomendado)\n\nO Makefile facilita a compilação e execução:\n\n```bash\n# Mostrar ajuda\nmake help\n\n# Compilar para a plataforma atual\nmake build\n\n# Executar o proxy\nmake run\n\n# Executar diagnóstico\nmake doctor\n\n# Executar todos os testes\nmake test\n\n# Executar benchmarks\nmake benchmarks\n\n# Limpar binários\nmake clean\n```\n\n### Compilação Multiplataforma\n\n```bash\nmake build-all          # Compilar para macOS, Windows e Linux\nmake build-mac-arm      # macOS Apple Silicon (M1\u002FM2\u002FM3)\nmake build-mac-intel    # macOS Intel\nmake build-windows      # Windows\nmake build-linux        # Linux\n```\n\n### Execução Direta (Sem Make)\n\nApós compilado, você pode executar o binário diretamente:\n\n```bash\n.\u002Fgalileu               # iniciar proxy\n.\u002Fgalileu --dry-run     # iniciar proxy em modo DRY-RUN\n.\u002Fgalileu doctor        # verificar diagnóstico\n.\u002Fgalileu version       # mostrar versão\n.\u002Fgalileu -h            # mostrar ajuda\n```\n\n> **Nota:** Certifique-se de que a ferramenta de AI está configurada para usar o proxy na porta **9000**, ou na porta que você configurou.\n\n---\n\n## Pré-requisitos\n\n### Para Utilizar (Binário)\n\n| Requisito | Detalhe |\n|---|---|\n| **Sistema Operacional** | macOS (Apple Silicon & Intel), Windows 10\u002F11, Linux (amd64) |\n| **Privilégios** | macOS\u002FLinux: `sudo` na primeira execução; Windows: Administrador |\n\n> Não é necessário ter Go instalado.\n\n### Para Desenvolver ou Compilar\n\n| Requisito | Detalhe |\n|---|---|\n| **Sistema Operacional** | macOS (Apple Silicon & Intel), Windows 10\u002F11, Linux (amd64) |\n| **Go** | Versão 1.21 ou superior |\n| **Privilégios** | macOS\u002FLinux: `sudo` na primeira execução; Windows: Administrador |\n\n---\n\n## Estrutura de Ficheiros\n\n```\nGalileu\u002F\n├── galileu                  # Executável (macOS\u002FLinux)\n├── galileu.exe              # Executável (Windows)\n├── galileu-ca.pem           # Certificado CA gerado automaticamente\n├── galileu-ca-key.pem       # Chave privada do CA (⚠️ NÃO submeter para o repositório)\n├── galileu.yml              # Configuração do analyzer (não versionado)\n├── galileu.yml.example      # Exemplo de configuração (versionado)\n├── Makefile                 # Compilação multiplataforma\n├── scripts\u002F\n│   ├── start.sh             # Script shell para iniciar o OpenCode com proxy (macOS\u002FLinux)\n│   └── start.bat            # Script batch para iniciar o OpenCode com proxy (Windows)\n├── cmd\u002F\n│   └── galileu\u002F\n│       └── main.go          # Ponto de entrada\n├── internal\u002F\n│   ├── ca\u002F                  # Geração e gestão do certificado CA\n│   ├── doctor\u002F              # Diagnóstico do sistema\n│   └── guardian\u002F            # Proxy MITM, Analyzer, Audit, instalação de certificado por plataforma\n└── galileu_audit.log        # Registo de auditoria (gerado automaticamente na primeira execução)\n```\n\n---\n\n## Detecção Automática de Ferramentas de AI\n\nO Galileu é **agnóstico a ferramentas de AI**. Ele detecta automaticamente requisições de AI através da análise do payload, não do host.\n\n### Como Funciona\n\nO Galileu analisa o corpo (body) da requisição JSON e detecta se é uma requisição de AI através de campos característicos:\n\n| Campo | Provedor Típico |\n|---|---|\n| `model` | Qualquer API de LLM |\n| `messages` | OpenAI, Claude Code, Cursor, Windsurf |\n| `contents` | Google Gemini |\n| `anthropic_version` | Anthropic API |\n| `prompt` | Cohere, outros |\n| `input` | Algumas APIs |\n| `generationConfig` | Google Gemini |\n\n### Provider Inference\n\nO provider é inferido automaticamente do payload:\n\n| Provider | Detectado Por |\n|---|---|\n| `openai` | Model `gpt-*`, `o1-*`, `o3-*`, `o4-*` |\n| `anthropic` | Model `claude-*`, `sonnet-*`, `opus-*`, campo `anthropic_version` |\n| `google` | Campo `contents` ou `generationConfig` |\n| `gemini` | Model `gemini-*` |\n| `claude_code` | Model `command-*` |\n| `cursor` | Model `cursor-*` |\n| `windsurf` | Model `windsurf-*` |\n| `mistral` | Model `mistral-*` |\n| `cohere` | Model `cohere-*` |\n| `deepseek` | Model `deepseek-*` |\n| `openrouter` | Model `llama-*`, `mixtral-*` |\n\n---\n\n## Configuração de Proxy\n\nO Galileu suporta dois modos de operação:\n\n### Modo Whitelist (Padrão)\n\nApenas hosts permitidos são analisados:\n\n```yaml\nproxy:\n  mode: whitelist\n  allowed_hosts:\n    - \"*.openai.com\"\n    - \"*.anthropic.com\"\n    - \"*.generativelanguage.googleapis.com\"\n  skip_hosts:\n    - \"*.telemetry.*\"\n```\n\n### Modo Passivo (Recomendado para Ferramentas de AI)\n\nTodos os hosts são analisados, exceto os de telemetry\u002Fanalytics:\n\n```yaml\nproxy:\n  mode: passive\n  skip_hosts:\n    - \"*.telemetry.*\"\n    - \"*.analytics.*\"\n```\n\n### Wildcard Matching\n\nO Galileu suporta wildcards em hosts:\n\n| Padrão | Casa Com |\n|---|---|\n| `*.openai.com` | `api.openai.com`, `chat.openai.com` |\n| `*.telemetry.*` | `events.telemetry.example.com`, `telemetry.opencode.ai` |\n| `*.analytics.*` | `events.analytics.azure.com` |\n\n---\n\n## Hosts Monitorizados por Padrão\n\nNo modo whitelist, o Galileu intercepta requisições para os seguintes hosts:\n\n| Provedor | Host |\n|---|---|\n| OpenAI | `*.openai.com` |\n| Anthropic | `*.anthropic.com` |\n| Google AI | `*.generativelanguage.googleapis.com`, `*.aistudio.googleapis.com` |\n| Cohere | `*.cohere.ai` |\n| Mistral | `*.mistral.ai` |\n| OpenCode | `*.opencode.ai` |\n\n### Hosts Ignorados por Padrão (Telemetry)\n\n| Host | Motivo |\n|---|---|\n| `mobile.events.data.microsoft.com` | Microsoft telemetry |\n| `telemetry.opencode.ai` | OpenCode telemetry |\n| `claude.telemetry.anthropic.com` | Claude Code telemetry |\n| `cursor.telemetry` | Cursor telemetry |\n| `windsurf.telemetry` | Windsurf telemetry |\n| `*.telemetry.*` | Qualquer subdomain de telemetry |\n| `*.analytics.*` | Qualquer subdomain de analytics |\n\n---\n\n## Detecção de Dados Sensíveis\n\nO **Analyzer** detecta e sanitiza automaticamente os seguintes padrões:\n\n| Tipo | Padrão | Exemplo |\n|---|---|---|\n| OpenAI API Key | `sk-...` | `sk-1234567890abcdef...` |\n| OpenAI Project Key | `sk-proj-...` | `sk-proj-abc123...` |\n| Anthropic API Key | `sk-ant-...` | `sk-ant-abc123...` |\n| Google API Key | `AIzaSy...` | `AIzaSyABC123...` |\n| GitHub Token | `ghp_...` | `ghp_abcdef123456...` |\n| Slack Token | `xox[baprs]-...` | `xoxb-123456...` |\n| Discord Token | `xox[baprs]-...` | `xoxb-123456...` |\n| AWS Access Key | `AKIA...` | `AKIAIOSFODNN7...` |\n| AWS Secret Key | `wJalr...` | `wJalrXUtnFEM...` |\n\nTodos os dados sensíveis detectados são substituídos por `[REDACTED_BY_GALILEU]`.\n\n### Performance do Analyzer\n\nO algoritmo de análise foi benchmarkado em hardware real com múltiplas metodologias:\n\n![Performance Test](media\u002FperformanceTest.png)\n\n#### Benchmark Puro (Go testing.B)\n\n```\nCPU: 13th Gen Intel(R) Core(TM) i5-13400\nOS:  Linux (amd64)\n\nBenchmarkAnalyze-16      405961      2540 ns\u002Fop      13568 B\u002Fop      1 allocs\u002Fop\n```\n\n#### Teste de Latência (1000 iterações × 7 payloads)\n\n```\n=== Latência em Nanosegundos ===\nTotal de operações: 7000\nMédia: 1072.12 ns (1.07 µs)\nMin: 542 ns\nMax: 60242 ns\nP50: 706 ns  (0.71 µs)\nP95: 2329 ns (2.33 µs)\nP99: 5446 ns (5.45 µs)\nThroughput estimado: ~932,729 ops\u002Fs\n```\n\n#### Teste de Throughput (100 iterações × 7 payloads)\n\n```\n=== Throughput ===\nTotal de requisições processadas: 700\nTempo total: 0.66 ms\nMédia por requisição: 0.94 µs\nThroughput: 1,063,458 req\u002Fs\n```\n\n**Resultados Consolidados:**\n\n| Métrica | Valor |\n|---|---|\n| Latência média | ~1.07 µs |\n| Latência P95 | ~2.33 µs |\n| Latência P99 | ~5.45 µs |\n| Throughput | **>1 milhão req\u002Fs** |\n| Memória | 13.5 KB\u002Fop |\n| Alocações | 1 por operação |\n\n> **Nota Metodológica:** O benchmark primário é o teste `testing.B` do Go (405.961 iterações), o padrão mais rigoroso da linguagem. Os valores de throughput são baseados em amostras menores (700 operações) e servem como referência complementar.\n\n### Confiabilidade do Detector\n\nO detector foi exaustivamente testado para garantir **0% de falsos positivos**:\n\n![Todos os Testes](media\u002FallTests.png)\n\n#### Testes de True Positives\n\n![True Positives](media\u002FtruePositivesTest.png)\n\nTodos os 17 padrões suportados foram detectados corretamente:\n\n- ✓ openai_key (2 casos)\n- ✓ openai_project_key (2 casos)\n- ✓ anthropic_key (2 casos)\n- ✓ google_key (2 casos)\n- ✓ github_token (2 casos)\n- ✓ slack_token (6 casos)\n- ✓ aws_access_key (1 caso)\n\n#### ⚠️ Testes de Falsos Positivos (CRÍTICO)\n\n![False Positives](media\u002FfalsePositivesTest.png)\n\n**Resultado: 0\u002F32 (0.00%)** — ZERO falsos positivos nos casos de testes atuais(confira em \u002Fguardian\u002Fanalyzer_detection_test.go).\n\nCasos testados que NÃO foram detectados:\n- ✓ UUIDs (v4)\n- ✓ MD5\u002FSHA hashes\n- ✓ Base64 strings\n- ✓ Payloads normais (GPT, Claude, Gemini)\n- ✓ Nomes de métodos Go\n- ✓ URLs e caminhos\n- ✓ Tokens de outros serviços\n\n**Resultados dos Testes:**\n\n| Métrica | Resultado |\n|---|---|\n| True Positives | 17\u002F17 ✓ |\n| False Positives | 0\u002F32 (0.00%) ✓ |\n| Precisão | 100% |\n\n---\n\n## Registros de Auditoria\n\nO ficheiro `galileu_audit.log` é criado automaticamente ao finalizar a primeira execução e contém um registro JSON detalhado de cada requisição interceptada:\n\n- **Identificação**: Timestamp, Request ID, Session ID, Machine ID\n- **Requisição**: Host, Provider (inferido do payload), Path, Method, Modelo de LLM\n- **Detecção**: Padrões detectados, contagem, posições de redação\n- **Payload**: Contagem de mensagens, presença de system prompt, streaming\n- **Performance**: Latência do proxy, duração da análise\n- **Resposta**: Status code, tamanhos de request\u002Fresponse\n\nRequests ignorados (telemetry, analytics) são logados com `provider: \"skipped\"`.\n\nConsulte o ficheiro [markdown\u002FSCHEMA_AUDITORIA.md](markdown\u002FSCHEMA_AUDITORIA.md) para o schema completo dos campos de auditoria.\n\n---\n\n## Configuração (galileu.yml)\n\nO ficheiro `galileu.yml` é **opcional** e deve ser colocado no diretório onde o binário é executado. Se não existir, todos os padrões built-in são ativados automaticamente.\n\n### Estrutura do Ficheiro\n\n```yaml\nport: 9000\n\n# Configuração do Proxy (opcional)\nproxy:\n  mode: whitelist          # whitelist | passive\n  allowed_hosts:           # usado apenas no modo whitelist\n    - \"*.openai.com\"\n    - \"*.anthropic.com\"\n  skip_hosts:              # hosts sempre ignorados\n    - \"*.telemetry.*\"\n    - \"*.analytics.*\"\n\nanalyzer:\n\n  # ─── Padrões embutidos ──────────────────────────────────────\n  built_in:\n    openai_key:         true\n    openai_project_key: true\n    anthropic_key:      true\n    google_key:         true\n    github_token:       true\n    slack_token:        true\n    discord_token:      true\n    aws_key:            true\n\n  # ─── Padrões personalizados ─────────────────────────────────\n  custom_patterns:\n    # ...\n```\n\n### Modos de Operação\n\n| Modo | Descrição | Uso Recomendado |\n|---|---|---|\n| `whitelist` | Apenas hosts permitidos são analisados | Quando sabe exatamente quais APIs usar |\n| `passive` | Todos os hosts são analisados (exceto skip_hosts) | Claude Code, Cursor, Windsurf, ferramentas que usam múltiplas APIs |\n\n### Configuração para Claude Code \u002F Cursor \u002F Windsurf\n\n```yaml\nproxy:\n  mode: passive\n  skip_hosts:\n    - \"*.telemetry.*\"\n    - \"*.analytics.*\"\n    - \"mobile.events.data.microsoft.com\"\n```\n\n### Porta de Execução\n\n```yaml\nport: 9000\n```\n\nVocê pode escolher qualquer porta disponível. O padrão é `9000`.\n\n> **Nota:** Lembre-se de apontar a sua ferramenta de AI para a mesma porta definida aqui.\n\n### Padrões Customizados\n\n**Regex** — para padrões complexos:\n```yaml\ncustom_patterns:\n  - name: \"JWT Token\"\n    type: regex\n    pattern: 'eyJ[a-zA-Z0-9_-]+\\.eyJ[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+'\n    label: \"[JWT_REDACTED]\"\n    enabled: true\n```\n\n**Literal** — para strings exatas:\n```yaml\ncustom_patterns:\n  - name: \"Projetos Confidenciais\"\n    type: literal\n    values:\n      - \"Operação Phoenix\"\n      - \"Projeto Stargate\"\n    label: \"[CONFIDENTIAL_PROJECT_REDACTED]\"\n    enabled: true\n```\n\n#### Resultados dos Testes Customizados\n\n![Custom Patterns Literal](media\u002FCustomPatternsLiteralTest.png)\n\n![Custom Patterns False Positives](media\u002FCustomPatternsNoFalsePositivesTest.png)\n\n**Regex Customizado:**\n- DB_PASSWORD: 5\u002F5 ✓\n- Connection String: 5\u002F5 ✓\n- JWT: 1\u002F1 ✓\n- Private Key: 5\u002F5 ✓\n- False Positives: 0\u002F10 (0.00%) ✓\n\n**Literal Customizado:**\n- Tabelas Internas: 5\u002F5 ✓\n- Projetos Confidenciais: 5\u002F5 ✓\n\n### Notas Importantes\n\n1. **Formato YAML**: Use espaços (não tabs) para indentação\n2. **Aspas em Regex**: Use aspas simples `'...'` para patterns regex\n3. **Escape**: Use `\\x27` para evitar conflitos com aspas em patterns\n4. **Enabled**: `enabled: true` para ativar, `enabled: false` para desativar\n5. **Label**: O texto de substituição deve ser único e descritivo\n\n---\n\n## Testes\n\nExecute todos os testes com:\n\n```bash\nmake test\n```\n\n### Testes Específicos\n\n```bash\n# Testes do analyzer\nmake test\n\n# Benchmarks de performance\nmake benchmarks\n\n# Relatório de cobertura\nmake test-coverage\n```\n\n### Testes de Detecção de AI\n\n```bash\n# Testes de filtro e detecção\ngo test -v -run \"TestShouldProcessRequest|TestIsAIRequest|TestMatchWildcard\" .\u002Finternal\u002Fguardian\u002F...\n\n# Testes de provider inference\ngo test -v -run \"TestInferFromPayload\" .\u002Finternal\u002Fguardian\u002F...\n```\n\nConsulte o ficheiro [markdown\u002Ftests.md](markdown\u002Ftests.md) para mais informações sobre a execução dos testes.\n\n---\n\n## Resolução de Problemas\n\n**\"Falha ao ler certificado CA\"**\nRemova os ficheiros `galileu-ca.pem` e `galileu-ca-key.pem` e execute novamente. O certificado será regenerado automaticamente.\n\n**Windows: \"Privilégios de administrador necessários\"**\nExecute o `galileu.exe` como Administrador (clique direito → \"Executar como administrador\").\n\n**Linux: Erro de certificado SSL\u002FTLS**\nCertifique-se de que instalou o certificado conforme as instruções na secção \"Configuração do Certificado CA\".\n\n**Claude Code \u002F Cursor não funciona com proxy**\nConfigure o proxy no modo `passive` e adicione hosts de telemetry aos `skip_hosts`. Veja a seção \"Configuração (galileu.yml)\".\n\n---\n\n## Segurança\n\n- A chave privada (`galileu-ca-key.pem`) é gerada localmente e **nunca** sai da sua máquina\n- **Nunca** efetue commit dos ficheiros `.pem` para o repositório\n- O certificado CA é válido por **10 anos** com chave **RSA 4096-bit**\n- O proxy atua exclusivamente sobre as ferramentas que configurarem a porta definida\n\n### Verificação de Integridade\n\nCada binário publicado nas releases inclui um checksum SHA256. Para verificar a integridade do binário baixado:\n\n**Linux\u002FmacOS:**\n```bash\nsha256sum galileu-linux-amd64\n# Compare com o checksum publicado na release\n```\n\n**Windows (PowerShell):**\n```powershell\nGet-FileHash galileu-windows-amd64.exe -Algorithm SHA256\n# Compare com o checksum publicado na release\n```\n\nO arquivo `checksums.txt` contém todos os checksums e pode ser verificado com:\n```bash\nsha256sum -c checksums.txt\n```\n\nConsulte o ficheiro [SECURITY.md](SECURITY.md) para obter informações acerca do reporte de vulnerabilidades.\n\n---\n\n## Roadmap\n\n| Status | Feature | Descrição |\n|---|---|---|\n| ✅ | **Suporte a múltiplas ferramentas** | Galileu agora é agnóstico a ferramentas de AI |\n| ✅ | **Detecção automática via payload** | Detecta requisições de AI pela análise do JSON |\n| ✅ | **Provider inference** | Provider inferido do payload automaticamente |\n| ✅ | **Wildcard matching** | Suporte a `*.openai.com`, `*.telemetry.*` |\n| ✅ | **Modo passive** | Para usar com Claude Code, Cursor, Windsurf |\n| 🔄 | **TUI (Terminal User Interface)** | Interface interativa para configuração e monitorização em tempo real |\n| 🔜 | **Instalação via Homebrew** | `brew install galileu` |\n| 🔜 | **Plugin system** | Sistema de plugins para padrões customizados |\n\n---\n\n## Licença\n\nEste projeto está licenciado sob a **Apache License, Version 2.0**.\n\nCopyright © 2026 **Bruno Dantas de Oliveira Casé**\n\nVer ficheiro [LICENSE](LICENSE) para mais detalhes.","GalileuCLI 是一个专注于AI工具安全与数据治理的代理工具，旨在监控并净化发送给AI提供商的数据。它采用反向MITM（中间人）代理架构，在开发工具和AI服务器之间构建智能层，确保敏感信息的安全传输。该工具支持多种操作系统，包括macOS、Windows和Linux，并且能够与任何允许自定义代理设置的AI工具无缝集成，如OpenCode、Claude Code等。GalileuCLI特别适用于需要对AI交互过程中的数据流动进行严格控制和审计的企业或个人开发者环境中。","2026-06-11 04:00:59","CREATED_QUERY"]