Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

climax

A local browser + MCP surface for coding agents. Chat, live canvas, and multi-agent tabs — all running on your machine, orchestrated by any MCP- speaking CLI (Claude Code, codex, gemini, aider, cursor-agent…).

┌───────────────────────────────────────────────┐
│  https://local.climax.com.mx:8011             │
│  ┌─────────────────────────────────────────┐  │
│  │                                         │  │
│  │      CANVAS  (sandboxed iframe —        │  │
│  │      agent-authored HTML, live)         │  │
│  │                                         │  │
│  └─────────────────────────────────────────┘  │
│  ┌─────────────────────────────────────────┐  │
│  │  Chat  ●  Canvas · Chat                 │  │
│  │  ...conversation with your agent...     │  │
│  │  [ type here                          ] │  │
│  └─────────────────────────────────────────┘  │
└───────────────────────────────────────────────┘
        ↑                        ↑
    WebSocket                  stdio
        ↓                        ↓
    backend  ←──── HTTP ──── mcp_server

Install

One line:

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

Or with pip:

pip install climax

Then start it:

climax
# → https://local.climax.com.mx:8011

Open the URL. Click + agent in the browser to launch a coding agent — the backend spawns it with an ephemeral MCP config, so nothing to wire up by hand.

Why local.climax.com.mx?

Modern browsers won't let a page at https://climax.com.mx talk to http://localhost. So climax runs on the loopback address using a real Let's Encrypt certificate for local.climax.com.mx — a public DNS name that always resolves to 127.0.0.1. Traffic never leaves your machine, but the browser sees a valid HTTPS origin.

MCP tools exposed to the agent

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

The canvas iframe can talk back to the agent:

window.parent.postMessage({
  type: 'climax.event',
  name: 'submit',
  data: { /* whatever */ },
}, '*');

wait returns {stream:'canvas', name, data, ts} for canvas events and {stream:'chat', msg} for typed chat. One tool, both surfaces.

Multi-agent

Every MCP client identifies itself with an X-Climax-Agent header. The browser shows one tab per agent — canvas, chat, and pty terminal each. Click + agent to launch a new one from a preset (see climax/agents.toml). Bring-your-own preset via ~/.climax/agents.toml.

Development

git clone https://github.com/sheunaluko/climax
cd climax
pip install -e ".[dev]"
climax --host 127.0.0.1 --port 8011

Set PYTHON=/path/to/python ./start.sh for the convenience launcher (kills a stale instance on the port first).

Design notes

  • Iframe is sandbox="allow-scripts allow-forms allow-popups" — no parent-frame access, no cookies. Safe for LLM-authored HTML.
  • Backend state is per-agent in-memory; snapshots persist to a local SQLite file for offline reference.
  • wait races both queues so agents never miss input on the wrong stream.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_climax-0.1.0rc1.tar.gz (41.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_climax-0.1.0rc1-py3-none-any.whl (45.7 kB view details)

Uploaded Python 3

File details

Details for the file python_climax-0.1.0rc1.tar.gz.

File metadata

  • Download URL: python_climax-0.1.0rc1.tar.gz
  • Upload date:
  • Size: 41.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for python_climax-0.1.0rc1.tar.gz
Algorithm Hash digest
SHA256 4ad5153351f79e31f28a6228744261aaa570af90360b275660846cefb7dfefa5
MD5 38270894bd965d6811fbc55f52b64b2b
BLAKE2b-256 be13c4a6c660adbddbda579f711e4e25c7811245272804eebf548289f6ed3f54

See more details on using hashes here.

File details

Details for the file python_climax-0.1.0rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for python_climax-0.1.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 25a5c5506b9c8c50b983de2c80a49040ba09687657d2485b79b4d876bf711e22
MD5 83c27b75af5c75cabacf0d6541749117
BLAKE2b-256 0e70c0a9de98dfbcf23c91c40255995ed3f76df76f828bd2bf2fb88ed14219dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page