Deployment Model
Radish supports more than one deployment and operating model.
Local / Repository-Centric Use
At the simplest level, Radish CLI is used directly inside an application repository.
In this model:
- blueprints live in the repo
- generated architecture lives in the repo
- developers work locally
- standard Git workflows apply
Hub-Orchestrated Use
Radish Hub can manage applications and blueprints at a higher level.
In this model, Hub provides:
- blueprint organization
- app-level orchestration
- generation history
- deployment coordination
- telemetry collection and historical dashboards
Cloud-Managed Use
Radish Cloud adds a hosted management layer on top of hubs and environments.
A team may use:
- a single hosted hub
- multiple hubs
- self-hosted hubs registered to cloud management
- separate hubs for staging and production
- one hub with multiple app environments
Generated Deployment Artifacts
Every app created with radish create app includes production-ready deployment files:
Dockerfile
- Base image: Debian slim (not Alpine) for native module compatibility
- Multi-stage build: Dependencies installed first, then source copied (layer caching)
- Healthcheck:
node -e "fetch('http://localhost:3000/api/health')..."(always available, no wget needed) - Non-root user: Runs as
nodeuser
docker-compose.yml
- Uses
expose(notports) — Traefik or a reverse proxy handles external routing pull_policy: always— ensures latest image on redeploy- Registry image reference with
IMAGE_TAGvariable - Numeric
BODY_SIZE_LIMIT(bytes, not string) - Node healthcheck matching the Dockerfile pattern
.gitlab-ci.yml
- Uses built-in
CI_REGISTRY,CI_REGISTRY_USER,CI_REGISTRY_PASSWORDvariables (zero config) - Kaniko build on tag push (e.g.,
v0.1.0) - Triggers deployment via
POST /api/v1/deployto Coolify - Response capture for CI logs
Deployment Pipeline
git tag v0.1.0 → git push --tags
→ GitLab CI: Kaniko builds Docker image
→ Pushes to registry (registry.mini1.abeedoo.com)
→ POST /api/v1/deploy triggers Coolify
→ Coolify pulls image, starts container
→ Traefik routes traffic to new container
→ /api/health confirms readiness
Provisioning with radish deploy init
The deploy init command provisions apps on Coolify:
# One-time: configure your Coolify instance
cfy setup
# Per-project: provision the app
radish deploy init
This creates a Docker image app on Coolify, sets environment variables, configures health checks, and saves the target config to .radish.deploy.json.
Prerequisites: cfy CLI (npm install -g @abeedoo/cfy)
See the CLI Reference for full options.
Portability
A core requirement of the platform is portability.
Teams should be able to:
- take the repository
- keep the blueprints
- keep the generated architecture
- continue using Radish CLI
- or take full ownership without the rest of the platform