<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alexey Kurilov</title>
    <description>The latest articles on DEV Community by Alexey Kurilov (@thesharque).</description>
    <link>https://dev.to/thesharque</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3815049%2F4b890a49-268d-4a21-9030-5b8e5a5e1f74.jpg</url>
      <title>DEV Community: Alexey Kurilov</title>
      <link>https://dev.to/thesharque</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thesharque"/>
    <language>en</language>
    <item>
      <title>Building an MCP Server for Java Performance Profiling</title>
      <dc:creator>Alexey Kurilov</dc:creator>
      <pubDate>Fri, 13 Mar 2026 06:11:17 +0000</pubDate>
      <link>https://dev.to/thesharque/building-an-mcp-server-for-java-performance-profiling-133h</link>
      <guid>https://dev.to/thesharque/building-an-mcp-server-for-java-performance-profiling-133h</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rwf6ypuu2xl79edsc25.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rwf6ypuu2xl79edsc25.jpg" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;code&gt;javaperf&lt;/code&gt; - an MCP (Model Context Protocol) server that lets AI assistants profile Java applications without touching the command line.&lt;/p&gt;

&lt;p&gt;If you've ever debugged Java performance issues, you know the drill: &lt;code&gt;jps&lt;/code&gt;, &lt;code&gt;jcmd&lt;/code&gt;, &lt;code&gt;jfr&lt;/code&gt;... memorizing flags, parsing output. What if your AI assistant could do this for you?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP?
&lt;/h2&gt;

