{"id":47265294,"url":"https://github.com/mague/void-stack","last_synced_at":"2026-04-25T17:01:50.457Z","repository":{"id":343559934,"uuid":"1178220406","full_name":"Mague/void-stack","owner":"Mague","description":"DSM for developers — orchestrate, audit, and analyze your entire dev stack. MCP server with 27 tools for Claude \u0026 Cursor. Built in Rust.","archived":false,"fork":false,"pushed_at":"2026-04-18T20:13:31.000Z","size":3616,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-18T22:15:18.314Z","etag":null,"topics":["claude","cli","code-analysis","developer-experience","developer-tools","devops","docker","mcp","mcp-server","open-source","rust","rust-cli","security-audit","tauri","technical-debt","tui"],"latest_commit_sha":null,"homepage":"https://www.void-stack.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mague.png","metadata":{"files":{"readme":"README.es.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-10T20:12:25.000Z","updated_at":"2026-04-14T03:25:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Mague/void-stack","commit_stats":null,"previous_names":["mague/void-stack"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/Mague/void-stack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mague%2Fvoid-stack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mague%2Fvoid-stack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mague%2Fvoid-stack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mague%2Fvoid-stack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mague","download_url":"https://codeload.github.com/Mague/void-stack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mague%2Fvoid-stack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32269463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","cli","code-analysis","developer-experience","developer-tools","devops","docker","mcp","mcp-server","open-source","rust","rust-cli","security-audit","tauri","technical-debt","tui"],"created_at":"2026-03-15T04:21:10.835Z","updated_at":"2026-04-25T17:01:50.450Z","avatar_url":"https://github.com/Mague.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"crates/void-stack-desktop/icons/icon.svg\" alt=\"Void Stack\" width=\"120\" height=\"120\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eVoid Stack\u003c/h1\u003e\n\n[![CI](https://github.com/Mague/void-stack/actions/workflows/ci.yml/badge.svg)](https://github.com/Mague/void-stack/actions/workflows/ci.yml)\n[![Release](https://github.com/Mague/void-stack/actions/workflows/release.yml/badge.svg)](https://github.com/Mague/void-stack/actions/workflows/release.yml)\n[![Version](https://img.shields.io/github/v/release/Mague/void-stack?include_prereleases\u0026label=version)](https://github.com/Mague/void-stack/releases/latest)\n[![License](https://img.shields.io/github/license/Mague/void-stack)](LICENSE)\n[![Rust](https://img.shields.io/badge/rust-2024%20edition-orange)](https://www.rust-lang.org/)\n[![Tests](https://img.shields.io/badge/tests-1010%20passing-brightgreen)]()\n[![Coverage](https://img.shields.io/badge/coverage-80.5%25-brightgreen)]()\n\n**¿Tenés 10 proyectos con backends, frontends, workers y bases de datos, y no recordás cómo levantar ninguno?**\n\nVoid Stack resuelve eso. Un solo comando para arrancar todo tu stack de desarrollo — backend, frontend, base de datos, workers — en Windows, WSL o Docker. Sin recordar puertos, sin abrir 5 terminales, sin leer READMEs viejos.\n\n```bash\nvoid add mi-app F:\\proyectos\\mi-app    # Detecta servicios automáticamente\nvoid start mi-app                       # Levanta todo\n```\n\nEso es todo. Void Stack escanea tu proyecto, detecta qué frameworks usás (FastAPI, Vite, Express, Django...), genera los comandos correctos, y los ejecuta. Si hay un venv de Python, lo encuentra. Si falta un `node_modules`, te avisa.\n\n\u003e **Alto Rendimiento** — Built with Rust. Cero overhead de runtime, inicio instantáneo, mínimo consumo de memoria.\n\n\u003e **Flujo Agéntico** — MCP server con 43 herramientas permite que Claude Desktop / Claude Code gestione tus servicios, analice código y audite seguridad de forma autónoma.\n\n\u003e **Cloud-Native Roadmap** — Deploy a Vercel, DigitalOcean y más desde la misma config (próximamente).\n\n**[Read in English](README.md)** | **[void-stack.dev](https://void-stack.dev)**\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/77be9712-0263-4625-953d-5c6163b4de09\" alt=\"Void Stack Desktop — services running\" width=\"100%\"/\u003e\n  \u003cbr/\u003e\u003cbr/\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/817b3b04-9347-4bc0-a374-8708694b37fe\" alt=\"Void Stack TUI — navigating tabs\" width=\"80%\"/\u003e\n\u003c/div\u003e\n\n---\n\n## Dogfooding: Void Stack se analiza a sí mismo\n\nLas herramientas de análisis y auditoría de Void Stack se usan para mantener la calidad de su propio código. Esto es lo que encontró `void analyze void-stack --compare` y `void audit void-stack` — y cómo usamos esos hallazgos para mejorar:\n\n### Auditoría de seguridad\n\n```bash\nvoid audit void-stack\n# Risk Score: 2/100\n# 2 hallazgos low (uso de innerHTML — ya mitigado con DOMPurify)\n```\n\nLa auditoría inicial encontró 6 issues (risk score 25/100), pero 4 eran falsos positivos — patrones regex y templates en el código de detección marcados como \"secrets\". Esto nos llevó a agregar filtrado inteligente (allowlist de archivos auto-referenciales, detección de metacaracteres regex, filtrado de templates), bajando los falsos positivos de 83% a 0%.\n\n### Análisis de código\n\n```bash\nvoid analyze void-stack --compare\n# Patrón: Layered (80% confianza)\n# 214 módulos, 32.453 LOC, 37 deps externas\n# Complejidad máx: 152 (i18n en/es — tablas de datos, no lógica)\n# Anti-patrones: 26 (4 God Class medium, 13 Fat Controller, 8 Excessive Coupling)\n```\n\nHallazgos que motivaron refactorizaciones:\n\n| Hallazgo | Acción tomada |\n|----------|--------------|\n| God Class: `cli/main.rs` (1202 LOC, 25 fn) | Dividido en 6 módulos de comandos (~250 LOC main) |\n| God Class: `mcp/server.rs` (1197 LOC, 35 fn) | Dividido en 10 módulos de tools (~340 LOC server) |\n| God Class: `manager.rs` (30 fn) | Dividido en 4 submódulos (process, state, logs, url) |\n| God Class + Fat Controller: `vuln_patterns.rs` (789 LOC) | Dividido en 5 módulos por categoría (injection, xss, network, crypto, config) |\n| God Class: `db_models.rs` (1065 LOC) | Dividido en 7 submódulos por formato DB (python, sequelize, gorm, drift, proto, prisma) |\n| God Class: `generate_dockerfile.rs` (821 LOC) | Dividido en 6 submódulos por lenguaje (python, node, rust, go, flutter) |\n| God Class: `api_routes.rs` (747 LOC) | Dividido en 5 submódulos por protocolo (python, node, grpc, swagger) |\n| God Class: `architecture.rs` (788 LOC) | Dividido en 4 submódulos (externals, crates, infra) |\n| God Class: `classifier.rs` (759 LOC, 44 fn) | Dividido en 3 submódulos (lógica, tablas de señales, tests) |\n| Fat Controller: `cli/analysis.rs` (580 LOC) | Dividido en 4 submódulos (analyze, diagram, audit, suggest) |\n| CC=42: `analyze_best_practices` | Registro de linters table-driven (CC ~15) |\n| CC=41: `cmd_analyze` | Extraídas 11 funciones helper (CC ~10) |\n\n### Tracking de deuda técnica\n\n```bash\nvoid analyze void-stack --compare --label v0.23.6\n# Patrón: Layered (80% confianza)\n# Cobertura: 80.5% (último snapshot lcov)\n# Deuda explícita: 34 marcadores (TODO: 11, TEMP: 10, OPTIMIZE: 6, BUG: 3, XXX: 2, FIXME: 1, HACK: 1)\n# 960 tests pasando (936 core + 21 analyzer + 3 mcp)\n```\n\nNuevo en v0.22.0: los marcadores de deuda explícita (TODO/FIXME/HACK/XXX/OPTIMIZE/BUG/TEMP/WORKAROUND) ahora se escanean de los comentarios del código y se muestran en la salida CLI, reportes markdown y la pestaña Deuda del desktop. Las funciones complejas (CC≥10) se cruzan con datos de cobertura — las funciones críticas sin cobertura reciben advertencias `[!]` en CLI e indicadores 🔴 en markdown.\n\n---\n\n## Motor de Contexto Híbrido — Semántico + Estructural\n\nLa mayoría de herramientas te obligan a elegir: búsqueda semántica (encontrar conceptos relacionados) O grafos estructurales (trazar cadenas de llamadas). Void Stack combina ambos. Los embeddings vectoriales encuentran *lo que está conceptualmente relacionado*. Los grafos Tree-sitter muestran *lo que estructuralmente se rompe*. El resultado: contexto quirúrgico que ninguna herramienta de enfoque único puede igualar.\n\n| Enfoque | Consulta | Resultado |\n|---|---|---|\n| **Solo semántico** | \"flujo de auth middleware\" | Chunks conceptualmente relacionados |\n| **Solo estructural** | \"callers de validateToken\" | Cadena de llamadas directa |\n| **Híbrido (Void Stack)** | Ambos simultáneamente | Chunks relacionados + blast radius |\n\nVoid Stack indexa tu codebase localmente con embeddings BAAI/bge-small-en-v1.5 y arma un grafo de llamadas con Tree-sitter — así tu asistente de IA lee solo lo que importa en lugar de escanear cada archivo.\n\n### Cómo funciona\n\n```bash\n# Indexá una vez (corre en background, ~30s para 250 archivos)\nvoid index mi-proyecto\n\n# Buscá por concepto, no por nombre de archivo\nvoid search mi-proyecto \"authentication middleware flow\"\n# Devuelve los 3-5 chunks más relevantes — no el archivo entero\n\n# Re-indexado incremental guiado por git, no por timestamps\nvoid index mi-proyecto --git-base HEAD~1   # solo archivos cambiados en el último commit\nvoid index mi-proyecto --force             # rebuild completo\n\n# Desde Claude Desktop / Claude Code vía MCP:\n#   build_structural_graph mi-proyecto         (Tree-sitter, 10 lenguajes)\n#   get_impact_radius      mi-proyecto         (BFS de blast-radius)\n#   query_graph            mi-proyecto callers (quién llama a esta función)\n#   watch_project          mi-proyecto         (re-index automático al guardar)\n#   install_index_hook     mi-proyecto         (re-index en post-commit)\n```\n\n### Benchmarks (medidos sobre void-stack)\n\n| Operación | Sin índice | Con void-stack | Reducción |\n|-----------|----------:|---------------:|----------:|\n| `semantic_search` (avg) | ~170 líneas / archivo | ~4 líneas / resultado | **97.5 %** |\n| Entender un módulo | 5-10 lecturas de archivo | 1 consulta | **~10x** |\n| Blast radius de un cambio | Manual, horas | `get_impact_radius` | **instantáneo** |\n\n*El 97.5 % lo reporta `void stats --days 90` a lo largo de 135 operaciones `semantic_search` — 23 868 líneas de código que nunca entraron al contexto del LLM.*\n\n### Lenguajes soportados\n\n- **Índice semántico** (embeddings): toda extensión de código en `CODE_EXTENSIONS` — Rust, Python, JS/TS, Go, Dart, Java, PHP, C/C++, Ruby, Swift, Kotlin, Lua, Zig, Elixir, Vue, Svelte, Astro, más `md`/`proto`/`sql`/`dockerfile`.\n- **Grafo estructural** (Tree-sitter): Rust, Python, JavaScript, TypeScript (+ TSX), Go, Dart, Java, PHP, C, C++.\n\nAnálisis estructural inspirado en [code-review-graph](https://github.com/tirth8205/code-review-graph) (MIT) — mapeos de nodos AST y lógica de BFS reimplementados nativamente en Rust.\n\n---\n\n## Interfaces\n\nVoid Stack tiene **4 interfaces** — usá la que prefieras:\n\n| Interfaz | Descripción |\n|----------|-------------|\n| **CLI** (`void`) | Comandos rápidos desde terminal |\n| **TUI** (`void-stack-tui`) | Dashboard interactivo: servicios, análisis, auditoría de seguridad, deuda, espacio |\n| **Desktop** (`void-stack-desktop`) | App de escritorio con UI gráfica (Tauri + React) — Windows (.msi), macOS (.dmg), Linux (.deb) |\n| **MCP Server** (`void-stack-mcp`) | Integración con Claude Desktop / Claude Code |\n\n## Ejemplo completo: FastAPI + React en 30 segundos\n\nSupongamos que tenés un proyecto con un backend FastAPI y un frontend React:\n\n```\nmi-app/\n├── backend/       # FastAPI con venv\n│   ├── main.py    # from fastapi import FastAPI\n│   └── .venv/\n├── frontend/      # React con Vite\n│   ├── package.json\n│   └── src/\n└── .env\n```\n\n```bash\n# 1. Registrar el proyecto (escanea y detecta los servicios)\nvoid add mi-app F:\\proyectos\\mi-app\n\n# Void Stack detecta:\n#   ✓ backend  → uvicorn main:app --host 0.0.0.0 --port 8000\n#   ✓ frontend → npm run dev\n#   ✓ .venv    → auto-resuelve python al virtualenv\n\n# 2. Verificar dependencias\nvoid check mi-app\n#   ✅ Python 3.11 (venv detectado)\n#   ✅ Node 20.x (node_modules actualizado)\n#   ✅ .env completo vs .env.example\n\n# 3. Levantar todo\nvoid start mi-app\n#   [backend]  → http://localhost:8000\n#   [frontend] → http://localhost:5173\n\n# 4. O abrir el dashboard interactivo\nvoid-tui mi-app\n```\n\n## Instalación\n\n### Binarios (recomendado)\n\nDescargá los binarios precompilados desde [Releases](https://github.com/mague/void-stack/releases) — sin necesidad de Rust.\n\n| Plataforma | Archivo |\n|------------|---------|\n| Windows    | `.msi` / `.exe` (NSIS) |\n| macOS      | `.dmg` |\n| Linux      | `.deb` / `.AppImage` |\n\n\u003e **Extensión Claude Desktop** — Cada release también incluye archivos `.mcpb` (uno por plataforma). Arrastrá el `.mcpb` a Claude Desktop para instalar el MCP server sin configuración.\n\n\u003e **Nota macOS:** Si aparece *\"no se puede abrir porque no se puede verificar el desarrollador\"*, ejecuta:\n\u003e ```bash\n\u003e xattr -cr /Applications/Void\\ Stack.app\n\u003e ```\n\n### Desde GitHub (Cargo)\n\n```bash\n# CLI principal (la herramienta core)\ncargo install --git https://github.com/mague/void-stack void-stack-cli\n\n# TUI Dashboard\ncargo install --git https://github.com/mague/void-stack void-stack-tui\n\n# MCP Server (para integración con Claude Desktop / Claude Code)\ncargo install --git https://github.com/mague/void-stack void-stack-mcp\n\n# Daemon gRPC (opcional, para gestión persistente)\ncargo install --git https://github.com/mague/void-stack void-stack-daemon\n```\n\n**Prerequisitos:** [Rust](https://rustup.rs) + compilador Protobuf (`winget install Google.Protobuf` en Windows)\n\n### Compilar desde código fuente\n\n```bash\ngit clone https://github.com/mague/void-stack.git\ncd void-stack\ncargo build --release\n\n# Binarios en target/release/\n#   void              — CLI\n#   void-stack-tui    — Dashboard en terminal\n#   void-stack-daemon — Daemon gRPC\n#   void-stack-mcp    — MCP server para AI\n```\n\n### App de escritorio (Tauri)\n\n```bash\ncd crates/void-stack-desktop\ncargo tauri build\n# Genera instalador en target/release/bundle/\n```\n\n## Excluir archivos del análisis\n\nCrea `.voidignore` en la raíz de tu proyecto para excluir paths de `void analyze`:\n\n```\n# Código generado\ninternal/pb/\nvendor/\n**/*.pb.go\n**/*.pb.gw.go\n\n# Mocks\n**/mocks/\n**/*_mock.go\n```\n\nMisma sintaxis que `.gitignore` (simplificada). Soporta prefijos de paths, globs `**/` y nombres de directorio.\n\n## Features\n\n- **Multi-servicio** — Arrancá/detené todos los servicios juntos o individualmente\n- **Cross-platform** — Windows (`cmd`), macOS, WSL (`bash`), contenedores Docker, SSH (futuro)\n- **Auto-detección** — Escanea directorios e identifica Python, Node, Rust, Go, Flutter, Docker\n- **Comandos inteligentes** — Detecta FastAPI, Flask, Django, Vite, Next.js, Express, Air (hot-reload Go) y genera el comando correcto\n- **Hooks pre-launch** — Crea venvs, instala dependencias (`pip install`, `npm install`, `go mod download`) por servicio antes de iniciar. Funciona sin configuración\n- **Chequeo de dependencias** — Verifica Python, Node, CUDA, Ollama, Docker, Rust, `.env`\n- **Logs en vivo** — Stdout/stderr de todos los servicios con detección automática de URLs\n- **Diagramas** — Genera Mermaid y Draw.io desde la estructura del proyecto usando scanners unificados (arquitectura, rutas API con enriquecimiento Swagger/OpenAPI, separación API interna/externa, servicios gRPC/Protobuf, modelos DB con layout por proximidad FK — Prisma, Sequelize, GORM, Django, SQLAlchemy, Drift)\n- **Análisis de código** — Grafos de dependencias, anti-patrones, complejidad ciclomática, cobertura\n- **Best practices** — Linters nativos (react-doctor, ruff, clippy, golangci-lint, dart analyze) con scoring unificado\n- **Deuda técnica** — Snapshots de métricas con comparación de tendencias\n- **AI integration** — MCP server con 43 herramientas para Claude Desktop / Claude Code; sugerencias de refactorización con IA via Ollama (LLM local) con fallback elegante\n- **Búsqueda semántica de código** — Indexá cualquier proyecto localmente con embeddings BAAI/bge-small-en-v1.5 (100 % offline, ~130 MB descarga única). `void search` y el tool MCP `semantic_search` devuelven solo los chunks relevantes — 97.5 % menos tokens que leer archivos directamente (medido sobre void-stack con 135 consultas).\n- **Grafo de llamadas estructural** — Análisis función-por-función con Tree-sitter para Rust, Python, JS, TS, Go, Dart, Java, PHP, C y C++. Persiste en `.void-stack/structural.db`. El BFS de blast-radius (`get_impact_radius`) contesta *\"¿qué se rompe si cambio este archivo?\"* antes de tocar una línea.\n- **Indexado incremental** — Git diff + hashing SHA-256: `--git-base HEAD~1` solo re-indexa archivos realmente cambiados desde el último commit. `watch_project` (MCP) re-indexa automáticamente al guardar con 500 ms de debounce; `install_index_hook` (MCP) instala un post-commit hook para que cada commit mantenga el índice al día.\n- **Escáner de espacio** — Escanea y limpia deps del proyecto (node_modules, venv, target) y cachés globales (npm, pip, Cargo, Ollama, HuggingFace, LM Studio)\n- **Desktop GUI** — App Tauri con estética cyberpunk mission-control, jerarquía visual (KPI cards, efectos glow, gradientes por severidad), servicios, logs, dependencias, diagramas, análisis, docs, seguridad, deuda técnica y espacio en disco\n- **Daemon** — gRPC daemon opcional para gestión persistente\n- **Auditoría de seguridad** — Vulnerabilidades en deps, secrets hardcodeados, configs inseguras, patrones de vulnerabilidad en código (inyección SQL, XSS, SSRF, y más) con filtrado inteligente de falsos positivos\n- **Docker Runner** — Servicios con `target = \"docker\"` se ejecutan dentro de contenedores Docker. Cuatro modos: comandos docker crudos, referencias a imagen (`postgres:16` → auto `docker run`), auto-detección de Compose, y builds desde Dockerfile\n- **Docker Intelligence** — Parsea Dockerfiles y docker-compose.yml, auto-genera Dockerfiles por framework (Python, Node, Rust, Go, Flutter), genera docker-compose.yml con infraestructura auto-detectada (PostgreSQL, Redis, MongoDB, etc.)\n- **Infrastructure Intelligence** — Detecta recursos Terraform, manifiestos Kubernetes y charts Helm — todo integrado en diagramas de arquitectura\n- **Seguridad** — Nunca lee valores de `.env`; protección centralizada de archivos sensibles\n\n## CLI\n\n| Comando | Descripción |\n|---------|-------------|\n| `void add \u003cn\u003e \u003cpath\u003e` | Registrar proyecto (auto-detecta servicios) |\n| `void add-service \u003cproject\u003e \u003cn\u003e \u003ccmd\u003e -d \u003cdir\u003e` | Agregar servicio manualmente |\n| `void remove \u003cn\u003e` | Desregistrar proyecto |\n| `void list` | Listar proyectos y servicios |\n| `void scan \u003cpath\u003e` | Vista previa de detección sin registrar |\n| `void start \u003cproject\u003e [-s service]` | Iniciar todo o un servicio |\n| `void stop \u003cproject\u003e [-s service]` | Detener todo o un servicio |\n| `void status \u003cproject\u003e` | Estado en vivo: PIDs, URLs, uptime |\n| `void check \u003cproject\u003e` | Verificar dependencias |\n| `void diagram \u003cproject\u003e [-f mermaid\\|drawio] [--print-content]` | Generar diagramas |\n| `void audit \u003cproject\u003e [-o file]` | Auditoría de seguridad |\n| `void analyze \u003cproject\u003e [--compare] [--cross-project] [--best-practices]` | Análisis de código |\n| `void docker \u003cproject\u003e [--generate-dockerfile] [--generate-compose] [--save]` | Docker intelligence |\n| `void suggest \u003cproject\u003e [--model \u003cm\u003e] [--service \u003cs\u003e] [--raw]` | Sugerencias AI de refactorización (Ollama) |\n| `void read-file \u003cproject\u003e \u003cpath\u003e` | Leer cualquier archivo del proyecto (bloquea .env, credenciales) |\n| `void logs \u003cproject\u003e \u003cservice\u003e [-n lines] [--compact] [--raw]` | Ver logs filtrados de un servicio |\n| `void index \u003cproject\u003e [--force] [--generate-voidignore] [--git-base \u003cref\u003e]` | Indexar codebase para búsqueda semántica (`--git-base HEAD~1` usa git diff) |\n| `void search \u003cproject\u003e \"\u003cquery\u003e\" [-t top_k]` | Búsqueda semántica de código |\n| `void stats [--project \u003cp\u003e] [--days \u003cd\u003e] [--json]` | Estadísticas de ahorro de tokens |\n| `void claudeignore \u003cproject\u003e [--dry-run] [--force]` | Genera `.claudeignore` optimizado para el tech stack |\n\n**Flags:** `--wsl` (rutas WSL), `--daemon` (conectar al daemon), `--compare` (comparar snapshots), `--cross-project` (dependencias entre proyectos), `--label \u003ctag\u003e` (etiquetar snapshot)\n\n### Tools MCP (Claude Desktop / Claude Code / OpenCode)\n\nNo son comandos CLI — los expone `void-stack-mcp`:\n\n| Tool | Descripción |\n|------|-------------|\n| `watch_project` / `unwatch_project` | Auto re-indexado al detectar cambios (~500 ms debounce) |\n| `install_index_hook` | Instala un `post-commit` hook que re-indexa los archivos cambiados |\n| `build_structural_graph` | Grafo de llamadas Tree-sitter en 10 lenguajes — Rust, Python, JS, TS, Go, Dart, Java, PHP, C, C++ (`--features structural`) |\n| `get_impact_radius` | BFS de blast-radius — qué se ve afectado al cambiar un archivo |\n| `query_graph` | Callers / callees / tests / búsqueda fuzzy sobre el grafo estructural |\n| `full_analysis` | Audit + arquitectura + hot-spots semánticos combinados en un reporte (quick/standard/deep) |\n| `manage_suppressions` | Listar / agregar / eliminar reglas de supresión del auditor sin editar archivos |\n| `setup_project` | Onboarding en un click: registrar + generar ignores + indexar + auditar + analizar |\n\n\u003e Análisis estructural inspirado en [code-review-graph](https://github.com/tirth8205/code-review-graph) (MIT).\n\n## TUI Dashboard\n\n```bash\nvoid-tui                # Todos los proyectos\nvoid-tui my-project     # Proyecto específico\nvoid-tui --daemon       # Vía daemon\n```\n\n| Tecla | Acción |\n|-------|--------|\n| `a` | Iniciar todos los servicios |\n| `s` | Iniciar servicio seleccionado |\n| `k` | Detener servicio seleccionado |\n| `K` | Detener todos |\n| `1`-`5` | Cambiar tab (Services/Analysis/Security/Debt/Space) |\n| `R` | Ejecutar acción (analizar, auditar, escanear) en tab actual |\n| `j`/`↓` | Navegar abajo |\n| `l` | Toggle panel de logs |\n| `Tab` | Cambiar panel |\n| `r` | Refrescar estado |\n| `L` | Cambiar idioma (ES/EN) |\n| `?` | Ayuda |\n| `q` | Salir (detiene servicios) |\n\n**i18n:** Español (por defecto) e Inglés. Presiona `L` para cambiar.\n\n**Tabs:** Servicios (gestionar/monitorear), Análisis (patrón de arquitectura, capas, anti-patrones, complejidad + cobertura), Seguridad (risk score, hallazgos), Deuda (marcadores TODO/FIXME/HACK), Espacio (uso de disco proyecto + global)\n\n## Desktop (Tauri)\n\nApp de escritorio con interfaz gráfica oscura:\n\n- **Servicios**: Cards con estado (running/stopped/failed), PID, uptime, URL (abre en navegador), controles start/stop, iconos por tecnología con glow en color de marca al estar corriendo, badges de target por SO (Windows/macOS/Linux/Docker) con detección automática de plataforma, eliminación de servicios con confirmación\n- **Registros**: Visor de logs en vivo con selector de servicio y auto-scroll\n- **Dependencias**: Tabla de checks con estado, versión, sugerencia de fix\n- **Diagramas**: Rendering Mermaid + rendering nativo de Draw.io XML (renderizador SVG custom con DOMPurify) para arquitectura, rutas API, modelos DB\n- **Análisis**: Patrones de arquitectura, anti-patrones, complejidad ciclomática, visualización de cobertura\n- **Docs**: Renderiza README y archivos de documentación con estilo markdown\n- **Espacio**: Escanea cachés del proyecto + globales, muestra tamaños, permite eliminar para liberar espacio\n- **Seguridad**: Risk score, hallazgos de vulnerabilidad, detección de secrets, auditoría de configs\n- **Deuda Técnica**: Snapshots de métricas con comparación de tendencias, detalles expandibles (god classes, funciones complejas, anti-patrones, deps circulares)\n- **Docker**: Parsea y analiza artefactos Docker existentes, genera Dockerfiles y docker-compose.yml, guarda en proyecto\n- **Sidebar**: Navegación entre proyectos, agregar/eliminar proyectos, explorador de archivos WSL\n- **UX**: Botones de copiar en resultados, tooltips educativos, zoom en diagramas, tipografía Material Design 3\n\n## MCP Server (AI Integration)\n\nPermite que Claude Desktop, Claude Code u OpenCode gestionen tus proyectos directamente.\n\n**Windows** — Agregar a `%APPDATA%\\Claude\\claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"void-stack\": {\n      \"command\": \"void-stack-mcp.exe\"\n    }\n  }\n}\n```\n\n**macOS** — Agregar a `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"void-stack\": {\n      \"command\": \"/Users/TU_USUARIO/.cargo/bin/void-stack-mcp\"\n    }\n  }\n}\n```\n\n**Linux** — Agregar a `~/.config/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"void-stack\": {\n      \"command\": \"void-stack-mcp\"\n    }\n  }\n}\n```\n\n**OpenCode** (modelos gratuitos — sin API key requerida) — Agregar a `~/.config/opencode/opencode.json`:\n\n```json\n{\n  \"mcp\": {\n    \"void-stack\": {\n      \"type\": \"local\",\n      \"command\": [\"void-stack-mcp\"],\n      \"enabled\": true\n    }\n  }\n}\n```\n\n\u003e En macOS usá la ruta completa: `[\"~/.cargo/bin/void-stack-mcp\"]`\n\n\u003e **Ventaja OpenCode:** Funciona con modelos gratuitos (MiniMax, Qwen, DeepSeek) — costo cero de API, integración completa con void-stack MCP.\n\n\u003e **Nota macOS:** Claude Desktop y OpenCode se inician con un PATH mínimo que no incluye `~/.cargo/bin`. Usá la **ruta absoluta completa** al binario. Ejecutá `which void-stack-mcp` en Terminal para obtenerla. También eliminá el atributo de cuarentena o macOS bloqueará el binario silenciosamente:\n\u003e ```bash\n\u003e xattr -d com.apple.quarantine ~/.cargo/bin/void-stack-mcp\n\u003e ```\n\n**Tools disponibles (42):** `list_projects`, `project_status`, `start_project`, `stop_project`, `start_service`, `stop_service`, `get_logs`, `add_project`, `remove_project`, `check_dependencies`, `read_project_docs`, `read_all_docs`, `read_project_file`, `list_project_files`, `generate_diagram`, `analyze_project`, `audit_project`, `scan_directory`, `add_service`, `save_debt_snapshot`, `list_debt_snapshots`, `compare_debt`, `analyze_cross_project`, `scan_project_space`, `scan_global_space`, `docker_analyze`, `docker_generate`, `suggest_refactoring`, `generate_claudeignore`, `generate_voidignore`, `get_token_stats`, `index_project_codebase`, `semantic_search`, `get_index_stats`, `watch_project`, `unwatch_project`, `install_index_hook`, `build_structural_graph`, `get_impact_radius`, `query_graph`, `full_analysis`, `manage_suppressions`\n\n## Detección de dependencias\n\n| Detector | Verifica |\n|----------|----------|\n| Python | Binario, versión, venv, `pip check` |\n| Node | Binario, frescura de `node_modules` |\n| CUDA | `nvidia-smi`, driver, GPU, VRAM, PyTorch |\n| Ollama | Binario, API health, modelos descargados |\n| Docker | Binario, estado del daemon, compose |\n| Rust | Versiones de `rustc` y `cargo` |\n| Go | `go version`, presencia de `go.mod` |\n| Flutter | `flutter --version`, `dart --version`, `pubspec.yaml` |\n| .env | Compara `.env` vs `.env.example` |\n\n## Análisis de código\n\n```bash\nvoid analyze my-app -o analysis.md\nvoid analyze my-app --compare --label v2.0\nvoid analyze my-app --cross-project\nvoid analyze my-app --best-practices\nvoid analyze my-app --bp-only         # Solo linters, omite análisis de arquitectura\n```\n\n- **Patrones** — MVC, Layered, Clean/Hexagonal con confianza\n- **Anti-patrones** — God Class, Dependencias Circulares, Fat Controllers, Acoplamiento Excesivo\n- **Complejidad ciclomática** — Por función (Python, JS/TS, Go, Dart, Rust)\n- **Cobertura** — LCOV, Cobertura, Istanbul, Go cover profiles\n- **Grafos** — Diagramas Mermaid de relaciones entre módulos\n- **Tendencias** — Snapshots históricos con comparación\n\n## Diagramas\n\n```bash\nvoid diagram my-app                 # Draw.io (default)\nvoid diagram my-app -f mermaid      # Mermaid markdown\n```\n\nDetecta: arquitectura de servicios, servicios externos (por extracción de URLs del código fuente y .env), llamadas internas entre servicios (cruce de localhost por puerto), rutas API con enriquecimiento Swagger/OpenAPI (FastAPI, Flask, Express, gRPC/Protobuf), separación de APIs internas vs públicas, modelos DB (SQLAlchemy, Django, Prisma, Sequelize, GORM, Drift, mensajes Protobuf), relaciones entre crates Rust.\n\n## Arquitectura\n\n```\nvoid-stack/\n├── crates/\n│   ├── void-stack-core/       # Librería core: modelos, config, runners, detectors, analyzers\n│   ├── void-stack-proto/      # Definiciones Protobuf + cliente gRPC\n│   ├── void-stack-daemon/     # Daemon con servidor gRPC (tonic)\n│   ├── void-stack-tui/        # Dashboard terminal (ratatui)\n│   ├── void-stack-mcp/        # MCP server para AI assistants\n│   ├── void-stack-desktop/    # App Tauri v2 (React + TypeScript)\n│   └── void-stack-cli/        # Interfaz CLI (clap)\n├── example-void-stack.toml\n└── CHANGELOG.md\n```\n\n## Configuración\n\n### `void-stack.toml` (por proyecto)\n\n```toml\nname = \"mi-fullstack-app\"\ndescription = \"Full stack app\"\nproject_type = \"node\"\n\n[hooks]\ninstall_deps = true\n\n[[services]]\nname = \"backend-api\"\ncommand = \"npm run dev\"\ntarget = \"wsl\"\nworking_dir = \"./backend\"\n\n[[services]]\nname = \"web-frontend\"\ncommand = \"npm run dev\"\ntarget = \"windows\"\nworking_dir = \"./frontend\"\n\n[[services]]\nname = \"database\"\ncommand = \"docker compose up postgres redis\"\ntarget = \"docker\"\n\n[[services]]\nname = \"cache\"\ncommand = \"redis:7-alpine\"\ntarget = \"docker\"\n[services.docker]\nports = [\"6379:6379\"]\n```\n\n### Config global\n\nTodos los proyectos se almacenan en una ubicación específica de la plataforma:\n- **Windows:** `%LOCALAPPDATA%\\void-stack\\config.toml`\n- **macOS:** `~/Library/Application Support/void-stack/config.toml`\n- **Linux:** `~/.config/void-stack/config.toml`\n\nCada servicio tiene `working_dir` absoluto, soportando monorepos y layouts distribuidos.\n\n## Seguridad\n\n- Los **valores** de `.env` **nunca se leen ni almacenan** — solo los nombres de variables\n- Archivos sensibles (`.env`, `credentials.json`, claves privadas, `secrets.*`) bloqueados del análisis y MCP\n- Deny-list centralizada en `security.rs` cubre todos los paths de lectura de archivos\n\n## Licencia\n\nEste proyecto está licenciado bajo la [Apache License 2.0](LICENSE). Consulta el archivo LICENSE para más detalles.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmague%2Fvoid-stack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmague%2Fvoid-stack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmague%2Fvoid-stack/lists"}