Skip to content
GitHub Actions edited this page Jan 30, 2026 · 3 revisions

nself v0.4.7 - Infrastructure Everywhere

Release Date: January 23, 2026 Status: Released


Overview

v0.4.7 "Infrastructure Everywhere" massively expands nself's infrastructure capabilities with:

  • 26 Cloud Providers - Up from 10, covering global infrastructure
  • Full Kubernetes Support - Native K8s deployment and management
  • Helm Chart Management - Generate, deploy, and manage Helm charts
  • Command Consolidation - Reduced top-level commands from 43 to ~30
  • Enhanced Deployment - Preview, canary, and blue-green strategies
  • Auto-Sync - Continuous file watching and synchronization

New Commands

nself cloud - Unified Cloud Infrastructure

Note: As of v0.9.6, this command has been renamed to nself provider. The nself cloud command is maintained as a legacy alias for backward compatibility.

Consolidates providers, provision, and servers into a single parent command:

# Provider management
nself cloud provider list              # List 26 supported providers
nself cloud provider init <provider>   # Configure credentials
nself cloud provider validate          # Validate configuration
nself cloud provider info <provider>   # Show provider details

# Server management
nself cloud server create <provider>   # Provision new server
nself cloud server destroy <server>    # Destroy server
nself cloud server list                # List all servers
nself cloud server status [server]     # Server health status
nself cloud server ssh <server>        # SSH to server
nself cloud server add <ip>            # Add existing server
nself cloud server remove <server>     # Remove from registry

# Cost management
nself cloud cost estimate <provider>   # Estimate monthly costs
nself cloud cost compare               # Compare all providers

# Quick deployment
nself cloud deploy quick               # Provision and deploy in one step
nself cloud deploy full                # Full production setup

nself service - Unified Service Management

Consolidates email, search, functions, mlflow, admin, and optional service management:

# General service operations
nself service list                     # List all optional services
nself service enable <service>         # Enable service
nself service disable <service>        # Disable service
nself service status [service]         # Service status
nself service restart <service>        # Restart service
nself service logs <service>           # View service logs

# Email service
nself service email test               # Send test email
nself service email inbox              # Open MailPit inbox
nself service email config             # Email configuration

# Search service
nself service search index             # Reindex all data
nself service search query <term>      # Run search query
nself service search stats             # Index statistics

# Serverless functions
nself service functions deploy         # Deploy all functions
nself service functions invoke <fn>    # Invoke function
nself service functions logs [fn]      # View function logs
nself service functions list           # List functions

# ML tracking
nself service mlflow ui                # Open MLflow UI
nself service mlflow experiments       # List experiments
nself service mlflow runs              # List runs
nself service mlflow artifacts         # Browse artifacts

# Object storage
nself service storage buckets          # List buckets
nself service storage upload           # Upload file
nself service storage download         # Download file
nself service storage presign          # Generate presigned URL

# Cache
nself service cache stats              # Redis statistics
nself service cache flush              # Flush cache
nself service cache keys               # List keys

nself k8s - Kubernetes Management

Full Kubernetes operations for deploying and managing nself in K8s:

# Initialization
nself k8s init                         # Initialize K8s configuration
nself k8s init --context <context>     # Use specific context

# Conversion
nself k8s convert                      # Convert compose to manifests
nself k8s convert --output ./k8s       # Custom output directory
nself k8s convert --namespace myapp    # Custom namespace

# Deployment
nself k8s apply                        # Apply manifests
nself k8s apply --dry-run              # Preview changes
nself k8s deploy                       # Full deployment workflow
nself k8s deploy --env staging         # Deploy to environment

# Operations
nself k8s status                       # Deployment status
nself k8s logs <service>               # Pod logs
nself k8s logs <service> -f            # Follow logs
nself k8s scale <service> <replicas>   # Scale deployment
nself k8s rollback <service>           # Rollback deployment
nself k8s delete                       # Delete deployment

# Cluster management
nself k8s cluster list                 # List available clusters
nself k8s cluster connect <name>       # Connect to cluster
nself k8s cluster info                 # Cluster information

# Namespace management
nself k8s namespace list               # List namespaces
nself k8s namespace create <name>      # Create namespace
nself k8s namespace delete <name>      # Delete namespace
nself k8s namespace switch <name>      # Switch active namespace

nself helm - Helm Chart Management

