Molecule AI workspace runtime — shared infrastructure for all agent adapters
Project description
molecule-ai-workspace-runtime
Shared workspace runtime for Molecule AI
agent adapters. Installed by every workspace template image
(workspace-template-claude-code, -langgraph, -hermes, etc.) to provide
A2A delegation, heartbeat, memory, plugin loading, and skill management.
This package is published from the molecule-core monorepo workspace/
directory by the publish-runtime GitHub Actions workflow on every
runtime-v* tag push. Do not edit this package directly — edit
workspace/ in the monorepo.
External-runtime MCP server (molecule-mcp)
Operators running an agent outside the platform's container fleet (any runtime that supports MCP stdio — Claude Code, hermes, codex, etc.) can install this wheel and run the universal MCP server locally.
Requirements
- Python ≥3.11. The wheel sets
requires-python = ">=3.11". On older interpreterspip installreturns the crypticCould not find a version that satisfies the requirement— that message is pip filtering this wheel out, NOT the package missing from PyPI. Upgrade withbrew install python@3.12/apt install python3.12/pyenv install 3.12first. pipxrecommended overpip.pipx installputsmolecule-mcpon PATH automatically and isolates the runtime's deps from your system Python. Plainpip install --userworks but the binary lands in~/.local/bin(Linux) or~/Library/Python/3.X/bin(macOS) which is often not on PATH on a fresh shell —claude mcp add molecule -- molecule-mcpthen fails with "command not found" at first use.
Install
# Recommended:
pipx install molecule-ai-workspace-runtime
# Alternative (manage PATH yourself):
pip install --user molecule-ai-workspace-runtime
Run
WORKSPACE_ID=<uuid> \
PLATFORM_URL=https://<tenant>.staging.moleculesai.app \
MOLECULE_WORKSPACE_TOKEN=<bearer> \
molecule-mcp
That exposes the same 8 platform tools (delegate_task, list_peers,
send_message_to_user, commit_memory, etc.) that container-bound
runtimes already get via the workspace's auto-spawned MCP. Register
the binary in your agent's MCP config (e.g. Claude Code's
claude mcp add molecule -- molecule-mcp with the env above).
Keeping the token out of shell history
Inline MOLECULE_WORKSPACE_TOKEN=<bearer> ends up in ~/.zsh_history
and (when registered via claude mcp add) plaintext in
~/.claude.json. To avoid that, write the token to a 0600 file and
point MOLECULE_WORKSPACE_TOKEN_FILE at it:
umask 077
printf '%s' "<bearer>" > ~/.config/molecule/token
WORKSPACE_ID=<uuid> \
PLATFORM_URL=https://<tenant>.staging.moleculesai.app \
MOLECULE_WORKSPACE_TOKEN_FILE=$HOME/.config/molecule/token \
molecule-mcp
Token resolution order: MOLECULE_WORKSPACE_TOKEN (inline env) →
MOLECULE_WORKSPACE_TOKEN_FILE (path) → ${CONFIGS_DIR}/.auth_token
(in-container default).
The token comes from the canvas → Tokens tab. Restarting an external workspace from the canvas no longer revokes the token (PR #2412), so operator tokens persist across status nudges.
Push vs poll delivery (Claude Code specifics)
By default the inbox runs in poll mode — every turn the agent
calls wait_for_message, which blocks up to ~60s on
/activity?since_id=…. Real-time push delivery is also supported,
but on Claude Code it requires THREE conditions, ALL of which must
hold:
- The MCP server declares
experimental.claude/channel— this wheel does (see_build_initialize_result). Nothing for you to do. - Claude Code installs the server as a marketplace plugin — a
plain
claude mcp add molecule -- molecule-mcpproduces a non-plugin-sourced server, which Claude Code rejects withchannel_enable requires a marketplace plugin. Until the officialmoleculesai/claude-code-pluginmarketplace lands (tracking #2936), operators who want push must scaffold their own local marketplace under~/.claude/marketplaces/molecule-local/containing amarketplace.json+plugin.jsonthat points at this wheel. - Claude Code is launched with the dev-channels flag — pass
--dangerously-load-development-channels plugin:molecule@<marketplace>on theclaudeinvocation. Without this flag the channel capability is silently ignored.
Symptom of any condition failing: messages arrive but only via the
poll path (every ~1–60s), not real-time. There's currently no
diagnostic surfaced — molecule-mcp doctor (tracking
#2937) is
planned.
If you don't need real-time push, the default poll path works
universally with no extra setup; both modes converge on the same
inbox_pop ack so messages never duplicate.
See docs/workspace-runtime-package.md
for the publish flow and architecture.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file molecule_ai_workspace_runtime-0.1.131.tar.gz.
File metadata
- Download URL: molecule_ai_workspace_runtime-0.1.131.tar.gz
- Upload date:
- Size: 296.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72c879eff37a5a4f32d9bd27a62b0a232849c74358c4350e1d32bec99b717baf
|
|
| MD5 |
37eddd89c7d48717879c88b8e9f146e6
|
|
| BLAKE2b-256 |
dc9cd915b6d5df7e8dcbaf2f247a0844bd8a2ff4b69d42bca5947cf97d54c7a4
|
File details
Details for the file molecule_ai_workspace_runtime-0.1.131-py3-none-any.whl.
File metadata
- Download URL: molecule_ai_workspace_runtime-0.1.131-py3-none-any.whl
- Upload date:
- Size: 349.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be0db852bd12e5328e515bfa622227f9e687943fa4ea385bf6b43dda6656d146
|
|
| MD5 |
0e67d89951196db9b538a6d2acd8c37a
|
|
| BLAKE2b-256 |
413e80c2868b99ddd55c29b30349bd6b10969684f0b30e3d527d208872f534e4
|