-
Notifications
You must be signed in to change notification settings - Fork 15
Description
Problem Statement
Less technical users (vibe coders) who clone a swamp repo currently need to install Deno, swamp, and understand the CLI to get an app running. The onboarding friction is too high for people who just want to run the thing.
Extension models can define apps (web servers, daemons, etc.), but users still need to understand the implicit things swamp does inside the container — entrypoints, port mapping, process lifecycle. Swamp should be able to act as a supervisor or entrypoint hook for these apps, so users never need to learn about any of that to work locally.
Proposed Solution
Support a single command like swamp <my-app> run that:
- Acts as an app supervisor/entrypoint — if an extension model defines a long-running app (e.g. a web server), swamp manages the container lifecycle, entrypoint, port forwarding, and health checks transparently.
- Works from inside a container — the onboarding flow becomes:
- Clone the repo
swamp hello-app run
This would require:
- A model-level declaration that a method is a long-running app (not just a batch task), so swamp can supervise it — handling entrypoint, restart policy, signal forwarding, and graceful shutdown
- A shorthand
swamp <name> runsyntax that starts the model's primary method with appropriate supervision - Port forwarding and volume mounting handled by convention or config in
.swamp.yaml
Alternatives Considered
- Require users to tell swamp to use Deno inside containers (current state, too much implicit knowledge required)
- Providing a shell script wrapper per-repo (works but not standardized, every repo reinvents it)
- Using devcontainers (heavier weight, IDE-specific)
Summary
This feature would let swamp act as both a supervisor and containerized entrypoint for app-type extension models. Changes needed:
- A model-level way to declare "this method is a long-running app" so swamp can supervise it (entrypoint, signals, restarts)
- A convenience command that resolves a model name and runs its primary method with supervision
- Convention-based port forwarding and volume config in
.swamp.yaml - Documentation for the "clone and run" workflow targeting less technical users