- Extension
- The end-user-installable delivery mechanism or container for plugins. An extension is a collection of 1 or more plugins. It’s very common for frontend extensions and server extensions to be bundled together as one extension (in fact, we’ll do that as part of this workshop). See the official docs for more!
- Core extension
- JupyterLab is composed of modular extensions. Core extensions are included with JupyterLab.
- Server extension
- An extension which provides new functionality on the back-end. Unlike frontend extensions, server extensions have access to the computer JupyterLab is running on, for example to read files from disk. See the official docs for more!
- MIME renderer extension
- An extension which teaches JupyterLab how to view a new type of file. For example, jupyterlab-geojson enables JupyterLab to open a “slippy map” to display geospatial vector data in the GeoJSON format. Also known as a “mimetype” extension.
- Frontend extension
- An extension which modifies the user interface and/or adds functionality that executes solely in the browser, and interacts with existing JupyterLab frontend components. This includes themes, UI elements, viewers, code editors, and more. They are built with Lumino and/or React components. Many frontend extensions are part of a larger extension with a server extension component.
- Plugin
- The atomic building blocks of JupyterLab architecture and JupyterLab extensions. Every extension includes >= 1 plugin. In a technical sense, a plugin is a JavaScript object with certain metadata fields. See the official docs for more!
- Widget
- User interface elements that can be displayed by users or by JupyterLab internals. Widgets are provided by plugins.
- Kernel
- A computational engine that executes code in a specific programming language. It runs on the server, maintains runtime state (variables, imports, etc.), and returns results back to the frontend.
- Token
- A JavaScript singleton provided by and uniquely identifying a plugin (using the
providesmetadata field on the plugin object), and can be depended on by other plugins (using therequiresoroptionalmetadata fields on the plugin object). See the official docs for more! - Top-level menu which exposes context-specific commands.
- Main area
- The central space where JupyterLab displays main area widgets, like Notebooks. You can recognize the main area by the tab panel. You can click and drag the tab at the top of any main area widget to subdivide the main area arbitrarily!
- Main area widget
- A widget which opens as a tab or panel in the Main area. For example, the launcher, the Jupyter Notebook editor, the code editor, or the terminal.
- Status bar
- Displays various information about the current session, like the number of running kernels.
- Side panel
- Contains extra utilities, like the file browser and debugger. The left and right side panels are just containers; objects can be moved between them freely.
- Source maps
- Mappings from compiled and potentially minified/compressed code back to your original code.
- Command
- A behavior that can be triggered from the JupyterLab interface. For example, from the Menu bar. See the official docs for more!
- Command palette
- A keyboard-driven interface for triggering commands. See the official docs for more!
- Launcher
- When a new JupyterLab tab is opened, the launcher is displayed. It includes categorized buttons to launch any applications that are registered with the launcher. See the official docs for more!
- VRAM
- Video Random Access Memory - dedicated memory on a graphics processing unit (GPU) used for storing image data, textures, and other graphics-related information. In the context of AI development, VRAM is crucial for loading and running large language models locally. Typical consumer GPUs have between 4GB to 24GB of VRAM, with high-end models offering more.
- LLM
- Large Language Model - a type of AI model trained on vast amounts of text data to understand and generate human-like text. When we say “AI” in this workshop, we’re referring to LLMs. LLMs can assist with coding tasks like writing code, debugging, refactoring, and explaining complex concepts. Examples include GPT-5, Claude, and Qwen. These models are characterized by having billions of parameters and the ability to perform diverse language tasks without task-specific training.
- Agentic AI
- AI systems that can autonomously take actions like an agent, rather than just providing suggestions. The key differentiator is tool use. Agentic AI can execute commands (build, test, format), read files, search codebases, and make changes directly. These tools work in an agentic loop: they plan an action, use a tool to execute it, observe the result, and decide the next step, iterating until the task is complete. Examples include Cursor, Claude Code, and Cline. Unlike chat-based or autocomplete AI, agentic tools act like a team member with tools — they don’t just suggest, they do.
- LLM token
- In the context of LLMs, a token is a unit of text (roughly 3-4 characters or ~0.75 words in English) that the model processes. API providers charge based on the number of tokens consumed—both input tokens (text sent to the model) and output tokens (text generated by the model). For example, “JupyterLab extension” is approximately 4 tokens. Token counts determine both the cost of API calls and context window limits (e.g., a model with a 1M token context can process up to 1M tokens at once).
- Print debugging
- A debugging technique that involves adding a
console.log()or similar logging statements in your code to observe values, track execution and pinpoint bugs. A quick debugging method useful during development, though it should be used sparingly or removed in production code. - Linter
- A tool that analyzes source code for potential errors, bugs, and style violations without executing it. In JupyterLab extension development, linters like ESLint help catch type errors, unused variables, and enforce best practices before runtime.
- Formatter
- A tool that automatically restructures code to follow consistent style guidelines (spacing, indentation, line length, etc.). Formatters like Prettier help ensure your code looks uniform without manual effort.
- ESLint
- The standard JavaScript/TypeScript linter used in JupyterLab extension projects. ESLint catches common errors (like unused imports or undefined variables) and enforces project-specific coding rules through an
.eslintrcconfiguration file. - Prettier
- An automatic code formatter that enforces consistent style across JavaScript, TypeScript, JSON, and CSS files. JupyterLab’s extension template includes Prettier to ensure all code follows the same formatting conventions.