Generate and manage Helm charts for nself deployments:

# Initialization
nself helm init                        # Initialize Helm chart
nself helm init --from-compose         # Generate from docker-compose

# Chart generation
nself helm generate                    # Generate chart from config
nself helm generate --output ./charts  # Custom output

# Installation
nself helm install                     # Install to cluster
nself helm install --env staging       # Install to environment
nself helm upgrade                     # Upgrade release
nself helm rollback                    # Rollback release
nself helm uninstall                   # Remove release

# Management
nself helm list                        # List releases
nself helm status                      # Release status
nself helm values                      # Show/edit values
nself helm template                    # Render templates locally
nself helm package                     # Package chart

# Repository
nself helm repo add <url>              # Add repository
nself helm repo remove <name>          # Remove repository
nself helm repo update                 # Update repositories
nself helm repo list                   # List repositories

Enhanced Commands

nself deploy - Advanced Deployment Strategies

# Standard deployments
nself deploy staging                   # Deploy to staging
nself deploy production                # Deploy to production
nself deploy rollback                  # Rollback deployment

# Preview environments (NEW)
nself deploy preview                   # Create preview environment
nself deploy preview --branch feature  # Preview specific branch
nself deploy preview --ttl 24h         # Auto-cleanup after 24h
nself deploy preview list              # List previews
nself deploy preview destroy <id>      # Destroy preview

# Canary deployments (NEW)
nself deploy canary                    # Start canary (10% traffic)
nself deploy canary --percent 25       # Custom traffic percentage
nself deploy canary status             # Canary status
nself deploy canary promote            # Promote to 100%
nself deploy canary rollback           # Rollback canary

# Blue-green deployments (NEW)
nself deploy blue-green                # Deploy to inactive env
nself deploy blue-green status         # Show current active
nself deploy blue-green switch         # Switch traffic
nself deploy blue-green rollback       # Switch back

nself sync - Auto-Sync and File Watching

# Standard sync
nself sync db <env>                    # Sync database
nself sync files <env>                 # Sync files
nself sync config <env>                # Sync configuration
nself sync full <env>                  # Full sync

# Auto-sync (NEW)
nself sync auto                        # Enable auto-sync
nself sync auto --setup                # Configure as service
nself sync auto --stop                 # Stop auto-sync

# File watching (NEW)
nself sync watch                       # Watch for changes
nself sync watch --path src/           # Watch specific path
nself sync watch --exclude node_modules
nself sync watch --interval 2          # Polling interval

# Status
nself sync status                      # Sync status
nself sync history                     # Sync history

Supported Providers (26)

Major Cloud Providers

Provider Type K8s Support Region Coverage
AWS Enterprise EKS Global (25+ regions)
GCP Enterprise GKE Global (35+ regions)
Azure Enterprise AKS Global (60+ regions)
Oracle Enterprise OKE Global
IBM Enterprise IKS Global

VPS Providers

Provider Type K8s Support Region Coverage
DigitalOcean Developer DOKS 14 regions
Linode Developer LKE 11 regions
Vultr Developer VKE 25+ locations
Hetzner Budget - EU/US
OVH Budget - EU/Global
Scaleway EU-focused SKS EU
UpCloud Nordic - EU/US/Asia

Budget Providers

Provider Type Notes
Contabo Extreme value Best specs/price
Hostinger Beginner Easy UI
Kamatera Hourly billing Flexible
SSDNodes High specs NVMe storage
RackNerd Flash sales Best deals
BuyVM Storage VPS DDoS protection
Time4VPS EU budget Lithuanian

Asia-Pacific

Provider Type K8s Support
Alibaba China ACK
Tencent China TKE
Yandex Russia/CIS MKS

EU/Privacy-Focused

Provider Type Notes
Exoscale Swiss GDPR-compliant, SKS

Edge/Self-Hosted

Provider Type Notes
Raspberry Pi Edge IoT/Edge computing
Custom SSH Any Bring your own server

Migration Guide

Command Changes

The following commands are now consolidated:

Old Command New Command
nself providers nself cloud provider
nself provision nself cloud server create
nself servers nself cloud server
nself email nself service email
nself search nself service search
nself functions nself service functions
nself mlflow nself service mlflow
nself admin nself service admin (or standalone)

Note: Legacy commands continue to work as aliases for backwards compatibility.


Breaking Changes

