All docs
What is LSD?
LSD turns Python functions into cached, inspectable pipeline nodes you assemble on a visual canvas — author with lsdtools, run anywhere.
The idea#
LSD is a data-pipeline platform. A pipeline is a graph of nodes; each node is one step — load some data, shape it, or deliver a result. You build pipelines two ways, on the same engine:
- Visually — drag nodes onto the canvas, wire them together, edit parameters in forms.
- In Python — write a function, decorate it, and it becomes a node.
The bridge between the two is lsdtools: decorate a function and it shows up
on the canvas with a generated form, live caching, and an inspector — no UI code required.
from lsdtools import Tool, Table
tool = Tool("scores")
@tool.shape
def top_scores(t: Table, limit: int = 10) -> Table:
"""Keep the highest-scoring rows."""
return t.sort("score", descending=True).head(limit)
That's a real node. t: Table is an input port you wire from an upstream node; limit: int
is a parameter that renders as a number field. Run it and the result is cached — change a
parameter and only what depends on it recomputes.
The two-layer rule#
There is exactly one rule to remember:
Import only
lsdtools. Everything underlsd.*is private engine internals.
lsdtools is small (about twenty names) and stable. Staying on it means your tool keeps working
across releases — and lsd package lint will tell you if you stray.
Where LSD runs#
The same pipeline runs in three places, unchanged:
| Where | What it adds |
|---|---|
| Desktop app | Node-graph canvas, parameter forms, 3D viewer, the Package Manager |
| A Python script | Engine().run(...) — automate or embed a pipeline anywhere |
| CI / headless | The lsd CLI runs projects with no display |
Start here#
- Install LSD — the SDK and the desktop app.
- Run your first pipeline — on the canvas, no code.
- Write your first tool — ten lines, live on the canvas.
- Where to next — the map of these docs.
Related#
Learn — Build a tool · Packages
API — lsdtools reference · Tool · Table
Frequently asked questions
Do I have to write Python to use LSD?
No. You can assemble pipelines from the step palette and edit parameters in forms. You write Python only when you want a custom node — and then it is one decorated function.
What is the difference between lsd and lsdtools?
lsdtools is the small, stable public API you author against. lsd is the engine and internals — private. The one rule is "import only lsdtools"; lsd package lint enforces it.