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…).

┌───────────────────────────────────────────────┐
│  http://127.0.0.1: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 (pre-release for now — remove --pre once 0.1.0 ships):

pip install --pre python-climax

The PyPI name is python-climax because plain climax was already taken. The command and import name are still climax.

Then start it:

climax
# → http://127.0.0.1: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.

Optional: HTTPS via local.climax.com.mx

By default climax runs on plain HTTP at 127.0.0.1, which is fine for opening the UI directly. If you want to talk to climax from a page hosted on https://climax.com.mx (or any other HTTPS origin), browsers block the mixed-content request. For that case climax can serve HTTPS on a loopback DNS name — local.climax.com.mx — that resolves to 127.0.0.1 with a real Let's Encrypt certificate:

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

--tls uses the bundled cert (if the release pipeline dropped one into climax/certs/) or you can pass --cert / --key explicitly. Traffic still never leaves your machine.

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.0rc3.tar.gz (43.3 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.0rc3-py3-none-any.whl (47.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python_climax-0.1.0rc3.tar.gz
  • Upload date:
  • Size: 43.3 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.0rc3.tar.gz
Algorithm Hash digest
SHA256 9c5b7e529acd28c7f12a683f15f86ad00c209b18f560d1dea85ef2bda9e3cc57
MD5 b62a32b492e47e00e93ada4848d5d89d
BLAKE2b-256 3b8de7adf9668ad3228b941fcea8cc1f45f1e0fea12829637ed351a57ba3f3fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for python_climax-0.1.0rc3-py3-none-any.whl
Algorithm Hash digest
SHA256 75a390db40cc62376b3e00ff95e7fe4aa15db92d41ce58baeb8d6381c41e655b
MD5 f81d411f13595e74e6f1ce3303157f44
BLAKE2b-256 955458684f3588613c3fcc896e57d49ac2aef3bff868c757ddbd8a7c8a1acf95

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