None. All existing commands remain functional.


Technical Details

Kubernetes Manifest Generation

The nself k8s convert command generates production-ready manifests:

  • Namespace - Isolated namespace for your project
  • Deployments - One per service with rolling updates
  • Services - ClusterIP services for internal communication
  • ConfigMaps - Environment variables
  • PersistentVolumeClaims - For stateful services
  • Ingress - For web-exposed services

Default resource limits:

  • CPU Request: 100m, Limit: 500m
  • Memory Request: 128Mi, Limit: 512Mi
  • Replicas: 2 (for HA)

Helm Chart Structure

Generated charts follow Helm best practices:

charts/nself/
├── Chart.yaml           # Chart metadata
├── values.yaml          # Default values
├── templates/
│   ├── _helpers.tpl     # Template helpers
│   ├── namespace.yaml
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── configmap.yaml
│   ├── secret.yaml
│   ├── pvc.yaml
│   └── ingress.yaml
└── values/
    ├── staging.yaml     # Staging overrides
    └── production.yaml  # Production overrides

File Watching

Auto-sync uses the most efficient file watcher available:

  1. fswatch (macOS) - Native filesystem events
  2. inotifywait (Linux) - inotify-based watching
  3. Polling (fallback) - 2-second interval check

Bug Fixes

BUG-001: Tempo Healthcheck for Distroless Image

Fixed: Tempo service healthcheck was failing because the grafana/tempo image uses a distroless base with no shell or curl available.

Solution: The CLI now treats Tempo's "unhealthy" status as healthy when the container is running. In nself status --detailed, Tempo shows as "✓ Healthy" with a note explaining the distroless image limitation. Health monitoring relies on Prometheus scraping the /ready endpoint.

BUG-002: Functions Service Auto-Initialization

Fixed: Functions service required manual initialization with undocumented steps, causing silent failures.

Solution: When FUNCTIONS_ENABLED=true, nself build now automatically creates the ./functions directory with package.json and a sample hello.js function if not present.

BUG-003: Docker BuildKit Container Accumulation

Fixed: BuildKit containers (buildx_buildkit_*) accumulated over time, consuming disk space.

Solution: nself clean --all now includes:

  • docker buildx prune --all -f for thorough BuildKit cleanup
  • Removal of buildkit-related volumes

New Features

Admin Development Mode

New: Run nself-admin locally with hot-reload while connecting to Docker backend services.

Quick command (recommended):

# Enable dev mode (auto-rebuilds nginx)
nself admin-dev on 3025 ~/Sites/nself-admin

# Show status
nself admin-dev status

# Disable dev mode (auto-restarts services)
nself admin-dev off

Alternative via service command:

# Enable dev mode
nself service admin dev enable 3000 ~/Sites/nself-admin

# Rebuild to apply changes
nself build && nself restart

# Show environment variables for local dev
nself service admin dev env

# Disable and return to Docker container
nself service admin dev disable

See nself Admin Documentation for full details.

Comprehensive Detailed Status

New: nself status --detailed provides comprehensive status with HTTP checks, full URLs, and all service types.

# Full detailed output
nself status --detailed

# Detailed status as JSON
nself status -d --json

Displays:

  • All service categories (core, optional, monitoring, custom, frontend)
  • Real HTTP status codes from URL checks
  • Full URLs for every service
  • Smart annotations (Tempo distroless note, dev mode status)
  • Summary with healthy/unhealthy counts

Enhanced Environment Validation

New: nself env validate now includes type/format checking.

# Validate project .env file
nself env validate --project

# Validate specific file
nself env validate --file .env.production

Validates:

  • Port numbers (1-65535)
  • Email addresses
  • Boolean values (true/false)
  • URLs and URIs
  • Domain names
  • Password/secret minimum length (8+ chars)

Verbose Health Check Output

New: nself status --verbose shows detailed health check information.

nself status --verbose

Displays for each service:

  • Health status (healthy/unhealthy/starting)
  • Health check command
  • Interval, timeout, retries configuration
  • Last health check output

Configuration Drift Detection

New: nself status automatically detects when configuration has changed since containers started.

Detects:

  • docker-compose.yml modified since last start
  • .env file modified since last start
  • Service count mismatches between config and running containers

Shows warning: "Configuration Drift Detected" with recommendation to rebuild and restart.

Service Initialization Commands

