A powerful Visual Studio Code, Cursor, Windsurf, and Antigravity extension that brings Deepnote notebook capabilities directly into your favorite editor. Work with sleek AI notebooks featuring SQL blocks, database integrations, and reactive blocks - all within your IDE.
Run Deepnote locally inside your IDE and unlock the next generation of data workflows:
- Rich block types: Combine Python, Markdown, data visualizations, tables, and more — all in one place
- SQL blocks: Run SQL queries out of the box, no extensions needed
- Native database connections: Securely connect to Snowflake, BigQuery, Postgres, and 60+ other sources via VS Code’s encrypted SecretStorage API
- Init notebooks: Auto-run setup code (dependencies, env setup) before execution
- Smart requirements: Generate
requirements.txtautomatically for reproducible runs - Deepnote kernel: Fully
.ipynbcompatible, tuned for modern data workflows - Cloud collaboration: Switch between local VS Code and Deepnote Cloud to collaborate live on the same file with your team
- Open the extensions tab and Search for Deepnote
- Or alternatively, press
Cmd+PorCtrl+Pto open the command palette. - Type
ext install Deepnote.vscode-deepnote - Press Enter
Or install from the VS Code Marketplace
- Visual Studio Code 1.95.0 or higher
- Python 3.10 or higher (for running notebooks)
- Open a folder containing
.deepnoteproject files - Look for the Deepnote icon in the Activity Bar (sidebar)
- Click on a notebook in the Deepnote Explorer to open it
- Select a Python kernel when prompted
- Start coding!
Open the Command Palette (Cmd+Shift+P or Ctrl+Shift+P) and type Deepnote to see all available commands:
| Command | Description |
|---|---|
Deepnote: Refresh Explorer |
Refresh the Deepnote project explorer |
Deepnote: Open Notebook |
Open a specific notebook from a Deepnote project |
Deepnote: Open File |
Open the raw .deepnote project file |
Deepnote: Reveal in Explorer |
Show active notebook information in the explorer |
Deepnote: Show Project Explorer |
Show the Deepnote sidebar and select the active notebook when available |
Deepnote: Manage Integrations |
Configure database connections and credentials |
Deepnote: New Project |
Create a new Deepnote project |
Deepnote: Import Notebook |
Import an existing notebook into your project |
Deepnote: Set API Token |
Save a Deepnote API token for syncing and publishing |
Deepnote: Clear API Token |
Remove the saved Deepnote API token |
Deepnote: Sync with Deepnote Cloud |
Sync a folder that is already synced with your Deepnote workspace |
Deepnote: Sync a New Folder with Deepnote Cloud… |
Download your Deepnote workspace into a folder and start syncing it |
Notebook: Select Notebook Kernel |
Select or switch kernels within your notebook |
Notebook: Change Cell Language |
Change the language of the cell currently in focus |
Deepnote: Enable Snapshots |
Enable snapshot mode for the current workspace |
To start, run Deepnote: Sync a New Folder with Deepnote Cloud… from the Command Palette or from the … menu of the Deepnote explorer, and choose a folder.
After that, run Deepnote: Sync with Deepnote Cloud, or click the sync button in the Deepnote explorer title bar. With one synced folder in your workspace, it syncs that folder. With several, it asks which one, listing the folder of the file you have open first. With none, it offers to sync a new folder.
- Sync uses
DEEPNOTE_TOKENfrom a.envfile in the synced folder, or the token saved withDeepnote: Set API Token. - The first sync into a folder downloads every project of your Deepnote workspace, one folder per project, and creates
.deepnote-sync.json. - Each sync pulls projects changed in Deepnote and pushes projects changed locally.
- Before overwriting changes that were not synced, sync asks, offering one replacement and "Skip":
- For a project changed both locally and in Deepnote, or a local folder that already exists with different content where sync downloads a project, it offers to replace the local files with the Deepnote version.
- For local edits that Deepnote rejects because the project changed there, it offers to replace the Deepnote version with the local files.
- "Skip" leaves both copies as they are, and the next sync asks about that project again.
- Unsaved notebooks must be saved before a sync starts.
- Sync works only in a trusted workspace, in the desktop app, for a folder inside the open workspace that neither contains nor is inside another synced folder.
- Sync does not create Deepnote projects. Local
.deepnotefiles that are not linked to a project are left as they are. - Deleting a project folder or a notebook file locally does not delete it in Deepnote, and the next sync downloads it again.
Known limitations:
- Edits made in the folder while a sync runs can be overwritten.
- Saving a notebook after running cells writes its outputs into the file, so the next sync pushes that project.
- After a sync updates an open notebook, the editor can save the notebook again, and the next sync can then push that project or report a conflict for it.
- A folder reached through a symbolic link or junction is checked by its path in the workspace, not by its target, so a link into another synced folder is not refused.
Configure database connections for SQL blocks:
- Open Command Palette
- Run
Deepnote: Manage Integrations - Add your database credentials (PostgreSQL, BigQuery, etc.)
- Use SQL blocks in your notebooks with the configured integrations
Credentials are securely stored using VS Code's encrypted storage and never leave your machine.
SQL blocks allow you to query databases directly from your notebooks:
-- Query your PostgreSQL database SELECT * FROM users WHERE created_at > '2024-01-01'
Results are displayed as interactive tables that you can explore and export.
Snapshot mode gives you a historical, portable record of all notebook executions without polluting your main project files. This makes it easier to work with Git since outputs are stored separately from your source code.
How it works:
- Execution outputs are saved to a
snapshots/folder alongside your project - Your main
.deepnotefile stays clean (no outputs), making diffs readable - Each "Run All" execution creates a timestamped snapshot for historical tracking
- Running individual cells updates only the latest snapshot
To enable:
- Open Command Palette (
Cmd+Shift+PorCtrl+Shift+P) - Run
Deepnote: Enable Snapshots
Once enabled, snapshots are automatically created when you execute notebooks. You can add the snapshots/ folder to .gitignore to keep outputs local, or commit them to share execution history with your team.
- Join our Community!
- Open an Issue for bug reports or feature requests
- Have a look at Architecture for technical and design decisions
- Visit Deepnote kernel implementation for the custom Jupyter kernel
- Learn how database integrations work in Integrations & credentials
Want to contribute? Check out our Contributing guide for detailed setup instructions.
This project includes the following third-party packages with notable licenses:
- glob - Licensed under the Blue Oak Model License 1.0.0
- tar - Licensed under the Blue Oak Model License 1.0.0
Built with 💙

