molecule-core/docs/architecture
claude-ceo-assistant (Claude Opus 4.7 on Hongming's MacBook) 16868c4ec1 fix(plugins): SaaS (EC2-per-workspace) install/uninstall via EIC SSH
Closes the 🔴 docker-only row in docs/architecture/backends.md. Plugin
install on every SaaS tenant currently 503s with "workspace container
not running" because the handler is hardcoded to Docker exec but SaaS
workspaces live on per-workspace EC2s. Caught on hongming.moleculesai.app
when canvas POST /workspaces/<id>/plugins surfaced the error.

Mirrors the Files API PR #1702 pattern: dispatch on workspaces.instance_id
in deliverToContainer (and Uninstall). When set, push the staged plugin
tarball to the EC2 over the existing withEICTunnel primitive
(template_files_eic.go) and unpack into the runtime's bind-mounted config
dir (/configs for claude-code, /home/ubuntu/.hermes for hermes — see
workspaceFilePathPrefix). chown 1000:1000 to match the docker path's
agent-uid contract; restart via the existing dispatcher.

Direct host write rather than docker-cp via SSH because the runtime's
config dir is already bind-mounted into the workspace container — the
runtime sees the files on next start with no additional plumbing.

Adds InstanceIDLookup (parallel to RuntimeLookup) so unit tests don't
need a DB; production wires it in router.go like templates.go does.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:42:51 -07:00
..
architecture.md
backends.md fix(plugins): SaaS (EC2-per-workspace) install/uninstall via EIC SSH 2026-05-07 15:42:51 -07:00
canary-release.md docs(internal): bulk-sed molecule-core .md docs → Gitea (#37 final molecule-core sweep) 2026-05-07 01:27:50 -07:00
database-schema.md
event-log.md
memory.md initial commit — Molecule AI platform 2026-04-13 11:55:37 -07:00
molecule-technical-doc.md docs(internal): bulk-sed molecule-core .md docs → Gitea (#37 final molecule-core sweep) 2026-05-07 01:27:50 -07:00
org-api-keys.md
overview.md
partner-api-keys.md
provisioner.md
saas-prod-migration-2026-04-19.md
secrets-key-custody.md docs(internal): bulk-sed molecule-core .md docs → Gitea (#37 final molecule-core sweep) 2026-05-07 01:27:50 -07:00
staging-environment.md
technology-choices.md
tenant-image-upgrades.md
wildcard-dns-proxy.md
workspace-tiers.md