PgStudio (formerly YAPE) is a comprehensive PostgreSQL database management extension featuring interactive SQL notebooks, real-time monitoring dashboard, AI-powered assistance, and advanced database operationsβall within VS Code.
π Documentation β’ π Marketplace β’ π€ Contributing β’ π v1.0.0 Release Notes β’ π Changelog
- π Secure Connections β VS Code SecretStorage encryption
- π‘οΈ Connection Safety β Environment tagging (π΄ PROD, π‘ STAGING, π’ DEV), read-only mode, query safety analyzer
- β±οΈ Performance Tracking β Historical query execution monitoring with degradation alerts
- π Live Dashboard β Real-time metrics & query monitoring
- π¦ Dashboard Health Signals β Status badges, lock/wait indicators, and performance-focused telemetry cards
- π SQL Notebooks β Interactive notebooks with AI assistance
- ποΈ Notebook Manager β Open/create notebooks with searchable picker and improved metadata context
- πΎ Saved Queries β Tag-based organization, connection context restoration, AI metadata generation, edit & reuse
- π³ Database Explorer β Browse tables, views, functions, types, FDWs
- π οΈ Object Operations β CRUD, scripts, VACUUM, ANALYZE, REINDEX, plus triggers/sequences/domains/rules/partitions/publications/event triggers/tablespaces/aggregates
- ποΈ Visual Table Designer β Create/Edit tables with a robust GUI
- π§ Definition Viewer (SQL Preview) β Open object DDL with toggleable SQL preview, copy/edit workflows, and routine scaffolding
- π Index & Constraint Manager β Visual management of DB constraints
- π§ Schema Intelligence β Schema search, index advisor, and migration generator workflows
- π Smart Paste β Context-aware clipboard actions (SQL/CSV/JSON)
- π Table Intelligence β Profile, activity monitor, index usage, definition viewer
- π EXPLAIN CodeLens β One-click query analysis directly in notebooks
- ποΈ Advanced Result UX β Column stats, transpose view, enhanced filtering, sliding-window streaming for large
SELECTs, configurablebyteadisplay, and structured in-grid editing with explicit commit confirmation - π‘οΈ Auto-LIMIT β Intelligent query protection (configurable, default 1000 rows)
- π Foreign Data Wrappers β Manage foreign servers, user mappings & tables
- π€ AI-Powered β Generate, Optimize, Explain & Analyze with guided follow-ups; regenerate or branch the conversation from a prior user message (GitHub Models, OpenAI, Anthropic, Gemini, VS Code LM)
- π§© Flexible SQL Assistant Layout β Open SQL Assistant in editor tabs and keep multiple assistant tabs open simultaneously
- πΌοΈ Vision AI β Paste or upload images directly in the SQL Assistant; sent to vision-capable AI providers
- π File Preview β Click attached file chips to open them as preview tabs in the editor
- π€ Export Data β Export results to CSV, JSON, or Excel
|
|
|
|
| Area | PgStudio v1.2.1 | Notes |
|---|---|---|
| Core PostgreSQL object operations | β | Tables, views, mat views, functions, roles, extensions, FDWs, and more |
| AI-assisted SQL workflows | β | Generate, optimize, explain, and analyze with notebook-first execution |
| Production safety controls | β | Read-only mode, risk scoring, confirmation prompts, Auto-LIMIT |
| Real-time monitoring dashboard | β | Activity and health views in VS Code |
| Interactive SQL notebooks | β | Native .pgsql notebook execution with completions |
| In-grid result editing parity with desktop IDEs | Stronger commit flow and tooling in v1.2.x; full parity still evolving | |
| ERD/schema visualization parity | Schema designer exists; ERD depth still evolving | |
| Advanced replication administration | Additional publication/subscription depth planned |
# Install from VS Code
ext install ric-v.postgres-explorer
# Or via command line
code --install-extension ric-v.postgres-explorerThen: PostgreSQL icon β Add Connection β Enter details β Connect!
PgStudio ships with a privacy-first telemetry client designed for anonymous product analytics.
- No SQL text, schema/object names, hostnames, database names, usernames, or credentials are collected.
- VS Code global telemetry setting is a hard gate; when disabled globally, PgStudio telemetry is disabled.
- Event payloads are allowlisted and bucketed (durations/result sizes) to avoid raw sensitive values.
Set these in VS Code settings:
postgresExplorer.telemetry.mode:off | basic | detailed(defaultbasic)postgresExplorer.telemetry.allowUsage: allow anonymous usage counters (defaulttrue)postgresExplorer.telemetry.allowPerformance: allow anonymized performance buckets (defaultfalse)
For remote telemetry ingestion:
postgresExplorer.telemetry.posthogHost: defaulthttps://us.i.posthog.compostgresExplorer.telemetry.posthogApiKey: your PostHog project key
If posthogApiKey is empty, telemetry stays local (debug sink only).
- Lifecycle: extension/session start and end events
- Activity: command and feature usage counters
- Connections: opened/closed/error with coarse error category
- Query execution: success/failure with duration/result-size buckets (detailed/performance-enabled mode)
- AI usage: provider-level success/failure counters
README.md- Product overview, installation, development, and troubleshootingdocs/ARCHITECTURE.md- System architecture and component/data-flow detailsdocs/STYLING_GUIDE.md- Centralized styling/templates and UI refactoring patternsdocs/WEBSITE_CONTEXT.md- Website architecture and content contextdocs/API_STABILITY.md- v1.x API stability and deprecation policydocs/SECURITY_REVIEW.md- v1.0 security controls and release checklistdocs/RELEASE_NOTES_v1.0.0.md- v1.0 highlights and release notesdocs/MIGRATION_GUIDE_0.x_to_1.0.0.md- upgrade path from 0.9.x to 1.0.0SECURITY.md- Security policy and vulnerability reporting guidanceCHANGELOG.md- Release notes and what changed across versions
Stable: v1.2.1 | Nightly: v1.0.0-nightly+ β Latest stable adds cursor-based result streaming, bytea formatting controls, richer result-grid tooling, export correctness with Auto-LIMIT, and SQL Assistant regenerate/resend. See CHANGELOG.md; v1.0 launch materials remain in Release Notes and Migration Guide.
PgStudio/
βββ src/
β βββ extension.ts # Extension entry point
β βββ commands/ # Command implementations
β β βββ tables.ts # Table operations
β β βββ views.ts # View operations
β β βββ functions.ts # Function operations
β β βββ connection.ts # Connection commands
β β βββ notebook.ts # Notebook commands
β β βββ helper.ts # Shared helper utilities
β β βββ sql/ # SQL template modules
β β β βββ tables.ts # Table SQL templates
β β β βββ views.ts # View SQL templates
β β β βββ functions.ts # Function SQL templates
β β β βββ indexes.ts # Index SQL templates
β β β βββ ... # Other SQL templates
β β βββ ...
β βββ providers/ # VS Code providers
β β βββ DatabaseTreeProvider.ts # Tree view provider
β β βββ NotebookKernel.ts # Notebook kernel
β β βββ ChatViewProvider.ts # AI chat provider
β β βββ SqlCompletionProvider.ts # IntelliSense
β β βββ ...
β βββ services/ # Business logic
β β βββ ConnectionManager.ts # Connection handling
β β βββ SecretStorageService.ts # Credential storage
β βββ dashboard/ # Dashboard webview
β βββ common/ # Shared utilities
β βββ test/ # Unit tests
βββ resources/ # Icons & screenshots
βββ docs/ # Documentation & landing page
βββ dist/ # Compiled output (bundled)
βββ out/ # Compiled output (tsc)
βββ package.json # Extension manifest
βββ tsconfig.json # TypeScript config
βββ webpack.config.js # Webpack config
Organize, manage, and reuse your most important queries with intelligent tagging and context preservation.
- π·οΈ Tag-Based Organization β Group queries by topic (e.g., "analytics", "maintenance", "daily-reports")
- π Connection Context β Queries remember their original connection, database, and schema
- π Quick Reopening β Click "Open in Notebook" to restore the query with full context in a new notebook
- βοΈ Edit Anytime β Modify title, description, tags, and SQL without creating duplicates
- π€ AI Metadata β Auto-generate titles, descriptions, and tags using AI
- π Rich Metadata Display β Hover to see creation date, last used, database, and schema
- Save Query: Click "Save Query" CodeLens button on any SQL cell in a notebook
- Add Metadata: Enter title, description, and tags (AI can help auto-generate)
- Organize: Use tags to group related queries
- Reuse: Click a saved query β "Open in Notebook" to restore with original context
- Edit: Right-click any saved query β "Edit Query" to modify it
PgStudio integrates advanced AI capabilities directly into your workflow, but keeps YOU in control.
Use GitHub Models without manually managing a PAT in normal VS Code authentication flows.
- Native Sign-In: Connect with your GitHub account from AI Settings.
- Model Catalog Access: List and select available GitHub-hosted models.
- Session-Based Auth: Uses VS Code GitHub authentication sessions instead of storing provider tokens.
Use SQL Assistant where you work, not only in the sidebar.
- Open in Editor Tab: Run
SQL Assistant: Open in Editor Tabfrom Command Palette. - Parallel Assistants: Open multiple SQL Assistant tabs for separate tasks (e.g., optimization, migration, and schema exploration).
Describe what you need in plain English (e.g., "Show me top 10 users by order count"), and PgStudio will generate the SQL for you using your schema context.
- Command Palette:
AI: Generate Query - Context-Aware: The AI understands your table schemas, columns, and relationships.
Click the Optimize button on any successful query result.
- Explain Scripts: Generates
EXPLAIN ANALYZEcommands for deeper profiling. - Static Analysis: Suggests missing indexes, query rewrites, or schema improvements.
Click the Analyze Data button in result tables.
- Clean Workflow: Automatically exports data to a temporary CSV and attaches it to the chat.
- Actionable Insights: AI summarizes patterns, trends, and outliers in your result sets.
When a query fails, get instant help directly in the error cell.
- Explain Error: Translates cryptic Postgres errors into plain English.
- Fix Query: Suggests corrected SQL to resolve the error.
We believe AI should assist, not take over. No query is ever executed automatically.
- Ask/Trigger: You use one of the AI features.
- Review: The AI generates SQL or suggestions in the chat.
- Insert: You click "Open in Notebook" to place code into a cell.
- Execute: You review the code and click "Run" when you are ready.
Turn any query result into beautiful, interactive charts in seconds.
- One-Click Charting: Instantly visualize your data directly from the notebook results.
- Customizable: Toggle between Bar, Line, Pie, Doughnut, and Scatter charts.
- Rich Data Display:
- Log Scale: Easily analyze data with wide variances.
- Blur/Glow Effects: Modern, high-fidelity chart aesthetics.
- Zoom & Pan: Inspect detailed data points interactively.
- Node.js β₯ 18.0.0
- VS Code β₯ 1.90.0
- PostgreSQL (for testing)
# Clone the repository
git clone https://github.com/dev-asterix/PgStudio.git
cd PgStudio
# Install dependencies
npm install
# Compile TypeScript
npm run compile| Command | Description |
|---|---|
npm run watch |
Watch mode (auto-recompile) |
npm run compile |
One-time TypeScript compilation |
npm run esbuild |
Bundle with esbuild (with sourcemaps) |
npm run esbuild-watch |
Bundle in watch mode |
npm run test |
Run unit tests |
npm run coverage |
Run tests with coverage |
npm run vscode:prepublish |
Build for production |
- Open the project in VS Code
- Press
F5to launch Extension Development Host - Or use Run and Debug (
Ctrl+Shift+D) β "Run Extension"
- Output Panel:
Ctrl+Shift+Uβ Select "PostgreSQL Explorer" - DevTools:
Ctrl+Shift+Iin Extension Development Host - Webview Debug: Right-click in webview β "Inspect"
# Install dependencies
npm ci
# Run all tests
npm run test:all
# Run tests with coverage
npm run coverage
# Run specific test types
npm run test:unit # Unit tests
npm run test:integration # Integration tests with Docker
npm run test:renderer # Renderer component tests# Start PostgreSQL containers (12-17)
make docker-up
# Run integration tests
npm run test:integration
# Stop containers
make docker-downmake test-unit # Unit tests
make test-integration # Integration tests
make test-renderer # Renderer component tests
make test-all # All tests
make coverage # Coverage report
make test-full # Full suite with DockerLinux/macOS:
./scripts/test.sh --unit
./scripts/test.sh --integration --pg 16
./scripts/test.sh --coverageWindows:
scripts\test.bat --unit
scripts\test.bat --integration --pg 16
scripts\test.bat --coveragePgStudio includes comprehensive testing infrastructure:
- Unit Tests (50%+ coverage): Mocha + Chai + Sinon
- Integration Tests: Connection lifecycle, SSL, pool exhaustion, version compatibility
- Component Tests: Renderer with jsdom, tree views, forms, dashboards
- Docker Containers: PostgreSQL 12, 14, 15, 16, 17 for compatibility testing
- CI/CD Pipeline: GitHub Actions with Matrix testing (Node 18-22, PostgreSQL 12-17)
π Testing docs: Use the scripts listed above and CI workflow in .github/workflows/test.yml.
- π Report Bugs
- π‘ Request Features
- π§ Fork β Branch β PR
- π§ͺ Ensure all tests pass:
npm run test:all && npm run coverage
We follow Conventional Commits:
feat: add new feature
fix: resolve bug
docs: update documentation
refactor: code restructuring
test: add/update tests
chore: maintenance tasks
# Build VSIX package
npx vsce package
# Publish to VS Code Marketplace
npx vsce publish
# Publish to Open VSX
npx ovsx publish- Stable releases are published from version tags (
v*) via.github/workflows/publish.yml. - Nightly releases are published on every merge to
mainvia.github/workflows/publish-nightly.yml.
VS Code Marketplace channel behavior:
- Stable extension ID:
ric-v.postgres-explorer - Nightly is published as a pre-release of the same extension ID.
- Users can opt in/out directly from the extension page with:
Switch to Pre-Release VersionSwitch to Release Version
Open VSX channel behavior:
- Stable extension ID:
ric-v.postgres-explorer - Nightly companion extension ID:
ric-v.postgres-explorer-nightly - To opt out of nightly on Open VSX-based editors, uninstall the nightly companion extension and install stable.
Nightly versioning policy:
- Nightly builds use an odd minor stream and CI run number as patch.
- Example format:
0.9.<run_number> - This keeps nightly versions monotonically increasing for reliable updates.
Problem: SSL connection failed or certificate verify failed
Solutions:
- Disable SSL (development only): Set SSL Mode to
disable - Use
prefermode (tries SSL, falls back to non-SSL) - Provide CA certificate: SSL Mode
verify-ca+ CA Certificate path
Problem: Connection timeout or ETIMEDOUT
Solutions:
- Increase connection timeout in settings
- Check firewall rules
- Verify PostgreSQL
pg_hba.confallows remote connections - Ensure PostgreSQL is listening on correct interface
Problem: SSH tunnel failed to establish
Solutions:
- Verify SSH credentials and host
- Test SSH connection manually:
ssh user@host -p port - Check SSH key permissions:
chmod 600 ~/.ssh/id_rsa - Ensure SSH server allows port forwarding
Problem: Querying large tables causes freezes
Solution: Results are automatically limited to 10,000 rows. Use LIMIT clause for specific row counts.
Problem: Database tree takes long to load
Solutions:
- Use search filter to narrow objects
- Collapse unused schemas
- Disable object count badges in settings
| Error | Cause | Solution |
|---|---|---|
password authentication failed |
Wrong credentials | Verify username/password |
database does not exist |
Database name typo | Check database name |
permission denied |
Insufficient privileges | Grant SELECT permission |
too many connections |
Pool exhausted | Close unused connections |
no pg_hba.conf entry |
Access control | Add entry to pg_hba.conf |
| Feature | PgStudio | pgAdmin | DBeaver | TablePlus |
|---|---|---|---|---|
| VS Code Integration | β Native | β | β | β |
| SQL Notebooks | β Interactive | β | β | β |
| AI Assistant | β Built-in | β | β | β |
| Real-time Dashboard | β | β | ||
| Inline Cell Editing | β | β | β | β |
| Export Formats | CSV, JSON, Excel | CSV, JSON | CSV, JSON, Excel | CSV, JSON, SQL |
| SSH Tunneling | β | β | β | β |
| Foreign Data Wrappers | β Full | β | β | |
| License | MIT (Free) | PostgreSQL (Free) | Apache 2.0 (Free) | Proprietary (Paid) |
- π€ AI-powered query generation and optimization
- π Interactive SQL notebooks with persistent state
- π Infinite scrolling for large result sets (10k rows)
- π¨ Modern UI integrated into VS Code
- π Hybrid connection pooling for performance







