Features¶
Navigator provides a comprehensive set of features for multi-tenant web applications, from basic process management to advanced regional routing.
What's New in v0.13.0
- Dynamic Version Reporting:
--version
flag shows build information - Automatic Trailing Slash Handling: Normalize URLs with redirects
- Enhanced Proxy Handlers: Fixed regex capture group substitution
- WebSocket Improvements: Fixed subprotocol negotiation for Action Cable
- Path Stripping Fix: Correct strip_path behavior with target paths
Core Features¶
Process Management¶
- On-demand startup - Web applications start when first requested
- Dynamic port allocation - Automatically finds available ports
- Graceful shutdown - Clean termination with proper cleanup
- Auto-restart - Crashed processes automatically restart
- Resource limits - Configurable pool sizes and timeouts
Learn more about Process Management
Memory Limits¶
- Per-tenant limits - Enforce memory limits using Linux cgroups
- Cgroups v1/v2 support - Automatic detection and support for both versions
- OOM protection - Isolate memory-hungry tenants from others
- Auto-restart on OOM - Tenants restart automatically after kernel kills
- Memory statistics - Automatic logging of peak usage and utilization
- User/group isolation - Run tenant processes as non-root users
Learn more about Memory Limits
Static File Serving¶
- Direct filesystem serving - Bypass application for static content
- Configurable caching - Set cache headers for different content types
- Try files behavior - Flexible file resolution with fallbacks
- MIME type detection - Automatic content type headers
- Performance optimization - 10-40x faster than application serving
Authentication¶
- Multiple hash formats - APR1, bcrypt, SHA support
- Pattern-based exclusions - Flexible public path configuration
- Per-application auth - Different authentication per app
- htpasswd files - Standard htpasswd format support
Learn more about Authentication
Hot Configuration Reload¶
- Zero-downtime updates - Reload config without restart
- Signal-based - SIGHUP or command-line trigger
- Atomic changes - All changes applied together
- Process preservation - Existing Rails processes continue running
WebSocket Support¶
- Action Cable integration - Built-in Rails Action Cable support
- Standalone servers - Manage WebSocket servers as separate processes
- Connection upgrades - Automatic WebSocket protocol upgrades
- Long-lived connections - Efficient handling of persistent connections
Learn more about WebSocket Support
Lifecycle Hooks¶
- Server hooks - Execute commands at Navigator lifecycle events (start, ready, idle, resume)
- Tenant hooks - Execute commands when tenants start or stop
- Variable substitution - Use tenant variables in hook commands
- Flexible integration - Integrate with external services, monitoring, backups
Learn more about Lifecycle Hooks
Advanced Features¶
Fly-Replay Routing¶
- Multi-target routing - Route to regions, apps, or specific machines
- Smart fallback - Automatic reverse proxy for large requests
- Pattern matching - Flexible URL pattern configuration
- Method filtering - Apply rules to specific HTTP methods
Machine Suspension¶
- Auto-suspend - Fly.io machines suspend after idle timeout
- Request tracking - Monitor active requests for idle detection
- Automatic wake - Machines wake on incoming requests
- Zero-downtime - Seamless suspend/resume cycles
Learn more about Machine Suspension
Sticky Sessions¶
- Cookie-based affinity - Route users to the same machine
- Cross-region support - Works across all Fly.io regions
- Automatic failover - Graceful handling of unavailable machines
- Path-specific sessions - Configure sticky sessions for specific paths
Learn more about Sticky Sessions
Try Files Behavior¶
- Flexible resolution - Try multiple file paths and extensions
- Multiple suffixes - Try different file extensions
- Index file support - Automatic index.html resolution
- Application fallback - Proxy to application when no file found
Structured Logging¶
- slog integration - Modern Go logging with structured output
- Configurable levels - Debug, info, warn, error levels
- Request tracking - Detailed request flow logging
- Performance metrics - Response times and process information
Performance Features¶
Smart Resource Management¶
- Dynamic allocation - Processes start/stop based on demand
- Connection pooling - Efficient connection reuse
- Memory optimization - Minimal memory footprint
- CPU efficiency - Low CPU overhead
Caching Strategies¶
- Static file caching - Long-lived cache headers
- Process caching - Keep Rails processes warm
- Configuration caching - Cached config parsing
Load Balancing¶
- Round-robin - Distribute requests across processes
- Health checking - Avoid sending requests to crashed processes
- Graceful degradation - Handle process failures elegantly
Security Features¶
Access Control¶
- HTTP Basic Auth - Industry standard authentication
- Pattern-based exclusions - Flexible public path configuration
- Per-application security - Different security policies per app
Process Isolation¶
- Separate processes - Rails apps run in separate processes
- Memory isolation - Per-tenant memory limits with cgroups (Linux)
- User/group isolation - Run tenants as non-root users (Unix)
- Working directories - Each app has its own working directory
- Environment isolation - Separate environment variables
Configuration Security¶
- Environment variables - Secrets from environment, not config files
- File permissions - Secure configuration file handling
- No hardcoded secrets - Template-based secret management
Monitoring and Observability¶
Request Tracking¶
- Structured logging - JSON-formatted logs with request context
- Response time tracking - Monitor application performance
- Error tracking - Detailed error information
Process Monitoring¶
- Process lifecycle - Track process starts, stops, crashes
- Resource usage - Monitor memory and CPU usage
- Health status - Process health checking
System Integration¶
- systemd compatibility - Works well with systemd
- Log aggregation - Compatible with log management systems
- Metrics export - Structured data for monitoring systems
Platform-Specific Features¶
Cross-Platform Support (v0.11.0+)¶
- Linux: AMD64, ARM64 - Full feature support with SIGTSTP/SIGTERM
- macOS: Intel (AMD64), Apple Silicon (ARM64) - Native macOS signal handling
- Windows: AMD64, ARM64 - Graceful shutdown with os.Exit
- Platform-specific optimizations - Uses native OS primitives where appropriate
Fly.io Integration¶
- Machine suspension - Auto-suspend idle machines
- Fly-Replay routing - Intelligent request routing
- Regional deployment - Deploy close to users
- Internal networking - Secure inter-service communication
General Cloud Support¶
- Health check endpoints - Standard health checking
- Graceful shutdown - Proper signal handling
- Environment configuration - 12-factor app compliance
- Container friendly - Works well in containers
Feature Roadmap¶
Short Term (Next Release)¶
- Metrics endpoint - Prometheus-compatible metrics
- SSL termination - Optional HTTPS support
- Rate limiting - Built-in rate limiting
Medium Term¶
- Auto-scaling - Dynamic process scaling
- Circuit breakers - Failure isolation
- Distributed tracing - OpenTelemetry integration
Long Term¶
- Multi-server support - Clustering capabilities
- Advanced routing - Content-based routing
- Plugin system - Extensible architecture
Getting Started with Features¶
- Start Simple - Begin with basic process management
- Add Static Files - Optimize performance with direct serving
- Configure Authentication - Secure your applications
- Enable Hot Reload - Streamline configuration updates
- Explore Advanced Features - Try Fly-Replay and machine suspension