* PMM: update ecosystem-watch — add LangGraph PR verification deferral note - Add 2026-04-22 entry: GH API 401 for external repos, LangGraph PRs #6645/#7113/#7205 still VERIFY. A2A blog uses PR#6645 as governance-gap evidence — claim is stale if PRs merged. - Update maintenance footer date to 2026-04-22 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * PMM: add Cloudflare Artifacts positioning brief Source: PR #641, merged 2026-04-17. Buyer: Platform engineers + enterprise security/compliance. Headline: 'Give your agents a Git history — without touching a terminal.' Objections covered: 'Why not GitHub?' + 'Cloudflare Artifacts is beta.' Blocking: Social Media Brand launch thread. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * PMM: update EC2 SSH launch brief — social copy APPROVED, TTS audio file added as blocker Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * PMM: update ecosystem-watch — verify LangGraph PRs still OPEN, log PRs #1702/#1730/#1731 Confirmed via gh CLI (GH_TOKEN restored): langchain-ai/langgraph PRs #6645, #7113, #7205 still OPEN as of 2026-04-23T17:38Z. A2A live-today positioning vs LangGraph in-progress remains accurate. Logged PR #1731 (sweepPhantomBusy), PR #1730 (45-min gh-token refresh daemon fixing 60-min 401 in long sessions), and PR #1702 (SSH-backed file writes for SaaS — P1 regression fix). Blog post for #1702 at docs/marketing/blog/2026-04-23-saas-file-api-fix.md. Co-Authored-By: Claude PMM <noreply@anthropic.com> * docs(marketing): add PR #1702 release note + PR #1686 positioning brief PR #1702 (SSH-backed file writes for SaaS): blog post covers fix, compute model detection, EIC-based remote write path. Ships same-day after merge. PR #1686 (Tool Trace + Platform Instructions): full positioning brief — buyer matrix, value props, competitive angle vs Langfuse/Helicone/OPA, objection handlers, cannibalization assessment (LOW). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(mmm): add Phase 34 positioning one-pager + messaging matrix - phase34-positioning.md: one-pager with positioning statement, audience matrix, problem/solution, competitive differentiators, and proof points for press kit use - phase34-messaging-matrix.md: 3 candidate taglines (production-grade, observability, aspirational) + full 4-feature messaging matrix (Partner API Keys, Tool Trace, Platform Instructions, SaaS Fed v2) - SaaS Federation v2 flagged as content gap — no PM brief exists; community copy blocked pending PM confirmation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Molecule AI PMM <pmm@agents.moleculesai.app> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2.1 KiB
SaaS Workspaces Now Support Full File API — SSH-Backed Writes Land Today
Status: Live — merged 2026-04-23 PR: #1702
One gap was blocking SaaS customers from doing something fundamental: writing files programmatically.
When you called PUT /workspaces/:id/files/config.yaml from a SaaS (EC2-backed) workspace, you got a 500. failed to write file: docker not available. The file API existed, but only for self-hosted Docker deployments. SaaS workspaces — the ones running on real EC2 VMs — had no path to write.
That changes today.
What Was Wrong
Molecule AI supports two workspace compute models: self-hosted (Docker containers) and SaaS (EC2 VMs). The file write API was built for the Docker path — it used docker cp under the hood. SaaS workspaces don't have Docker. There was no fallback, so every API write failed silently.
This wasn't a permissions issue or a timeout. It was a missing code path that went undetected until a paying customer's workflow hit it directly.
What's Fixed
The file write API now detects which compute model is in use and routes accordingly:
- Self-hosted (Docker): Unchanged —
docker cppath still used - SaaS (EC2): Routes through EC2 Instance Connect (EIC) — the same ephemeral-keypair SSH flow that powers the Terminal tab in the Canvas
The remote write uses install -m 0644 /dev/stdin <path> for an atomic write that creates missing parent directories. SaaS customers now get the same file API surface as self-hosted deployments.
Why It Matters
Your file API workflow shouldn't break depending on where Molecule AI runs. Whether you're on self-hosted Docker or Molecule's SaaS, WriteFile and ReplaceFiles should work. They do now.
Try it:
curl -X PUT https://your-workspace.moleculesai.app/workspaces/:id/files/config.yaml \
-H "Authorization: Bearer $ORG_API_KEY" \
-d "model: claude-sonnet-4\ntemperature: 0.7"
File API. Now everywhere Molecule AI runs.
Found a bug or have a feature request? Open an issue at github.com/Molecule-AI/molecule-core.