New: nself service init <service> initializes service directories and config files.

nself service init functions   # Create ./functions with package.json
nself service init search      # Create .nself/search/config.json
nself service init storage     # Create .nself/storage/buckets.json
nself service init cache       # Create .nself/cache/redis.conf
nself service init mlflow      # Create .nself/mlflow/config.yaml

Git Integration Warnings for Deploy

New: nself deploy checks git status before deployment and warns about:

  • Uncommitted changes
  • Staged but uncommitted files
  • Untracked files
  • Branch behind remote

Provides recommendation to commit and push before deploying.

Standardized Service Count Reporting

New: Consistent service counting across all commands using new src/lib/utils/services.sh library.

Functions available:

  • count_services_by_category() - Returns: total, required, optional, monitoring, custom
  • get_unified_status_line() - Format: "X/Y services running (breakdown)"
  • print_service_count_table() - Formatted summary table

Service categories:

  • Required: 4 (PostgreSQL, Hasura, Auth, Nginx)
  • Optional: 7 types (nself-admin, MinIO, Redis, Functions, MLflow, Mail, Search)
  • Monitoring: 10 (when MONITORING_ENABLED=true)
  • Custom: CS_1 through CS_10

Email Provider API Support

New: API-based email sending in addition to traditional SMTP. API mode offers better deliverability, webhooks, analytics, and no port blocking issues.

Supported API Providers (6):

  • Elastic Email - Budget-friendly, $0.09 per 1000 emails
  • SendGrid - Popular and reliable, free tier 100 emails/day
  • AWS SES - Most cost-effective at scale ($0.10/1000)
  • Resend - Modern, developer-first service
  • Postmark - Best for transactional emails
  • Mailgun - Developer-friendly with excellent docs

New Environment Variables:

AUTH_EMAIL_PROVIDER=sendgrid      # API provider name
AUTH_EMAIL_API_KEY=SG.xxxxxxxx    # Provider API key
AUTH_EMAIL_SENDER=noreply@domain.com
AUTH_EMAIL_SENDER_NAME=My App     # Optional
AUTH_EMAIL_REPLY_TO=support@...   # Optional

# Provider-specific (AWS SES):
AUTH_EMAIL_API_SECRET=xxxx        # AWS secret key
AUTH_EMAIL_REGION=us-east-1       # AWS region

# Provider-specific (Mailgun):
AUTH_EMAIL_DOMAIN=mg.domain.com   # Mailgun domain
AUTH_EMAIL_REGION=us              # us or eu

New Commands:

# Configure API provider
nself email configure --api sendgrid
nself email configure --api aws-ses
nself email configure --api elastic-email

# Test API connection
nself email check --api

# Send test email via API
nself email test --api admin@example.com

# View all providers
nself email list                  # Shows [API+SMTP] labels

Why API over SMTP:

  • Better deliverability (dedicated IP pools)
  • Webhooks for delivery tracking and bounces
  • Built-in analytics and reporting
  • No port 25/587 blocking issues (ISPs often block SMTP ports)
  • Easier firewall configuration (HTTPS only)
  • More reliable in containerized environments

Installation

# Update nself
nself update

# Verify version
nself version

What's Next

  • v0.4.8 - Plugin System (nself-stripe first)
  • v0.4.9 - Extensive QA & Polish
  • v0.5.0 - Production Release + nself-admin v0.1

For detailed documentation on each command, see the Commands Reference.

Home


Getting Started


Commands


Features


Configuration


Plugins (87 + 10 monitoring)

Free (25)
Pro (62)
Planned (26)
  • plugin-audit
  • plugin-blog
  • plugin-checkout
  • plugin-commerce
  • plugin-drm
  • plugin-export
  • plugin-flow
  • plugin-import
  • plugin-ldap
  • plugin-mailgun
  • plugin-media
  • plugin-oauth-providers
  • plugin-pages
  • plugin-postmark
  • plugin-rate-limit
  • plugin-reports
  • plugin-saml
  • plugin-scheduler
  • plugin-sendgrid
  • plugin-sso
  • plugin-subscription
  • plugin-thumb
  • plugin-transcoder
  • plugin-twilio
  • plugin-waf
  • plugin-watermark

Guides


Architecture


Reference


Licensing


Security


Brand


Operations


Contributing


Admin


Changelog


All commands (52)

Clone this wiki locally