Registry / http-networking / choreographer

choreographer

JSON →
library1.3.0pypypi✓ verified 28d ago

Choreographer is a Python library by Plotly that enables remote control of browsers, primarily for generating static images from browser-based charting tools, but also supports other use cases. It acts as a DevTools Protocol implementation for Chrome-ish browsers, leveraging the user's local Chrome binary. Currently at version 1.2.1, it is actively developed with recent updates in late 2025.

pip install choreographer
INSTALL
IMPORT
SIG · CHOREOGRAPHER
C
choreographer
http-networkingpythonv1.3.0
Install
2.3s avg
Import
365ms
Disk
18MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v1.3.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.370s · 19.5MB
glibc
py 3.10–3.95 runs
installs and imports cleanly · install 2.3s · import 0.360s · 20MB
18MB installed
● package 18MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Browser
✓ from choreographer import Browser
✗ import choreographer as choreo
BrowserSync
✓ from choreographer import BrowserSync
Tab
✓ from choreographer import Tab

This quickstart demonstrates how to launch a browser, create a new tab, navigate to a URL, and then close them using Choreographer with `asyncio`. It highlights the recommended asynchronous usage pattern. Ensure a Chrome-compatible browser (like Google Chrome or Microsoft Edge) is installed on your system for Choreographer to connect to.

import asyncio import choreographer as choreo async def main(): # Launch a headless browser (default is headless=True) # To see the browser, use headless=False. Ensure a Chrome-compatible browser is installed. try: browser = await choreo.Browser(headless=True) print(f"Browser launched: {browser.url}") # Create a new tab new_tab = await browser.new_tab() print(f"New tab created: {new_tab.url}") # Navigate to a URL await new_tab.navigate("https://www.google.com") print(f"Navigated to: {await new_tab.get_url()}") # Wait for a few seconds to observe (optional) await asyncio.sleep(3) # Close the tab and then the browser await new_tab.close() await browser.close() print("Browser and tab closed successfully.") except Exception as e: print(f"An error occurred: {e}") if __name__ == "__main__": asyncio.run(main())
Debug
Known issues
gotchaChoreographer is currently a work in progress and primarily supports Chrome-ish browsers. Support for other browsers is planned but not yet implemented.
fix
Ensure you have a Chrome-compatible browser installed (e.g., Google Chrome, Microsoft Edge) and target it for automation. Be aware that non-Chrome browsers may not work as expected.
affects: All versions
gotchaThe library strongly recommends using `async/await` for asynchronous operations. While synchronous functions exist, they are intended as building blocks and might not be as efficient or robust for complex scenarios.
fix
Adopt `async/await` patterns in your code for optimal performance and to leverage the full capabilities of the library.
affects: All versions
gotchaChoreographer interacts with the Chrome binary on the user's machine. This means you need a local installation of a compatible browser for the library to function.
fix
Verify that a Chrome-compatible browser is installed and accessible on the system where Choreographer is being run.
affects: All versions
Upgrade
Version history
1.3.0latest on PyPI · released Apr 28, 2026
Audit
Dependencies
logistrorequiredRequired for logging capabilities.
simplejsonrequiredRequired for JSON processing.
Agent activity
32 hits · last 30 days
node
30
OpenAI (training)
1
Resources
choreographer — pip install choreographer · libregistry