v0.1.0rc3 · MIT · loopback-only

Coding agents,
on your machine.

A local browser + MCP surface. Chat with your agent, watch it render live UI on a sandboxed canvas, and juggle multiple agents in tabs — orchestrated by any MCP-speaking CLI you already have installed.

$ curl -fsSL https://climax.com.mx/install.sh | sh

or pip install --pre python-climax

http://127.0.0.1:8011

Why climax

Three things climax gives your agent that a plain CLI can't.

01 Agent · Canvas

Your agent renders real apps, not text.

climax gives every agent an MCP tool to publish HTML — dashboards, forms, mini-apps, whole SPAs — into a sandboxed iframe in your browser. Live. Interactive. With postMessage events piped back so the agent can react to clicks and submissions.

One page_set(html) call → your idea, rendered. One wait() call → the user's response, structured. No screenshot ping-pong. No "let me describe what to build."

canvas · palette-generator.html
agent-authored HTML rendering on the canvas — a palette generator mini-app
02 Agent · Terminal

See the CLI session, live.

climax attaches to the spawned agent's pty and streams it to a full xterm.js terminal in the browser. You see exactly what the agent sees — its prompt, its output, its thinking — without leaving the tab.

Because it's a real pty (not scraped logs), you can also type into it, resize it, and interrupt with Ctrl-C. Every agent tab has one.

pty · claude · agent-a1b2
live pty terminal in climax showing a running Claude Code session — tabs, thinking indicator, tool calls
03 Agent · BYO

Uses the agents you already have.

No lock-in. climax detects the coding CLIs already on your $PATH and can launch any of them with an ephemeral MCP config injected — no manual claude mcp add, no wiring per agent, no config drift.

Click + agent, pick from the presets you have installed, and it's running with climax's tools available on the first turn. Missing one? climax's SCAN modal shows the install command inline.

Claude Code claude
Codex codex
Gemini CLI gemini
Aider aider
opencode opencode
Cursor CLI cursor

$ One line, no config.

Installs into a dedicated venv at ~/.climax and drops a launcher on your PATH. Re-run to upgrade. No global Python pollution.

Or if you prefer: pip install --pre python-climax

~/climax — zsh

Everything else

04Two-way events
Canvas posts events back via postMessage. Click a button and the agent picks it up in a single wait() call.
05Snapshots
Save any canvas state, restore with one click. Iterate on interfaces without losing prior versions.
06Loopback only
Serves on 127.0.0.1:8011. Nothing leaves your box. Hosted UI talks to it over CORS + PNA — no tunneling, no proxying, no cloud round-trip.
07Hosted or local
Use the web UI at climax.com.mx (it talks to your local backend via CORS + PNA) or open the backend's own UI at 127.0.0.1:8011. Same engine.
08Themes
Midnight, Noir, Nord, Latte, Solarized. Pick your poison. This landing page mirrors midnight.
09MIT, open source
No accounts. No telemetry off-box. Fork it, hack it, ship your own.

>_ Quickstart

  1. Install
    curl -fsSL https://climax.com.mx/install.sh | sh
  2. Start it
    climax

    Serves the UI at http://127.0.0.1:8011.

  3. Open a UI

    Either the local one it printed, or the web UI at climax.com.mx/app — both talk to the same backend.

  4. Launch an agent

    Click + agent, pick a preset (Claude Code, codex, gemini, aider…). The backend spawns it with an ephemeral MCP config — nothing to wire up.

  5. Ask it to build something

    The agent talks back through chat, and renders live UI on the canvas. Try: "render a color palette generator on the canvas and let me shuffle it."

>_ MCP tools your agent gets

toolwhat it does
page_set(html)Replace the canvas with new HTML.
page_append(html)Append an HTML fragment.
notify(msg, level)Corner toast — info / success / warn.
chat_say(msg)Send an assistant bubble to the chat panel.
wait(timeout?)Block until the user chats or the canvas emits an event.
snapshot_*Save, list, restore, patch canvas snapshots.
telemetry_recentRecent backend events for debugging.