listmonk
App-catalog entry (candidate). Served verbatim from the synced projection of sax3l/siax-app-catalog@ff7719df3a4d — API0 never re-qualifies an entry.
- App ID
- app_listmonk
- Channel
- candidatecapped from tested
- License
- AGPL-3.0
- License gate
- gateOk: false, swept 2026-09-22T14:30:17.148Z over 0 files
- Build digest
- sha256:179d00d9553c371b6fe88c9b145095d651e275bdd66db46b2e0b79daff316b6f
- Attestation
- none — the channel never exceeds candidate without one
- Capped
- capped from tested: license-gate violation: cannot-verify:no-license-file-at-root:/home/simon/Documents/siax-app-catalog/apps/listmonk
- Resource floor
- 1 vCPU · 1 GB RAM · 10 GB disk
- Support boundary
- —
- UI integration
- —
- Capabilities
- email-marketing
- Known limitations
- OIDC-to-Zitadel wiring not tested against a live Zitadel org (isolated-sandbox constraint) — local session-cookie auth WAS proven for real.
- listmonk publishes no official minimum resource footprint; the resourceModel above is VIBE's own conservative estimate, not an upstream number.
- Rollback correctness for THIS migration (v6.2.0 -> v6.1.0) happened to be forgiving even without a full restore (see lifecycle.rollback note) — this adapter does not rely on that being true for every future listmonk release, and neither should a caller.
- Import was only tested subscriber-CSV + list JSON; campaigns/templates/media are exported by exportData() only as row counts in the manifest, not round-tripped through import (listmonk's own import API is subscriber-only; campaigns/templates have no equivalent bulk-import endpoint).
- Multi-replica / horizontal scaling not tested — this pass ran exactly one app container per instance, matching listmonk's own official docker-compose.yml.
- H0ST's real Docker adapter (h0st/src/integrations/docker-client.ts) cannot run this app as-is — it has no env/port/volume/network support. This catalog entry's lifecycle was proven against a NEW, more capable orchestrator built for this pass (vibe/src/adapters/docker/docker-orchestrator.ts), not H0ST's adapter. See that module's header for the full reasoning; lifting it into H0ST once a second app needs it is a documented next step, not done here.
- JSON
- /v1/api0/app-catalog/app_listmonk