Notebooks Page¶
Create, open, and manage Marimo notebooks from the web interface.
Overview¶
The Notebooks page (/notebooks) lets you create and manage Marimo notebooks for data exploration and quality analysis. Notebooks open directly in the browser with a read-only snapshot of your DuckDB warehouse, so notebook queries never block data syncs.
Navigate to Notebooks in the top navigation bar.
Editor role required
Creating, opening, and managing notebooks requires the editor or admin role. Viewers can see the notebooks list but cannot interact with them.
Notebooks Table¶
The table shows all notebooks in your project:
| Column | Description |
|---|---|
| Name | Notebook name. A yellow "missing file" badge appears if the .py file has been deleted from disk. |
| Author | Email of the user who created the notebook, or "—" if unknown. |
| Last Modified | Relative time since the file was last changed (e.g., "2h ago"). |
| Lock Status | Current editing state (see Lock Indicators below). |
| Actions | Context-dependent buttons (see Actions below). |
Lock Indicators¶
Notebooks use file locking to prevent conflicting edits:
| Status | Badge Color | Meaning |
|---|---|---|
| Available | Green | No one is editing — you can open it. |
| Editing (Xh ago) | Blue | You are currently editing this notebook. |
| Locked by [email protected] | Orange | Another user is editing. You can copy the notebook or wait. |
Actions¶
The available actions depend on the notebook's lock state and your role:
| Lock State | Available Actions |
|---|---|
| Not locked | Open, Delete |
| Locked by you | Release Lock, Delete |
| Locked by another user | Copy, Force Unlock (admin only), Delete |
Creating a Notebook¶
- Click the New Notebook button (top-right).
- Choose a template from the dropdown:
- Blank — empty notebook
- Data Exploration — pre-configured with DuckDB connection and sample queries
- Data Quality — template for data quality checks and profiling
- Enter a name in the modal (letters, numbers, and underscores only).
- Click Create.
The notebook appears in the table and is ready to open.
Opening a Notebook¶
- Click Open on an available (unlocked) notebook.
- Dango acquires a lock, creates a DuckDB snapshot, and starts the Marimo server.
- Marimo opens in a new browser tab.
While editing, a heartbeat signal is sent every 60 seconds to keep the lock active. Locks expire 15 minutes after the last heartbeat, so if you close the tab without releasing the lock, it becomes available to other users within 15 minutes.
DuckDB snapshot
Notebooks work against a read-only snapshot of your warehouse, not the live database. This means your notebook queries never block syncs or dbt runs. The snapshot is created when you open the notebook.
Lock Management¶
Releasing Your Lock¶
When you're done editing, click Release Lock in the notebooks table. This frees the notebook for other users.
Force Unlock (Admin)¶
If a user's session crashes and their lock persists, an admin can click Force Unlock to release it. The locked-out user receives a notification:
Your lock on "notebook_name" has been revoked by an administrator.
This notification appears as a yellow banner on their Notebooks page.
Copying a Notebook¶
If a notebook is locked by another user, click Copy to create a duplicate with a new name. This lets you work on your own version without waiting for the lock to be released.
Deleting a Notebook¶
- Click Delete on the notebook row.
- Confirm in the modal: "Are you sure you want to delete notebook_name? This cannot be undone."
- Click Delete to confirm.
Non-admin users can only delete notebooks they created. Locked notebooks cannot be deleted until the lock is released.
How it works
- List notebooks:
GET /api/notebooksreturns all notebooks with lock state, author, and file existence status. - Create:
POST /api/notebookswith{name, template}. Name must match[a-zA-Z0-9_]+. - Open (acquire lock):
POST /api/notebooks/{name}/lockacquires the lock, creates a DuckDB snapshot, and starts Marimo. Returns amarimo_urlto open in a new tab. - Heartbeat:
POST /api/notebooks/{name}/heartbeatevery 60 seconds to keep the lock alive. - Release lock:
POST /api/notebooks/{name}/releasereleases your own lock. - Force unlock:
DELETE /api/notebooks/{name}/lock(admin only) releases another user's lock and sends a WebSocketnotebook_lock_revokedevent. - Copy:
POST /api/notebooks/{name}/copycreates a duplicate file. - Delete:
DELETE /api/notebooks/{name}removes the notebook file and metadata.
Troubleshooting¶
- "Notebook is locked by..." but the user isn't editing
- The user's browser may have closed without releasing the lock. Ask an admin to click Force Unlock, or wait for the heartbeat to expire (the lock releases automatically when heartbeats stop).
- Notebook opens but Marimo shows a blank page
- The Marimo server may not have started yet. Wait a few seconds and refresh the Marimo tab. On cloud deployments, Marimo is proxied through the Dango web server — check that the server is running.
- "Notebook file not found" error
- The notebook's
.pyfile was deleted from disk but the metadata still exists. The table shows a yellow "missing file" badge. Create a new notebook with the same name to replace it.
Related Pages¶
- Dashboard Page — platform overview and service status
- Catalog Page — browse tables and columns for query reference
- Sources Page — check source sync status and data availability