{"id":34633473,"url":"https://github.com/markusbegerow/local-llm-chat-vscode-openmetadata","last_synced_at":"2026-05-27T15:03:16.375Z","repository":{"id":319136195,"uuid":"1077336749","full_name":"markusbegerow/local-llm-chat-vscode-openmetadata","owner":"markusbegerow","description":"Chat with OpenMetadata using local LLMs (OpenAI, Ollama, or custom endpoints)","archived":false,"fork":false,"pushed_at":"2025-10-16T17:05:33.000Z","size":10181,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-17T19:35:12.300Z","etag":null,"topics":["ai","chat","code-assistant","llm","ollama","openmetadata","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=MarkusBegerow.local-llm-chat-vscode-openmetadata","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markusbegerow.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2025-10-16T05:46:41.000Z","updated_at":"2025-10-16T17:08:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"7fd71a29-16ef-4f49-b685-66af1ab6ffa7","html_url":"https://github.com/markusbegerow/local-llm-chat-vscode-openmetadata","commit_stats":null,"previous_names":["markusbegerow/local-llm-chat-vscode-openmetadata"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/markusbegerow/local-llm-chat-vscode-openmetadata","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markusbegerow%2Flocal-llm-chat-vscode-openmetadata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markusbegerow%2Flocal-llm-chat-vscode-openmetadata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markusbegerow%2Flocal-llm-chat-vscode-openmetadata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markusbegerow%2Flocal-llm-chat-vscode-openmetadata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markusbegerow","download_url":"https://codeload.github.com/markusbegerow/local-llm-chat-vscode-openmetadata/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markusbegerow%2Flocal-llm-chat-vscode-openmetadata/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33570993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","chat","code-assistant","llm","ollama","openmetadata","vscode","vscode-extension"],"created_at":"2025-12-24T16:58:15.106Z","updated_at":"2026-05-27T15:03:16.369Z","avatar_url":"https://github.com/markusbegerow.png","language":"TypeScript","funding_links":["https://paypal.me/MarkusBegerow?country.x=DE\u0026locale.x=de_DE"],"categories":[],"sub_categories":[],"readme":"# Local LLM for OpenMetadata\n\nA VS Code extension that brings AI-powered data discovery to your IDE using **your choice** of LLM provider. Chat with your OpenMetadata catalog using OpenAI, Ollama, or any custom endpoint.\n\n\u003cimg alt=\"vs-code-openmetadata\" src=\"https://github.com/user-attachments/assets/c148a450-c985-4b5c-95fb-a48fb143bb47\" /\u003e\n\n## Key Features\n\n- **Multiple LLM Providers**: Choose between OpenAI, Ollama, or custom OpenAI-compatible endpoints\n- **Complete Privacy**: Use local models with Ollama for offline, private data analysis\n- **Flexible Configuration**: Switch between providers without code changes\n- **Natural Language Search**: Ask questions like \"show me customer tables\" or search by keywords\n- **AI-Powered Insights**: Get intelligent analysis of your datasets and data quality\n- **Interactive Data Lineage**: Visualize upstream and downstream table relationships\n- **Column Details**: Explore table schemas with expandable column information\n\n## Requirements\n\n1. **OpenMetadata Server**: Running locally at http://localhost:8585\n   - Use the [OpenMetadata Docker setup](https://docs.open-metadata.org/latest/quick-start/local-docker-deployment)\n   - Load sample data for testing\n\n2. **LLM Provider** (choose one):\n   - **OpenAI**: Get an API key from [platform.openai.com](https://platform.openai.com/api-keys)\n   - **Ollama**: Install [Ollama](https://ollama.ai/) and pull a model (e.g., `ollama pull llama2`)\n   - **Custom**: Any OpenAI-compatible API endpoint\n\n## Installation \u0026 Setup\n\n### Option 1: Build from Source\n\n**1. Clone and Install**\n```bash\ncd /path/to/your/workspace\ngit clone \u003cyour-repo-url\u003e local-llm-chat-vscode-openmetadata\ncd local-llm-chat-vscode-openmetadata\nnpm install\n```\n\n**2. Configure Your LLM Provider**\n\nOpen VS Code settings (`Ctrl+,` or `Cmd+,`) and configure your preferred provider:\n\n#### For OpenAI:\n```json\n{\n  \"openmetadataExplorer.llm.provider\": \"openai\",\n  \"openmetadataExplorer.llm.openai.apiKey\": \"sk-your-api-key-here\",\n  \"openmetadataExplorer.llm.openai.model\": \"gpt-4o\",\n  \"openmetadataExplorer.openmetadataUrl\": \"http://localhost:8585\",\n  \"openmetadataExplorer.openmetadataAuthToken\": \"YOUR_BOT_TOKEN\"\n}\n```\n\n#### For Ollama:\n```json\n{\n  \"openmetadataExplorer.llm.provider\": \"ollama\",\n  \"openmetadataExplorer.llm.ollama.endpoint\": \"http://localhost:11434\",\n  \"openmetadataExplorer.llm.ollama.model\": \"llama2\",\n  \"openmetadataExplorer.openmetadataUrl\": \"http://localhost:8585\",\n  \"openmetadataExplorer.openmetadataAuthToken\": \"YOUR_BOT_TOKEN\"\n}\n```\n\n#### For Custom Endpoint (e.g., LM Studio, LocalAI):\n```json\n{\n  \"openmetadataExplorer.llm.provider\": \"custom\",\n  \"openmetadataExplorer.llm.custom.endpoint\": \"http://localhost:1234/v1\",\n  \"openmetadataExplorer.llm.custom.apiKey\": \"optional-api-key\",\n  \"openmetadataExplorer.llm.custom.model\": \"model-name\",\n  \"openmetadataExplorer.openmetadataUrl\": \"http://localhost:8585\",\n  \"openmetadataExplorer.openmetadataAuthToken\": \"YOUR_BOT_TOKEN\"\n}\n```\n\n**3. Get OpenMetadata Bot Token**\n1. Open http://localhost:8585 and login (default: admin/admin)\n2. Go to **Settings** → **Bots**\n3. Click **Add Bot** with these details:\n   - Name: `vscode-llm-bot`\n   - Description: `Bot for VS Code LLM extension`\n4. Click **Generate Token** and copy the JWT token (starts with `eyJ`)\n5. Assign **Data Consumer** role to the bot\n\n**4. Run in Debug Mode**\n1. Press `F5` to launch the extension in a new VS Code window\n2. Look for **OPEN METADATA** panel at the bottom\n3. Verify connection and start searching\n\n### Option 2: Package and Install\n\n**1. Build the Extension**\n```bash\nnpm run compile\nnpm run package\n```\n\n**2. Install the VSIX**\n- Open Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P`)\n- Type: `Extensions: Install from VSIX...`\n- Select the generated `.vsix` file\n- Reload when prompted\n\n**3. Configure as shown in Option 1, step 2**\n\n## How to Use\n\n### Search Your Data\n- **Keyword Search**: Type table names like \"customer\" or \"orders\"\n- **Natural Language**: Ask questions like \"show me customer data\"\n- **Browse Results**: Click on tables to see column details and AI insights\n\n### View Data Lineage\n1. Search for any table\n2. Click **View Lineage** on the table card\n3. Use the interactive graph:\n   - Click **+** buttons to expand upstream/downstream relationships\n   - Click **-** buttons to collapse connections\n   - Drag nodes to reposition them\n   - Zoom with mouse wheel\n\n### Example Searches\n- `customer` - Find customer-related tables\n- `orders` - Discover transaction data\n- `sales` - Locate revenue tables\n- `product` - Find catalog information\n\n## LLM Provider Comparison\n\n| Feature | OpenAI | Ollama | Custom |\n|---------|---------|---------|---------|\n| **Speed** | Fast (cloud) | Medium-Fast (local) | Varies |\n| **Privacy** | Cloud-based | 100% Local | Depends |\n| **Cost** | Pay-per-use | Free | Varies |\n| **Setup** | API key only | Install + model | Varies |\n| **Offline** | ❌ No | ✅ Yes | Depends |\n| **Quality** | Excellent | Good | Varies |\n\n### Recommended Models\n\n**OpenAI:**\n- `gpt-4o` - Best quality, faster than GPT-4\n- `gpt-4` - High quality, slower\n- `gpt-3.5-turbo` - Fast and cheap\n- `o1-preview` - Advanced reasoning\n- `o1-mini` - Cost-effective reasoning\n\n**Ollama:**\n- `llama2` - General purpose, 7B parameters\n- `mistral` - Fast and capable\n- `codellama` - Optimized for code/data\n- `llama3` - Latest Llama model\n\n**Custom:**\n- Any OpenAI-compatible API endpoint works\n- Examples: LM Studio, LocalAI, vLLM, Text Generation WebUI\n\n## Development\n\n### Build Commands\n```bash\n# Development build with watch\nnpm run watch\n\n# Production build\nnpm run compile\n\n# Package for distribution\nnpm run package\n```\n\n### Project Structure\n```\nsrc/\n├── extension.ts                 # Extension entry point\n├── OpenMetadataExplorerProvider.ts  # Main provider\n├── services/\n│   ├── OpenAIService.ts        # OpenAI integration\n│   ├── LocalLLMService.ts      # Ollama/Custom integration\n│   ├── UnifiedLLMService.ts    # LLM orchestrator\n│   ├── OpenMetadataService.ts  # OpenMetadata API\n│   └── LineageService.ts       # Data lineage\n└── webview/\n    ├── App.tsx                  # Main React app\n    └── components/              # React components\n```\n\n### Key Service Files\n\n**UnifiedLLMService.ts**\n- Orchestrates between OpenAI, Ollama, and custom endpoints\n- Handles provider selection and initialization\n- Provides unified interface for all LLM operations\n\n**OpenAIService.ts**\n- Direct integration with OpenAI API\n- Supports chat completions format\n- Handles API key validation\n\n**LocalLLMService.ts**\n- OpenAI-compatible format for Ollama\n- Fallback to legacy formats for compatibility\n- Flexible response parsing\n\n## Configuration Reference\n\n### OpenMetadata Settings\n\n| Setting | Description | Default |\n|---------|-------------|---------|\n| `openmetadataExplorer.openmetadataUrl` | OpenMetadata server URL | `http://localhost:8585` |\n| `openmetadataExplorer.openmetadataAuthToken` | OpenMetadata bot JWT token | (empty) |\n\n### LLM Provider Settings\n\n| Setting | Description | Default |\n|---------|-------------|---------|\n| `openmetadataExplorer.llm.provider` | LLM provider (openai/ollama/custom) | `openai` |\n\n### OpenAI Settings\n\n| Setting | Description | Default |\n|---------|-------------|---------|\n| `openmetadataExplorer.llm.openai.apiKey` | OpenAI API key | (empty) |\n| `openmetadataExplorer.llm.openai.model` | OpenAI model name | `gpt-4o` |\n| `openmetadataExplorer.llm.openai.baseUrl` | OpenAI API base URL | `https://api.openai.com/v1` |\n\n### Ollama Settings\n\n| Setting | Description | Default |\n|---------|-------------|---------|\n| `openmetadataExplorer.llm.ollama.endpoint` | Ollama API endpoint | `http://localhost:11434` |\n| `openmetadataExplorer.llm.ollama.model` | Ollama model name | `llama2` |\n\n### Custom Endpoint Settings\n\n| Setting | Description | Default |\n|---------|-------------|---------|\n| `openmetadataExplorer.llm.custom.endpoint` | Custom API endpoint | (empty) |\n| `openmetadataExplorer.llm.custom.apiKey` | Custom API key (if required) | (empty) |\n| `openmetadataExplorer.llm.custom.model` | Custom model name | (empty) |\n\n## Troubleshooting\n\n### OpenAI Issues\n- **\"API key invalid\"**: Check your API key at platform.openai.com\n- **\"Rate limit exceeded\"**: Wait a moment or upgrade your OpenAI plan\n- **\"Model not found\"**: Verify the model name (gpt-4o, gpt-4, etc.)\n\n### Ollama Issues\n- **\"Connection refused\"**: Make sure Ollama is running (`ollama serve`)\n- **\"Model not found\"**: Pull the model first (`ollama pull llama2`)\n- **Slow responses**: Use a smaller model or upgrade your hardware\n\n### OpenMetadata Issues\n- **\"Connection failed\"**: Verify OpenMetadata is running at the configured URL\n- **\"Authentication failed\"**: Check your bot token is valid and not expired\n- **\"No tables found\"**: Ensure sample data is loaded in OpenMetadata\n\n## Current Status\n\n**Version 1.0.0** - Initial Release\n- OpenAI, Ollama, and custom endpoint support\n- Natural language search with AI insights\n- Interactive data lineage visualization\n- Professional UI optimized for developers\n\n**Planned Features**\n- Column-level lineage relationships\n- Data quality monitoring integration\n- Advanced search filters and exports\n- Streaming responses for better UX\n- Multi-turn conversations\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Thanks to the Ollama team for making local LLMs accessible\n- LM Studio for providing an excellent local inference platform\n- The VS Code extension API team for comprehensive documentation\n\n## 🙋‍♂️ Get Involved\n\nIf you encounter any issues or have questions:\n- 🐛 [Report bugs](https://github.com/markusbegerow/local-llm-chat-vscode-openmetadata/issues)\n- 💡 [Request features](https://github.com/markusbegerow/local-llm-chat-vscode-openmetadata/issues)\n- ⭐ Star the repo if you find it useful!\n\n## ☕ Support the Project\n\nIf you like this project, support further development with a repost or coffee:\n\n\u003ca href=\"https://www.linkedin.com/sharing/share-offsite/?url=https://github.com/markusbegerow/local-llm-chat-vscode-openmetadata\" target=\"_blank\"\u003e \u003cimg src=\"https://img.shields.io/badge/💼-Share%20on%20LinkedIn-blue\" /\u003e \u003c/a\u003e\n\n[![Buy Me a Coffee](https://img.shields.io/badge/☕-Buy%20me%20a%20coffee-yellow)](https://paypal.me/MarkusBegerow?country.x=DE\u0026locale.x=de_DE)\n\n## 📬 Contact\n\n- 🧑‍💻 [Markus Begerow](https://linkedin.com/in/markusbegerow)\n- 💾 [GitHub](https://github.com/markusbegerow)\n- ✉️ [Twitter](https://x.com/markusbegerow)\n\n---\n\n**Privacy Notice**: This extension operates entirely locally. No data is sent to external servers unless you explicitly configure it to use a remote API endpoint.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkusbegerow%2Flocal-llm-chat-vscode-openmetadata","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkusbegerow%2Flocal-llm-chat-vscode-openmetadata","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkusbegerow%2Flocal-llm-chat-vscode-openmetadata/lists"}