Shared Adobe desktop communication runtime for Python tools and DCC MCP adapters. Python talks to a local Rust broker; Adobe applications run thin UXP or CEP/ExtendScript bridges.
adobepy is intended to be the common Adobe host layer for projects such as
dcc-mcp-photoshop and future
Adobe adapters. The public Python surface mirrors Adobe's JavaScript DOM where
possible, while adding Pythonic aliases for agent and script ergonomics.
Implemented pieces:
- Rust
adobepyCLI withbroker,doctor,install-bridge, andrepl. - Local JSON-RPC broker with per-session token, target, timeout, and capability gates.
- Authenticated, typed broker/host/bridge runtime identity attestation for exact-instance checks by DCC MCP adapters.
- Bounded Photoshop UXP bootstrap with one-time exact-instance binding and a typed verification continuation; no arbitrary plug-in, command, script, or UI fallback.
- Bounded Illustrator CEP bootstrap that binds the receipted bridge and selected product process to a one-time claim and fixed adapter verification command.
- Python SDK under
adobe.core,adobe.raw,adobe.photoshop,adobe.indesign,adobe.premiere,adobe.after_effects, andadobe.illustrator. - Structured, non-eval access to the complete installed InDesign, Premiere, After Effects, and Illustrator object models.
- Optional DCC MCP result helpers under
adobe.dcc_mcpfor adapter skill code. - UXP bridge templates for Photoshop, InDesign, and Premiere that dispatch to host APIs and broker raw JavaScript escape hatches.
- CEP bridge templates for After Effects and Illustrator.
- IR validation, proxy-aware
.pyistub generation, and stub/runtime drift checks. vx just packagedistribution workflow.
Validate everything:
npm install
npm run test:allBridge bundles under bridges/**/dist are generated artifacts and are not
tracked. npm run test:all builds them for local verification; release CI
rebuilds them before packaging. Run npm run uxp:build and npm run cep:build
before using install-bridge directly from a source checkout.
Installation, standalone use, broker startup, bridge loading, and
troubleshooting are documented in install.md.
The full test suite type-checks bridge code, builds and exercises UXP/CEP bundles with mocked host runtimes, validates IR contracts, checks Python coverage, and runs Rust workspace tests.
Python support starts at 3.8. The current SDK wheel is pure Python; any future
native Python extension must publish cp38-abi3-* wheels rather than
per-minor-version wheels.
Build a redistributable Windows package:
vx just packageThe archive is written to dist/adobepy-0.1.0-windows-x64.zip with a sibling
SHA256 file. Usage and packaging notes are in docs/usage.md and
docs/distribution-contract.md. Architecture boundaries and Adobe API source tracking
are documented in docs/architecture.md, docs/api-sources.md, and
docs/dcc-mcp-integration.md.
Python facade example:
from adobe.photoshop import Photoshop
app = Photoshop()
for layer in app.activeLayers:
print(layer.name)
doc = app.activeDocument
doc.selection.select_rectangle({"top": 10, "left": 10, "bottom": 256, "right": 256})
for channel in doc.channels:
print(channel.name)
text = app.activeText
if text:
text.set_contents("Hello from Python")
text.character_style.update(size=36, tracking=20)
text.paragraph_style.update(justification="center")
layer = app.activeLayer
if layer:
layer.filters.apply_gaussian_blur(2)
layer.smart_object.convert_to_smart_object()
doc.exports.jpg_high("C:/renders/demo.jpg")