Plain HTML is the contract
No component schema and no rendering DSL. The agent edits one normal HTML file with the same filesystem tools it already uses, and a write becomes a live update.
Available now / v0.0.1
Reindr gives OpenCode and Claude Code sessions an editable HTML file and a live browser panel. The agent writes the interface with ordinary tools; Reindr takes care of the reload, the sandbox, and the route back to the session.
OpenCode + Claude Code / Chromium
1.2s2.8s42ms19msSend to agentFix the two failing tests, then rerun this dashboard.
Choose a prompt to change the session HTML and its live panel.
No component schema and no rendering DSL. The agent edits one normal HTML file with the same filesystem tools it already uses, and a write becomes a live update.
The file follows the agent session, not the working directory. Resume the session elsewhere and the interface comes back; switch sessions and the panel follows.
A trusted click can send structured choices to the owning session. Generated code stays sandboxed, receives no raw SDK, and cannot reach another session.
Pick your host
Both integrations use the same local, file-backed canvas model. OpenCode installs from npm; Claude Code installs from the repository marketplace.
{
"plugin": ["@nicodes/reindr-opencode"]
} View @nicodes/reindr-opencode /plugin marketplace add nicodes/reindr
/plugin install reindr@nicodes Read the Claude Code setup One file, live
Ask for a dashboard, a comparison table, or a form. Reindr opens the canvas immediately, then stays out of the authoring path. HTML, CSS, and JavaScript remain readable, editable, and local to your machine.
01 <form id="release"> 02 <label>Environment 03 <select name="target">...</select> 04 </label> 05 <button>Deploy</button> 06 </form> 07 08 release.onsubmit = (event) => { 09 event.preventDefault() 10 opencode.submit({ 11 prompt: "Deploy this release", 12 data: { target: release.target.value } 13 }) 14 }
Editable fileNormal tools write normal HTML.
Sandboxed panelChanges appear without a rebuild.
Scoped interactionA click returns to its own session.
Ask for an interface.
Keep working in it.