Skip to content

publish primitive: agent-built internal web apps with immutable versions and rollback #581

Description

@iret77

Origin

Competitive analysis of yc-software/qm (2026-08-01).

Concept

qm exposes a single core primitive publish({dir, entrypoint, name}) that turns a directory in the agent's workspace into a running internal web app:

  • Every publish is an immutable version; a stable link serves the current one; rollbackTo: N is a pointer flip
  • Durable app state only under $DATA_DIR (SQLite at a fixed path, replicated where the backend supports it)
  • Sharing per scope grant (read = use, write = redeploy/rollback); apps are served from a dedicated apps domain, never from the admin/portal origin
  • An edit widget is injected into published apps: a bubble that opens the authoring UI in an iframe and polls a version endpoint to prompt "App updated — reload"
  • Provider abstraction with Docker and AWS implementations; deploy history reconciled via git bundles
  • The seed skill teaches the agent to verify the app actually runs (curl it) before calling it done, and explicitly forbids passing off a file as a running app

Why adopt

"Agent builds an internal tool and publishes it to the right people" is a killer demo and a genuine daily-work feature. omadia's canvas covers ephemeral/composed UI; publish covers the complementary case of durable, shareable micro-apps. The immutable-versions + pointer-rollback + edit-widget loop is simple and safe enough to adopt wholesale.

Reference (qm source)

  • src/tools/primitives.ts (publish), src/deploy/deploy-provider.ts, docker-deploy-provider.ts, aws-deploy-provider.ts, deploy-git-store.ts, edit-widget.ts
  • skills-seed/publish/SKILL.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfrom-qmConcept inspired by yc-software/qm (YC competitive analysis)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions