Repository navigation
Prior Art
Krasnikov Maksim edited this page Oct 22, 2026
·
1 revision
The point of this section is to speed up the plan with real projects: take code or approach, integrate a component as is, or use as a UI reference.
| Project | What is good | What Maurice takes |
|---|---|---|
| Coolify (PHP/Laravel, Docker) | Most complete domain model: projects, environments, services, domains, S3 backups, notifications, service catalogue, "magic" variables linking services | Entity structure and UX of key screens; env references; catalogue templates (compose templates converted to Quadlet) |
| Dokploy (TypeScript, Swarm, Traefik) | Clean TS stack (Next.js, tRPC, Drizzle), readable code, DB backups to S3, templates, monitoring | If the control plane is TS — API/UI structure reference; backup and schedule logic |
| Komodo (Rust + TS) | Multi-server "core + periphery agent", single API/TS client, builds and deploys | Control plane ↔ agent model; message format between them |
| ZaneOps (Python, Swarm, Caddy) | Caddy as a managed proxy via admin API, simple service model | Caddy config generation and full rebuild on restart |
| Dokku (shell, Docker) | git push → deploy, buildpacks, minimalism, plugins | Plugin system idea for integrations; buildpacks as a build option |
| Rivetr (Rust) | Single binary, low footprint, webhook deploys, runtime abstraction Docker/Podman | Lightweight control plane example; GitHub/GitLab/Gitea webhook handling |
| Project | What is good | What Maurice takes |
|---|---|---|
| Rookery (Go) | Control plane + agent per rootless scope; units on disk as source of truth; import of podman run / compose / running containers into Quadlet with warnings |
Agent architecture; compose → Quadlet converter (key for migrating off Coolify) |
| quadletman | Web UI for rootless Quadlet with OS-user isolation | Working with several system users from one process |
| quadlet_manager (Go + React) | Unit management via systemd D-Bus, xterm.js web terminal, logs | D-Bus layer instead of shelling out to systemctl; web terminal |
| quadman (TUI) | Acting as other users via sudoers with an explicit command list; events timeline; templated web@ units |
Minimal sudoers for the agent; merged podman + systemd event stream |
| podlet |
podman run / compose / k8s YAML → Quadlet converter |
Integrate as a library or CLI in the validator and importer |
| cockpit-podman | Reference use of the libpod API from the browser | API call reference for containers, logs, stats |
| Task | Component | Notes |
|---|---|---|
| Proxy and TLS | Caddy (admin API, on-demand TLS, DNS-01 plugins) | Not rewritten; the panel generates JSON config |
| L4 and protection | HAProxy | Added when needed; config generated |
| Registry | zot / distribution | Ready OCI registries, digest-addressed |
| Backups | restic + rclone; optionally Backrest (web UI over restic) | Schedule and retention; Backrest as UI/API reference |
| DB dumps |
pg_dump / pgBackRest, clickhouse-backup, dragonfly SAVE
|
Wrappers in catalogue templates |
| Logs | journald → Vector/Alloy → VictoriaLogs | Single-binary store, label search; see Telemetry |
| Metrics | node_exporter, cAdvisor (Podman) or systemd-exporter → VictoriaMetrics | PromQL-compatible, charts in the Maurice UI; Grafana optional |
| Notifications | Apprise or direct Telegram Bot API | Apprise gives dozens of channels at once |
| Tunnels | cloudflared + Cloudflare API | Routes via API, token held by the panel only |
| LLM adapter | Vercel AI SDK (TS) / LiteLLM (proxy) | Any provider via the user's key |
| MCP | Official MCP SDKs (TS/Go) | Server over the panel API |
| STT for Telegram | Whisper (faster-whisper locally) or a provider STT | Voice to text |
| Dev environments | toolbx / distrobox, code-server, Coder (reference) | See Remote Development |
| Agent memory | Entire CLI | See Agent Memory |
Conclusion. Only the control plane (data model, Quadlet generation, plan/apply, UI) and the agent are written from scratch. Everything else is integration or borrowing. This roughly halves the Alpha and MVP effort compared to a fully custom core.
Maurice PaaS · Apache 2.0 · Repository · Task board