NEXUS – Synapse Notebook Command Center for VS Code
Run and manage Azure Synapse Spark notebooks directly from VS Code. NEXUS lets you browse, edit, execute, publish, and monitor Synapse notebooks without opening Synapse Studio.
Great for Synapse data engineers and analytics teams who live in notebooks.
At a Glance
Imagine a Synapse control center directly inside VS Code:
- Left sidebar: A dedicated NEXUS activity bar with three focused views — Workspaces, Notebooks, and Active Sessions — so you can see where you are, what you’re editing, and what’s running at a glance.
- Main editor: Native
.ipynb notebooks backed by your Synapse workspace, with run buttons, cell status, and rich outputs just like you’d expect from a notebook-first experience.
- Status bar: A subtle cache indicator and workspace context so you always know which environment you’re connected to and whether NEXUS is serving results from cache or from Synapse.
In practice, this feels like having Synapse Studio’s notebook surface embedded into your day‑to‑day editor, but streamlined for keyboard‑driven, developer workflows.
| Capability |
What you get |
Why it helps |
| Multi-workspace hub |
A Workspaces view for adding, switching, and managing multiple Synapse workspaces |
Quickly move between dev/test/prod or client environments without leaving VS Code |
| Notebook explorer |
A Notebooks tree that mirrors your Synapse folders plus local drafts, with search and refresh |
Treat Synapse notebooks like local files while still working against the remote workspace |
| Spark session control |
Per‑notebook session settings (pool, executors, idle timeout), an Active Sessions view, and one‑click stop controls |
Keep clusters clean, reduce costs, and avoid long‑running or zombie sessions |
| Magic commands |
%run, %%sql, %%pyspark, %%md supported directly in the VS Code notebook |
Keep your existing Synapse notebook patterns and reuse shared notebooks without rewrites |
Interactive display() |
A display(df) helper that renders sortable, filterable, paginated result grids |
Inspect data quickly, slice and filter on the fly, and stay inside your notebook context |
| Smart caching |
A cache‑first model for notebooks, configurations, and workspace metadata |
Faster startup, responsive trees, and dramatically fewer Synapse API calls |
Quick Start
| Step |
Action |
Details |
| 1 |
Configure Workspace |
Run Configure Workspace, then enter subscription ID, resource group, and Synapse workspace. |
| 2 |
Authenticate |
Use Azure CLI (az login) or interactive OAuth via the 🔑 command. Tokens refresh automatically. |
| 3 |
Browse & Search |
Use the Notebooks view and search box to find notebooks (tested with 1000+ items). |
| 4 |
Open & Execute |
Open notebooks, run cells or the entire notebook, and use magic commands. |
| 5 |
Publish |
Compare local vs workspace, publish updates, or revert to the remote version. |
What You Can Do
Multi-Workspace Management
- Keep multiple Synapse workspaces in the Workspaces view.
- Click to switch workspace; notebooks and sessions reload automatically.
- Each workspace entry keeps a last connected timestamp plus cache badge (⭐ active, ✅ fully cached, ☁ cache-needed) so you know what’s safe to open offline.
- Right-click to delete a workspace entry and clear its cached notebooks/configs in a single action.
- Export / import workspace settings (or export the entire list at once) and share JSON configs with your team.
Notebook Management
Think of the Notebooks view as a remote file explorer for Synapse notebooks:
- Browse a folder-aware tree of Synapse notebooks that mirrors what you see in Synapse Studio, including nested folders and shared libraries.
- Use search to instantly filter by notebook name or folder, which scales smoothly even when your workspace has thousands of items.
- Create local draft notebooks that live side‑by‑side with workspace notebooks, perfect for experiments and in‑progress work before you publish to the team.
- When you’re ready, use the Publish Notebook action to compare local vs workspace content, review the diff, and push the updated version back to Synapse.
- Right-click any notebook to clone it for experimentation or delete drafts/published copies as needed.
- At any time, you can refresh a single notebook if you know it changed, or all notebooks to resync the entire tree with your Synapse workspace.
Spark Sessions & Execution
Behind every notebook, NEXUS gives you a clear window into Spark sessions instead of treating them like a black box:
- Each notebook can use its own dedicated Spark session, created on first run and reused for subsequent cells so you get fast feedback loops.
- The Session Settings panel acts like a configuration sheet for the notebook: choose the Spark pool, executor size, executor count, idle timeout, and any advanced Spark configuration before you run.
- Set a session timeout (5‑60 minutes, default 30) so idle sessions auto-stop before they consume extra Spark capacity.
- The Active Sessions view surfaces all of your running Spark sessions in one place, with state, pool, and notebook information so you can see what’s consuming resources.
- From either the notebook toolbar or the Active Sessions view, you can stop a single session or all sessions in a couple of clicks.
- Long‑running or stuck cells respect cancellation signals, so you can cancel work quickly instead of waiting minutes for timeouts.
- Need to fan out compute? Use the Run Parallel button on any code cell to bypass the sequential queue and fire it immediately (up to five parallel cells per notebook session).
Magic Commands & Interactive Output
Magic commands:
# Run another notebook (nested up to 10 levels, circular-safe)
%run "shared/data_processing"
# SQL cell
%%sql
SELECT TOP 100 * FROM database.table
# Explicit PySpark cell
%%pyspark
# Markdown cell
%%md
# My Analysis
This notebook analyzes customer behavior.
Interactive tables with display(df):
When you call display(df), NEXUS turns your DataFrame into a mini interactive data app inside the notebook:
- Click column headers to sort ascending or descending and quickly surface outliers or top‑N values.
- Add column filters to narrow down rows by value, ranges, or patterns without writing extra SQL or DataFrame code.
- Resize the results pane to focus on the table when you are exploring data, then collapse it to reclaim vertical space for code.
- Work comfortably with large result sets thanks to pagination controls that let you move through pages of data instead of overloading the notebook output.
Views & Commands
Tree Views
| View |
Where |
What it shows |
Highlights |
| Notebooks |
NEXUS activity bar |
Synapse and local draft notebooks |
Search, folder structure, draft indicator, cache status |
| Active Sessions |
NEXUS activity bar |
Your active Spark sessions |
State (Starting/Idle/Busy), pool, executors, stop controls |
| Workspaces |
NEXUS activity bar |
Saved Synapse workspace connections |
Add/switch/delete workspaces, import/export settings, history |
Common Commands
| Command |
Where to find it |
What it does |
Configure Workspace |
Command Palette |
One-time setup: subscription, resource group, workspace name, default pool. |
Add Workspace |
Workspaces view toolbar |
Add another Synapse workspace. |
Switch Workspace |
Workspaces view item menu |
Switch active workspace. |
Delete Workspace |
Workspaces view item menu |
Remove workspace entry and purge its cache. |
Export/Import Workspace Settings |
Workspaces view |
Share workspace configurations via JSON. |
Export All Workspaces |
Workspaces view toolbar |
Export every saved workspace connection into one JSON file. |
Refresh Notebooks |
Notebooks view toolbar |
Pull the latest notebook list from Synapse. |
Refresh Configuration |
Notebooks view toolbar |
Refresh Spark pools and environment configs. |
Search Notebooks |
Notebooks view toolbar |
Filter notebooks by name or folder. |
Create Draft Notebook |
Notebooks view toolbar |
Create a new local draft notebook. |
Open Notebook |
Notebooks / Active Sessions views |
Open notebook in VS Code editor. |
Refresh Notebook |
Notebook context menu |
Refresh a single notebook from Synapse. |
Create Draft Notebook Here |
Folder context menu |
Create a draft notebook directly inside the selected Synapse folder. |
Clone Notebook |
Notebook context menu |
Duplicate a notebook into any folder as a draft, then publish to create it in Synapse. |
Delete Notebook |
Notebook context menu |
Delete notebook from Synapse (with confirmation). |
Run Notebook |
Notebook title bar |
Run all cells in the notebook. |
Run Cell |
Cell toolbar |
Run a single cell. |
Run Cell in Parallel |
Cell toolbar |
Launch a cell immediately without waiting for previous cells (max 5 in-flight per notebook). |
Session Settings |
Notebook title bar |
Open unified session configuration panel. |
Stop Session / Stop All Sessions |
Notebook toolbar / Active Sessions view |
Clean up running sessions. |
Publish Notebook |
Notebook title bar / Notebooks view |
Diff and publish local changes to Synapse. |
Export to .py |
Notebook title bar |
Export notebook as a Python script. |
Clear Cell Output |
Cell toolbar |
Clear outputs from a single cell. |
Day-to-Day Workflow
1. One-Time Setup
Install Azure CLI (if using CLI auth):
Configure your first workspace:
- Open Command Palette (
Ctrl+Shift+P / Cmd+Shift+P).
- Run
Configure Workspace.
- Enter:
- Azure Subscription ID
- Resource Group
- Synapse Workspace name
- NEXUS loads notebooks and configurations and warms up cache.
2. Working with Notebooks
- Open the Notebooks view from the NEXUS icon.
- Use the search box to filter.
- Select a notebook to open it as
.ipynb in VS Code.
- Use the Run button on cells or the notebook to execute.
For new work:
- Click the
+ button in Notebooks to create a draft.
- Edit locally as you would any notebook.
- When ready, use Publish Notebook to push it to Synapse.
3. Managing Spark Sessions
- Use Session Settings (⚙️ in the notebook toolbar) to pick:
- Spark pool
- Executor size (Small–XXLarge)
- Executor count (validated against pool capacity)
- Optional Spark configuration
- Session timeout in minutes (5–60, default 30) for automatic idle cleanup
- NEXUS stops and recreates sessions when needed to apply new settings.
- Check the Active Sessions view to see all running sessions and stop them as needed.
4. Multi-Workspace Workflow
- Add each workspace once in the Workspaces view.
- Click a workspace’s switch icon to jump between environments.
- Export workspace settings to JSON and share with teammates; they can import to get the same list.
- NEXUS caches data under
%TEMP%/nexus/<workspace>/ (notebooks, configs, workspace info).
- If you see a cache indicator, click Refresh Notebooks or Refresh Configuration to sync with Synapse.
- Prefer a custom cache location (network drive, SSD, encrypted folder)? Set the VS Code setting
nexus.cacheFolder to any directory and NEXUS will place its /nexus/<workspace>/ tree there.
- Cache speeds up startup and reduces API calls; you can always force a refresh.
Requirements
| Area |
Requirement |
| VS Code |
Version 1.104+ (from engines.vscode in package.json). |
| Azure |
An Azure Synapse Analytics workspace with at least one Spark pool. |
| Auth |
Azure CLI (az login). |
| Permissions |
Synapse Contributor or Synapse Artifact Publisher (notebook CRUD/publish), plus Synapse Compute Operator (sessions). |
| Network |
Access to Synapse REST API and Livy endpoints from your dev machine. |
Troubleshooting & Tips
Common Issues
| Scenario |
What to do |
Extra notes |
| Azure CLI not detected |
Install Azure CLI and run az login. |
aka.ms/install-azure-cli |
| Notebook list is empty |
Click Refresh Notebooks in the Notebooks view. |
Ensures Synapse workspace and permissions are correct. |
| "Session does not exist" error |
Stop the session and rerun the cell. |
Use notebook toolbar or Active Sessions view. |
| Session configuration not applying |
Confirm the session was restarted. |
NEXUS will stop existing sessions when applying new settings. |
| Executor count validation errors |
Lower the executor count or switch to a larger pool. |
Limits are based on the selected pool. |
%run command not found |
Check the notebook path and casing. |
Target notebook must exist and paths are case-sensitive. |
%run circular dependency |
Review notebook dependencies. |
NEXUS detects circular references up to 10 levels deep. |
| Slow first execution |
Wait for the first Spark session to spin up. |
Usually 2–5 minutes; later cells are typically <5 seconds. |
| High memory / cluster usage |
Stop unused sessions. |
Use Stop Session or Stop All Sessions. |
| Cache feels out-of-date |
Refresh notebooks/configs. |
Use Refresh Notebooks or Refresh Configuration. |
Support
- Leave a review or question directly on the extension page in the VS Code Marketplace.
- Optionally, use Help → Report Issue in VS Code or file an issue in the extension repository with VS Code + extension versions, Synapse workspace region, steps to reproduce, and any relevant error messages.
FAQ
Does this replace Synapse Studio?
No. NEXUS is meant to complement Synapse Studio by giving you a fast, code-first notebook experience in VS Code. You still use Synapse Studio for workspace admin, pipelines, and other UX.
Which languages are supported?
The extension works with Spark notebooks that use PySpark, Scala, or Spark SQL, and supports the standard Synapse-style magic commands (%run, %%sql, %%pyspark, %%md).
Where does NEXUS store cache data?
Under %TEMP%/nexus/<workspace>/ on your machine (notebooks, configs, workspace info). You can always force a refresh from Synapse if needed.
Will it work with large workspaces?
Yes. NEXUS uses caching, search, and pagination and has been tested with 1000+ notebooks.
Happy building with NEXUS! 🚀
| |