{"id":43002631,"url":"https://github.com/mcp-tool-shop-org/integradio","last_synced_at":"2026-02-27T01:00:56.589Z","repository":{"id":333711686,"uuid":"1138398076","full_name":"mcp-tool-shop-org/integradio","owner":"mcp-tool-shop-org","description":"Vector-embedded Gradio components for semantic codebase navigation","archived":false,"fork":false,"pushed_at":"2026-02-26T08:16:13.000Z","size":2861,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-26T08:46:30.445Z","etag":null,"topics":["ai-ui","embeddings","fastapi","gradio","hnsw","nomic-embed-text","ollama","python","semantic-search","ui-components","vector-embeddings","visualization"],"latest_commit_sha":null,"homepage":"https://mcp-tool-shop-org.github.io/integradio/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcp-tool-shop-org.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},"funding":{"github":["mcp-tool-shop"]}},"created_at":"2026-01-20T16:12:11.000Z","updated_at":"2026-02-26T08:16:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mcp-tool-shop-org/integradio","commit_stats":null,"previous_names":["mikeyfrilot/integradio","mcp-tool-shop/integradio"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mcp-tool-shop-org/integradio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcp-tool-shop-org%2Fintegradio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcp-tool-shop-org%2Fintegradio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcp-tool-shop-org%2Fintegradio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcp-tool-shop-org%2Fintegradio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcp-tool-shop-org","download_url":"https://codeload.github.com/mcp-tool-shop-org/integradio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcp-tool-shop-org%2Fintegradio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29879896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"ssl_error","status_checked_at":"2026-02-26T23:50:46.793Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ai-ui","embeddings","fastapi","gradio","hnsw","nomic-embed-text","ollama","python","semantic-search","ui-components","vector-embeddings","visualization"],"created_at":"2026-01-31T04:10:05.749Z","updated_at":"2026-02-27T01:00:56.572Z","avatar_url":"https://github.com/mcp-tool-shop-org.png","language":"Python","funding_links":["https://github.com/sponsors/mcp-tool-shop"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.ja.md\"\u003e日本語\u003c/a\u003e | \u003ca href=\"README.zh.md\"\u003e中文\u003c/a\u003e | \u003ca href=\"README.es.md\"\u003eEspañol\u003c/a\u003e | \u003ca href=\"README.fr.md\"\u003eFrançais\u003c/a\u003e | \u003ca href=\"README.hi.md\"\u003eहिन्दी\u003c/a\u003e | \u003ca href=\"README.it.md\"\u003eItaliano\u003c/a\u003e | \u003ca href=\"README.pt-BR.md\"\u003ePortuguês (BR)\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/integradio/readme.png\" alt=\"Integradio\" width=\"400\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/mcp-tool-shop-org/integradio/actions/workflows/docker.yml\"\u003e\u003cimg src=\"https://github.com/mcp-tool-shop-org/integradio/actions/workflows/docker.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/integradio/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/integradio\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://mcp-tool-shop-org.github.io/integradio/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Landing_Page-live-blue\" alt=\"Landing Page\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n## Descripción general\n\nIntegradio extiende [Gradio](https://gradio.app/) con capacidades de búsqueda semántica impulsadas por incrustaciones (embeddings). Los componentes llevan representaciones vectoriales que los hacen descubribles por intención, en lugar de solo por ID o etiqueta.\n\n**Características principales:**\n- Envoltura de componentes no intrusiva (funciona con cualquier componente de Gradio)\n- Búsqueda semántica a través de Ollama/nomic-embed-text\n- Extracción automática de flujos de datos a partir de listeners de eventos\n- Múltiples formatos de visualización (Mermaid, D3.js, ASCII)\n- 10 plantillas de página predefinidas\n- Integración con FastAPI para acceso programático\n\n## ¿Por qué Integradio?\n\n| Problema | Solución |\n| --------- | ---------- |\n| Los componentes de Gradio son opacos para los agentes de IA. | Las intenciones semánticas hacen que cada widget sea descubrible. |\n| Crear paneles desde cero cada vez. | 10 plantillas de página predefinidas, listas para personalizar. |\n| Sin acceso programático a los gráficos de componentes. | Rutas de FastAPI + visualización D3.js / Mermaid. |\n| La lógica de incrustación está dispersa en toda tu aplicación. | Un envoltorio, almacenamiento automático de vectores. |\n\n## Requisitos\n\n- Python 3.10+\n- [Ollama](https://ollama.ai/) con el modelo `nomic-embed-text`\n- Gradio 4.0+ (compatible con Gradio 5.x y 6.x)\n\n## Instalación\n\n```bash\n# Basic installation\npip install integradio\n\n# With all optional dependencies\npip install \"integradio[all]\"\n\n# Development installation\npip install -e \".[dev]\"\n```\n\n### Configuración de Ollama\n\nIntegradio requiere Ollama para generar incrustaciones:\n\n```bash\n# Install Ollama (see https://ollama.ai/)\n# Then pull the embedding model:\nollama pull nomic-embed-text\n\n# Start Ollama server\nollama serve\n```\n\n## Comienzo rápido\n\n```python\nimport gradio as gr\nfrom integradio import SemanticBlocks, semantic\n\nwith SemanticBlocks() as demo:\n    # Wrap components with semantic intent\n    query = semantic(\n        gr.Textbox(label=\"Search Query\"),\n        intent=\"user enters search terms\"\n    )\n\n    search_btn = semantic(\n        gr.Button(\"Search\"),\n        intent=\"triggers the search operation\"\n    )\n\n    results = semantic(\n        gr.Markdown(),\n        intent=\"displays search results\"\n    )\n\n    search_btn.click(fn=search, inputs=query, outputs=results)\n\n# Components are now searchable by semantic intent\nresults = demo.search(\"user input\")  # Finds the Textbox\nprint(demo.summary())  # Shows all registered components\n\ndemo.launch()\n```\n\n## Referencia de la API\n\n### SemanticBlocks\n\n`gr.Blocks` extendido con registro e integración de incrustador.\n\n```python\nwith SemanticBlocks(\n    db_path=None,           # SQLite path (None = in-memory)\n    cache_dir=None,         # Embedding cache directory\n    ollama_url=\"http://localhost:11434\",\n    embed_model=\"nomic-embed-text\",\n) as demo:\n    ...\n\n# Methods\ndemo.search(query, k=10)     # Semantic search\ndemo.find(query)             # Get single most relevant component\ndemo.trace(component)        # Get upstream/downstream flow\ndemo.map()                   # Export graph as D3.js JSON\ndemo.describe(component)     # Full metadata dump\ndemo.summary()               # Text report\n```\n\n### semantic()\n\nEnvolver cualquier componente de Gradio con metadatos semánticos.\n\n```python\ncomponent = semantic(\n    gr.Textbox(label=\"Name\"),\n    intent=\"user enters their full name\",\n    tags=[\"form\", \"required\"],\n)\n```\n\n### Envolturas especializadas\n\nPara componentes complejos, utilice envolturas especializadas que proporcionen metadatos semánticos más ricos:\n\n```python\nfrom integradio import (\n    semantic_multimodal,      # MultimodalTextbox\n    semantic_image_editor,    # ImageEditor\n    semantic_annotated_image, # AnnotatedImage (object detection)\n    semantic_highlighted_text,# HighlightedText (NER)\n    semantic_chatbot,         # Chatbot\n    semantic_plot,            # LinePlot, BarPlot, ScatterPlot\n    semantic_model3d,         # Model3D\n    semantic_dataframe,       # DataFrame\n    semantic_file_explorer,   # FileExplorer\n)\n\n# AI Chat with persona and streaming support\nchat = semantic_chatbot(\n    gr.Chatbot(label=\"Assistant\"),\n    persona=\"coder\",\n    supports_streaming=True,\n    supports_like=True,\n)\n# Auto-tags: [\"io\", \"conversation\", \"ai\", \"streaming\", \"persona-coder\", \"code-assistant\", \"programming\"]\n\n# Image editor for inpainting with mask support\neditor = semantic_image_editor(\n    gr.ImageEditor(label=\"Edit\"),\n    use_case=\"inpainting\",\n    supports_masks=True,\n    tools=[\"brush\", \"eraser\"],\n)\n# Auto-tags: [\"input\", \"media\", \"editor\", \"visual\", \"inpainting\", \"masking\", \"tool-brush\", \"tool-eraser\"]\n\n# Object detection output\ndetections = semantic_annotated_image(\n    gr.AnnotatedImage(label=\"Detections\"),\n    annotation_type=\"bbox\",\n    entity_types=[\"person\", \"car\", \"dog\"],\n)\n# Auto-tags: [\"output\", \"media\", \"annotation\", \"bbox\", \"detection\", \"detects-person\", \"detects-car\", \"detects-dog\"]\n\n# NER visualization\nentities = semantic_highlighted_text(\n    gr.HighlightedText(label=\"Entities\"),\n    annotation_type=\"ner\",\n    entity_types=[\"PERSON\", \"ORG\", \"LOC\"],\n)\n# Auto-tags: [\"output\", \"text\", \"annotation\", \"nlp\", \"ner\", \"person-entity\", \"organization-entity\", \"location-entity\"]\n\n# Multimodal input for vision-language models\nvlm_input = semantic_multimodal(\n    gr.MultimodalTextbox(label=\"Ask about images\"),\n    use_case=\"image_analysis\",\n    accepts_images=True,\n)\n# Auto-tags: [\"input\", \"text\", \"multimodal\", \"vision\", \"image-input\", \"image_analysis\", \"vlm\"]\n\n# Data visualization with domain context\nmetrics_chart = semantic_plot(\n    gr.LinePlot(x=\"date\", y=\"value\"),\n    chart_type=\"line\",\n    data_domain=\"metrics\",\n    axes=[\"date\", \"value\"],\n)\n# Auto-tags: [\"output\", \"visualization\", \"chart-line\", \"timeseries\", \"domain-metrics\"]\n```\n\n### Plantillas de página\n\n10 plantillas de página predefinidas para patrones de interfaz de usuario comunes:\n\n```python\nfrom integradio.pages import (\n    ChatPage,        # Conversational AI interface\n    DashboardPage,   # KPI cards and activity feed\n    HeroPage,        # Landing page with CTAs\n    GalleryPage,     # Image grid with filtering\n    AnalyticsPage,   # Charts and metrics\n    DataTablePage,   # Editable data grid\n    FormPage,        # Multi-step form wizard\n    UploadPage,      # File upload with preview\n    SettingsPage,    # Configuration panels\n    HelpPage,        # FAQ accordion\n)\n\n# Use in your app\npage = ChatPage()\npage.launch()\n```\n\n## Visualización\n\n```python\nfrom integradio.viz import (\n    generate_mermaid,      # Mermaid diagram\n    generate_html_graph,   # Interactive D3.js\n    generate_ascii_graph,  # ASCII art\n)\n\n# Generate Mermaid diagram\nprint(generate_mermaid(demo))\n\n# Save interactive HTML visualization\nhtml = generate_html_graph(demo)\nwith open(\"graph.html\", \"w\") as f:\n    f.write(html)\n```\n\n## Integración con FastAPI\n\n```python\nfrom fastapi import FastAPI\n\napp = FastAPI()\ndemo.add_api_routes(app)\n\n# Endpoints:\n# GET /semantic/search?q=\u003cquery\u003e\u0026k=\u003climit\u003e\n# GET /semantic/component/\u003cid\u003e\n# GET /semantic/graph\n# GET /semantic/trace/\u003cid\u003e\n# GET /semantic/summary\n```\n\n## Ejemplos\n\nConsulte el directorio `examples/`:\n\n- `basic_app.py` - Demostración de búsqueda simple\n- `full_app.py` - Demostración de las 10 plantillas de página\n\n```bash\n# Run basic example\npython examples/basic_app.py\n# Visit http://localhost:7860\n```\n\n## Desarrollo\n\n```bash\n# Install dev dependencies\npip install -e \".[dev]\"\n\n# Run tests\npytest tests/ -v\n\n# Run with coverage\npytest tests/ --cov=integradio --cov-report=html\n\n# Type checking\nmypy integradio\n\n# Linting\nruff check integradio\n```\n\n## Arquitectura\n\n```\nintegradio/\n├── components.py      # SemanticComponent wrapper\n├── specialized.py     # Specialized wrappers (Chatbot, ImageEditor, etc.)\n├── embedder.py        # Ollama embedding client with circuit breaker\n├── registry.py        # HNSW + SQLite storage\n├── blocks.py          # Extended gr.Blocks\n├── introspect.py      # Source location extraction\n├── api.py             # FastAPI routes\n├── viz.py             # Graph visualization (Mermaid, D3.js, ASCII)\n├── circuit_breaker.py # Resilience pattern for external services\n├── exceptions.py      # Exception hierarchy\n├── logging_config.py  # Structured logging\n├── pages/             # 10 pre-built page templates\n├── events/            # WebSocket event mesh with HMAC signing\n├── visual/            # Design tokens, themes, Figma sync\n├── agent/             # LangChain tools and MCP server\n└── inspector/         # Component tree navigation\n```\n\n## Licencia\n\nLicencia MIT - consulte [LICENSE](LICENSE) para obtener más detalles.\n\n## Contribuciones\n\n¡Las contribuciones son bienvenidas! Lea nuestras pautas de contribución y envíe solicitudes de extracción (PR).\n\n## Enlaces\n\n- [Documentación de Gradio](https://gradio.app/docs/)\n- [Ollama](https://ollama.ai/)\n- [nomic-embed-text](https://ollama.ai/library/nomic-embed-text)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcp-tool-shop-org%2Fintegradio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcp-tool-shop-org%2Fintegradio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcp-tool-shop-org%2Fintegradio/lists"}