Plixlab Docs

Plixlab is a computational medium for interactive storytelling: presentations whose charts, pictures and 3D models are computed by live code. You build them by talking to your own AI assistant through the Plixlab connector, or by hand in the app.

Quick start

  1. Create an account.
  2. Add Plixlab to your AI assistant (Claude, ChatGPT, Claude Code or Copilot) with the connector URL https://mcp.plixlab.com. See Connect your AI assistant.
  3. Ask for a presentation, for example: “Make a Plixlab deck on the damped harmonic oscillator with a live plot and an input for the damping ratio.”
  4. Open the link your assistant returns. Edit anything on the canvas, change an input and press Run.

Connect your AI assistant

Plixlab is an MCP server. Your assistant signs in to your Plixlab account once (OAuth) and can then create slides, write and run code cells, lay out elements and read your presentations. It runs on your own assistant subscription. Plixlab has no built-in chat and charges no AI credits.

The same settings are in the app under Account → MCP Connector, which opens by itself on your first sign-in.

Claude (claude.ai and desktop)

Customize → Connectors → Add custom connector, name it Plixlab, pastehttps://mcp.plixlab.com and connect.

Claude Code

claude mcp add --transport http plixlab https://mcp.plixlab.com

ChatGPT

Turn on Developer mode, then Settings → Connectors → Create and paste the URL. Developer mode is available on ChatGPT's paid plans.

GitHub Copilot (VS Code)

Use the Add button in Account → MCP Connector, or add an HTTP MCP server named plixlab with the URL above.

Any other MCP client that supports remote HTTP servers with OAuth works the same way.

What is in a presentation

A presentation is one unit that travels together: its slides, its compute pipeline, and the rows (datasets, pictures, movies, models) its cells read and write. Duplicating, sharing or importing a presentation copies all of it, so a copy never depends on the original.

Each presentation has two views, switched at the top: Slide view for the deck, and Pipeline view for the code graph behind it.

Slides and elements

Slides are 16:9. Elements come in two kinds.

Double-click a value tile to edit the number in it. Then press Run to recompute everything downstream.

Pipeline, cells and rows

A presentation has one pipeline: the graph of its Python code cells. Every port of a cell is bound to a row of the presentation (an uploaded asset or a computed output); the left rail's Sources lists the rows no cell computes.

Running

Nothing executes until you press Run (or your assistant calls run). A Run executes the whole presentation as one graph in dependency order. Cells whose code, inputs and environment have not changed replay from cache, so re-running after a plot tweak costs only the plot cell. Each cell's log is in the Pipeline view, and Stopcancels a run.

Keep computing and plotting in separate cells: a compute cell emits numbers, and a plot cell turns them into a figure. Then styling changes never re-run the expensive step.

What a cell returns

Every port has a kind: an input takes its row's, an output's is picked when it is added (Add output on the cell, or kind on the port over MCP). It is shown as the Python type in the cell's def header. The cell returns that object on an output and receives it on an input; a value of another type is refused at the port.

KindPython typeStored as
yamlvalues: a number, a string, a list, a dict of them (a list of numbers arrives as a NumPy array)YAML text
csva table: a dict of columns of one length (float64 arrays, or lists of strings)CSV text
h5arrays: a NumPy array, or a dict of them, of any rank and dtype; a nested dict is a groupHDF5
imagePIL.Image.Image, any modePNG
plotlyplotly.graph_objects.FigureJSON
femtrimesh.Trimesh; vertex attributes are point fields, face attributes cell fieldsHDF5
gltftrimesh.SceneGLB
glyphs(trimesh.Trimesh, positions (n, 3), scales (n, 3))HDF5
ifcifcopenshell.fileSTEP .ifc
video(frames, fps): uint16 frames (t, h, w) 0..4095 and the frame rateVP9 12-bit lossless mp4
svgstr: the SVG markupSVG
moleculedict: {format, data}, the structure file's format and textYAML text

A DataFrame or a matplotlib figure is converted in the cell:{c: df[c].to_numpy() for c in df} on a csv output, orfig.savefig(buf, format="png") and Image.open(buf) on an image one.

A row is a file

Every row is one file, stored exactly as it was written, and its kind is the format of that file. Nothing converts it: what you upload is what a cell reads, and what a cell writes is what you download.

Data has three kinds. Pick by what the value is:

You edit a yaml, csv or h5 row in its card; the file is rewritten as it is (an array keeps its dtype). A yaml or a csv row is text, so an assistant reads and writes it directly; any other row is a file your assistant downloads, changes and uploads back in place of the old one. A row a cell writes is rewritten by its next run.

Sweeps

An asset can hold several samples, for example several measurements or parameter sets (its ⋮ menu: Add a sample) — a sweep. Every Run then executes the cells reading it once per sample (once per pair when two assets sweep), and each output keeps one row per combination, named output/sample (output/a/b with two sweeps).

Where code runs

Each cell runs on a runner, chosen through its environment (see below). There are three:

An environment's card (left rail → Compute) shows its runner and the packages that come with it.

Environments and packages

An environment belongs to your account: the same list in every presentation. It names a runner, extra packages and environment variables. Each cell picks an environment in its menu (⋮ → Environment) in the left rail. Every account has three built-in environments, Cloud-CPU, Cloud-GPU andBrowser. Create your own when a cell needs a package its runner lacks:

Uploading files

Add rows from the Pipeline view or the left rail, or ask your assistant to upload them. Each file becomes a row of its kind, stored as it is:

Sharing

Use the Share icon at the top of the left rail: turn sharing on and copy the link. Whoever opens it signs in (or signs up) and the presentation joins their list, read-only. Turning sharing off, or generating a new link, removes everyone's access. A viewer can import a shared presentation into their own account as an independent copy.

Plans, account and data

See Pricing for plan limits. Cloud compute hours (Pro) are spent only by cells that run on Cloud-CPU or Cloud-GPU: 1 hour = 1 CPU core for 1 hour, and 1 hour of the GPU = 15.4 hours. The time counted is the time the machine is on for your run: starting up, running, and the time it stays ready after the last run (1 minute). A cloud cell can run for 10 minutes. Browser runs are free, and so is driving Plixlab from your assistant.

To delete your account and all of its data, open Account → Manage account → Security → Delete account. Read the Privacy Policy and Terms, or browse the FAQ.

Questions or problems: contact@plixlab.com.