forked from molecule-ai/molecule-core
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> |
||
|---|---|---|
| .. | ||
| architecture.md | ||
| backends.md | ||
| canary-release.md | ||
| database-schema.md | ||
| event-log.md | ||
| memory.md | ||
| molecule-technical-doc.md | ||
| org-api-keys.md | ||
| overview.md | ||
| partner-api-keys.md | ||
| provisioner.md | ||
| saas-prod-migration-2026-04-19.md | ||
| secrets-key-custody.md | ||
| staging-environment.md | ||
| technology-choices.md | ||
| tenant-image-upgrades.md | ||
| wildcard-dns-proxy.md | ||
| workspace-tiers.md | ||