&lt;p&gt;Model Context Protocol (MCP) is a standard for connecting AI assistants to external tools. Instead of AI just generating code suggestions, it can actually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run diagnostics on your running Java apps&lt;/li&gt;
&lt;li&gt;Analyze thread dumps&lt;/li&gt;
&lt;li&gt;Inspect JFR recordings&lt;/li&gt;
&lt;li&gt;All through natural conversation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  javaperf Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Process Discovery&lt;/strong&gt;: Auto-detect running Java processes via &lt;code&gt;jps&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thread Analysis&lt;/strong&gt;: Dump and analyze threads (&lt;code&gt;jcmd Thread.print&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VM Flags&lt;/strong&gt;: Inspect JVM configuration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JFR Support&lt;/strong&gt;: Record and analyze Java Flight Recorder data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Counters&lt;/strong&gt;: Access low-level JVM metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; javaperf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use directly via npx (no install needed):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx javaperf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Connecting to Claude Desktop
&lt;/h2&gt;

&lt;p&gt;Add to your &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"javaperf"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"javaperf"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example Usage
&lt;/h2&gt;

&lt;p&gt;Once connected, you can ask Claude things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Show me all running Java processes"&lt;/li&gt;
&lt;li&gt;"Analyze thread dump for process 1234"&lt;/li&gt;
&lt;li&gt;"Start a 60-second JFR recording"&lt;/li&gt;
&lt;li&gt;"Why is my app using so much memory?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI handles the &lt;code&gt;jcmd&lt;/code&gt;, &lt;code&gt;jfr&lt;/code&gt;, and &lt;code&gt;jps&lt;/code&gt; commands behind the scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Before MCP: You Google the right flags, copy-paste commands, manually parse output.&lt;/p&gt;

&lt;p&gt;After MCP: "Hey Claude, why is my Spring Boot app slow?" → AI investigates → Finds thread contention → Suggests fixes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/theSharque/mcp-jperf" rel="noopener noreferrer"&gt;https://github.com/theSharque/mcp-jperf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/javaperf" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/javaperf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Requirements: Node.js 18+, JDK 8u262+ or 11+&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;If you're working with Java and using Claude Desktop or Cursor IDE, give it a spin. Would love feedback on what other profiling features would be useful!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with TypeScript, powered by JDK tools you already have.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>performance</category>
      <category>mcp</category>
    </item>
    <item>
      <title>I Built a Self-Hosted Web UI for 11 Databases — Here's Why You Might Want One Too</title>
      <dc:creator>Alexey Kurilov</dc:creator>
      <pubDate>Mon, 09 Mar 2026 15:47:37 +0000</pubDate>
      <link>https://dev.to/thesharque/i-built-a-self-hosted-web-ui-for-11-databases-heres-why-you-might-want-one-too-5aa3</link>
      <guid>https://dev.to/thesharque/i-built-a-self-hosted-web-ui-for-11-databases-heres-why-you-might-want-one-too-5aa3</guid>
      <description>&lt;h2&gt;
  
  
  👋 The Problem
&lt;/h2&gt;

&lt;p&gt;If you work with microservices in Kubernetes, you know the pain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your app uses &lt;strong&gt;PostgreSQL&lt;/strong&gt; for transactions, &lt;strong&gt;Redis&lt;/strong&gt; for cache, &lt;strong&gt;Kafka&lt;/strong&gt; for events, and &lt;strong&gt;MongoDB&lt;/strong&gt; for documents.&lt;/li&gt;
&lt;li&gt;To debug a production issue, you open: &lt;code&gt;psql&lt;/code&gt;, &lt;code&gt;redis-cli&lt;/code&gt;, &lt;code&gt;kcat&lt;/code&gt;, &lt;code&gt;mongosh&lt;/code&gt;, maybe &lt;code&gt;curl&lt;/code&gt; for Elasticsearch...&lt;/li&gt;
&lt;li&gt;You copy-paste IDs between terminals. You forget which environment you're in. You accidentally run &lt;code&gt;DROP&lt;/code&gt; on staging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've been there. So I built &lt;strong&gt;Panopticum&lt;/strong&gt; — a lightweight, self-hosted web UI that lets you browse, query, and edit data across &lt;strong&gt;11+ database types&lt;/strong&gt; from a single interface. No Electron, no heavy desktop app, no CDN dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Why Another Database Tool?
&lt;/h2&gt;

&lt;p&gt;Existing tools are great, but they didn't fit my workflow:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Gap I Felt&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DBeaver / DataGrip&lt;/td&gt;
&lt;td&gt;Desktop-only, heavy, per-connection setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adminer / phpMyAdmin&lt;/td&gt;
&lt;td&gt;Web-based, but single-DB-type, PHP stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pgAdmin / Mongo Express&lt;/td&gt;
&lt;td&gt;Excellent for one DB, but I needed &lt;em&gt;many&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom internal tools&lt;/td&gt;
&lt;td&gt;Took weeks to build; not reusable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I wanted something that could be:&lt;br&gt;
✅ Deployed in one command to any K8s cluster&lt;br&gt;&lt;br&gt;
✅ Secure by default (HTTP Basic + env vars)&lt;br&gt;&lt;br&gt;
✅ Fully offline / air-gapped (no external CDNs)&lt;br&gt;&lt;br&gt;
✅ Extendable via REST API&lt;br&gt;&lt;br&gt;
✅ Simple enough for QA engineers, powerful enough for devs  &lt;/p&gt;

&lt;p&gt;So I built it with &lt;strong&gt;Micronaut 4&lt;/strong&gt;, &lt;strong&gt;HTMX&lt;/strong&gt;, and &lt;strong&gt;Thymeleaf&lt;/strong&gt; — and open-sourced it.&lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 Quick Start
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run locally&lt;/span&gt;
./gradlew run

&lt;span class="c"&gt;# Or with Docker&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; panopticum &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; panopticum-data:/data &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;PANOPTICUM_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;PANOPTICUM_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;changeme &lt;span class="se"&gt;\&lt;/span&gt;
  ghcr.io/thesharque/panopticum:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;&lt;/strong&gt; — and you're in.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔌 Supported Databases (All in One Place)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Browse&lt;/th&gt;
&lt;th&gt;Query&lt;/th&gt;
&lt;th&gt;Edit Rows&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PostgreSQL / CockroachDB / YugabyteDB&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ SQL&lt;/td&gt;
&lt;td&gt;✅ (by ctid)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySQL / MariaDB&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ SQL&lt;/td&gt;
&lt;td&gt;✅ (with PK/unique)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MS SQL Server&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ SQL&lt;/td&gt;
&lt;td&gt;✅ (with PK/unique)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oracle&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ SQL&lt;/td&gt;
&lt;td&gt;✅ (by ROWID)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MongoDB&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ Query JSON&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redis / Dragonfly / Valkey&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✅ (key/value)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ClickHouse&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ SQL&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cassandra / ScyllaDB&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ CQL&lt;/td&gt;
&lt;td&gt;✅ (with PK)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RabbitMQ&lt;/td&gt;
&lt;td&gt;✅ queues&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;❌ read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kafka&lt;/td&gt;
&lt;td&gt;✅ topics&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;❌ read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elasticsearch / OpenSearch&lt;/td&gt;
&lt;td&gt;✅ indices&lt;/td&gt;
&lt;td&gt;✅ Query DSL&lt;/td&gt;
&lt;td&gt;✅ (by &lt;code&gt;_id&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 All connections are stored in an embedded H2 database. Add/remove them via UI or bootstrap via &lt;code&gt;PANOPTICUM_CONNECTIONS_JSON&lt;/code&gt; env var.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  ✨ Features That Made My Life Easier
&lt;/h2&gt;
&lt;h3&gt;
  
  
  🔐 Zero-Config Auth &amp;amp; Offline-First
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Basic Auth (credentials from env vars — easy with K8s Secrets)&lt;/li&gt;
&lt;li&gt;All frontend assets (HTMX, CodeMirror, Prism) bundled locally — &lt;strong&gt;no CDN&lt;/strong&gt;, works in air-gapped clusters&lt;/li&gt;
&lt;li&gt;Light/dark theme, EN/RU localization&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  ⚡ HTMX for Snappy UX
&lt;/h3&gt;

&lt;p&gt;No React, no build step for the frontend. Partial page updates via HTMX keep the UI responsive while keeping the codebase simple and maintainable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Example: Load table rows without full reload --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;hx-get=&lt;/span&gt;&lt;span class="s"&gt;"/api/postgresql/connection-1/schema/public/table/users"&lt;/span&gt;
     &lt;span class="na"&gt;hx-trigger=&lt;/span&gt;&lt;span class="s"&gt;"load"&lt;/span&gt;
     &lt;span class="na"&gt;hx-target=&lt;/span&gt;&lt;span class="s"&gt;"#rows-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"rows-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Loading...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔄 Data Diff: Compare Records Across Environments
&lt;/h3&gt;

&lt;p&gt;This is my favorite feature. Found a suspicious record in Prod?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;"Add to Compare"&lt;/strong&gt; on any row detail page
&lt;/li&gt;
&lt;li&gt;Switch to Stage or Dev connection
&lt;/li&gt;
&lt;li&gt;Open the same logical record
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Compare"&lt;/strong&gt; — see side-by-side JSON/field diff
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All stored in your browser's &lt;code&gt;localStorage&lt;/code&gt; — no server roundtrip. Perfect for debugging environment drift.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌐 Full REST API + Swagger
&lt;/h3&gt;

&lt;p&gt;Every UI action has a corresponding API endpoint. Documented interactively at &lt;code&gt;/swagger-ui&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Execute SQL via API&lt;/span&gt;
curl &lt;span class="nt"&gt;-u&lt;/span&gt; admin:changeme http://localhost:8080/api/postgresql/conn-1/query &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"sql": "SELECT id, email FROM users WHERE status = $1", "params": ["active"]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great for automation, CI checks, or building custom dashboards.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧭 Who Is This For?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DevOps/SREs&lt;/strong&gt;: Debug data issues in staging/prod without installing 5 CLI tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QA Engineers&lt;/strong&gt;: Validate test data across services with a simple UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend Developers&lt;/strong&gt;: Quick ad-hoc queries without leaving the browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Teams&lt;/strong&gt;: Audit access via basic auth + logs; no external dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;Check it out, star, or open an issue&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/theSharque/panopticum" rel="noopener noreferrer"&gt;https://github.com/theSharque/panopticum&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Let's Chat
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What's your biggest pain point when debugging across multiple data stores?&lt;/li&gt;
&lt;li&gt;Would you use a tool like this in your workflow?&lt;/li&gt;
&lt;li&gt;Any databases you'd like to see added?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop a comment below — I read every one. 🙏&lt;/p&gt;

</description>
      <category>devops</category>
      <category>database</category>
      <category>qa</category>
      <category>developer</category>
    </item>
  </channel>
</rss>
