The slide framework
built for agents.
A React-first slide framework. Every page is arbitrary code on a 1920×1080 canvas. No layout to fight. Design anything you can imagine.
Slides as code.
Crafted by agents.
- 01 · scaffold
Spin up a workspace
Creates the slide workspace. Every future deck you author lives inside it.
$npx @open-slide/cli init my-deck✓ ready in 3s - 02 · author
Ask your agent
Your agent drafts pages as arbitrary React components. You guide with prompts.
›/create-slide for Q2 roadmap...
- 03 · iterate
Edit, comment, apply
Click any element to tweak it visually. Or leave a comment for the agent to apply.
›/apply-comment✓ applied change
A slide is a file.
Just React, nothing else.
import type { Page } from '@open-slide/core'; const ACCENT = '#d56b48';const WORD = 'deck';const SUBTITLE = 'A React slide, rendered live.'; const Cover: Page = () => ( <div style={{ background: '#08090a', color: '#f7f8f8' }}> <h1 style={{ fontSize: 188, letterSpacing: '-0.04em' }}> Hello, <em style={{ color: ACCENT }}>{WORD}</em>. </h1> <p>{SUBTITLE}</p> </div>); export default [Cover] satisfies Page[];Hello, deck.
A React slide, rendered live.
Talk to the agent.
Or just tap the canvas.
Drop a comment. The agent rewrites the file.
Click any block, leave a note. The inspector pins it as a @slide-comment marker in your source. Run /apply-comments — the agent edits exactly what you flagged and clears the marker.
Click. Tweak. Save.
Toggle inspect, click any element. Change text, font, weight, color, or swap an image — right on the canvas. Edits buffer in memory until you hit Save, so one batch lands as a single HMR write.
Drop in images.
Pull in logos.
In-place file management.
Drag images straight into the deck. Rename and replace from the same pane the inspector uses to swap an element’s src.
Brand logos, no dance.
Search svgl from inside the editor. Pick a result and the SVG lands in your assets folder, ready to import.
Bring your own agent. Anything that edits React works.
Questions, answered.
Author a deck
in the next minute.
One command, zero config. Your agent takes it from here.