> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/marimo-team/marimo/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction to marimo

> A reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps

# Introduction to marimo

marimo is a reactive Python notebook that transforms how you work with data and code. Unlike traditional notebooks, marimo automatically runs dependent cells when you make changes, keeping your code, outputs, and program state perfectly synchronized.

<CardGroup cols={2}>
  <Card title="Reactive by design" icon="bolt" href="/reactivity">
    Run a cell and marimo automatically runs all dependent cells, eliminating hidden state and manual re-execution
  </Card>

  <Card title="Git-friendly notebooks" icon="code-branch" href="/creating-notebooks">
    Notebooks stored as clean `.py` files that work seamlessly with version control
  </Card>

  <Card title="Deploy as apps" icon="rocket" href="/deploy-as-app">
    Transform notebooks into interactive web apps with a single command
  </Card>

  <Card title="Interactive UI elements" icon="sliders" href="/interactive-elements">
    Bind sliders, dropdowns, and plots to Python without writing callbacks
  </Card>
</CardGroup>

## What makes marimo different?

marimo solves fundamental problems with traditional notebooks like Jupyter by guaranteeing that your notebook code, outputs, and program state are always consistent.

### No hidden state

Every time you run a cell, marimo analyzes your code and automatically runs cells that depend on it. Delete a cell and marimo scrubs its variables from memory. This eliminates the "run cells out of order" problem that plagues traditional notebooks.

```python theme={null}
import marimo as mo

# When you change this slider...
slider = mo.ui.slider(1, 10, value=5)
slider
```

```python theme={null}
# ...marimo automatically re-runs this cell
mo.md(f"The slider value is {slider.value}")
```

### Pure Python notebooks

marimo notebooks are stored as pure Python files, not JSON. This means:

* Clean diffs in version control
* Easy code review
* Import functions from one notebook into another
* Execute notebooks as scripts: `python notebook.py`
* Run tests with pytest

### Batteries included

marimo comes with everything you need:

<CardGroup cols={3}>
  <Card title="SQL support" icon="database">
    Query dataframes, databases, and data warehouses with native SQL cells
  </Card>

  <Card title="AI assistance" icon="sparkles">
    Generate code with AI that understands your data context
  </Card>

  <Card title="Rich UI library" icon="palette">
    Sliders, tables, plots, chat interfaces, and 40+ interactive components
  </Card>

  <Card title="Package management" icon="box">
    Auto-install packages on import with built-in dependency tracking
  </Card>

  <Card title="Interactive dataframes" icon="table">
    Page, search, filter millions of rows with no code required
  </Card>

  <Card title="Modern editor" icon="code">
    GitHub Copilot, vim keybindings, variable explorer, fast completions
  </Card>
</CardGroup>

## Use cases

marimo excels at:

* **Data exploration and analysis** - Interactive notebooks that stay consistent as you iterate
* **Research and experimentation** - Reproducible notebooks you can trust
* **Internal tools and dashboards** - Deploy notebooks as web apps without refactoring
* **Teaching and learning** - Students see immediate feedback without hidden state confusion
* **Reports and presentations** - Notebooks with dynamic markdown and beautiful layouts

## Get started

<CardGroup cols={2}>
  <Card title="Quickstart" icon="play" href="/quickstart">
    Install marimo and create your first notebook in minutes
  </Card>

  <Card title="Key concepts" icon="book" href="/key-concepts">
    Learn about reactivity, cells, and how marimo notebooks work
  </Card>
</CardGroup>

<Note>
  Try marimo instantly in your browser with [molab](https://molab.marimo.io/notebooks), our free online notebook environment.
</Note>

## Philosophy

marimo is designed to be:

1. **Simple** - Intuitive APIs that feel natural to Python developers
2. **Immersive** - Focus on your work without wrestling with the tool
3. **Interactive** - Immediate feedback as you code and explore data
4. **Seamless** - Works with your existing tools and workflows
5. **Fun** - Enjoyable to use for both quick experiments and serious projects

We believe the tools we use shape how we think. marimo provides a better environment for research, experimentation, and communication with code.
