Skip to content

Navigator

A lightweight, fast Go-based web server for multi-tenant web applications with on-demand process management. Framework-independent with built-in support for Rails, Django, Node.js, and other frameworks.

What is Navigator?

Navigator is a modern alternative to nginx + Passenger, designed for multi-tenant web applications across different frameworks. It provides intelligent request routing, dynamic process management, and built-in support for modern deployment patterns like Fly.io, Azure Deployment Stamps, and container orchestration.

  • 🚀 Fast & Lightweight


    Single binary with minimal dependencies. Lower memory footprint than nginx/Passenger.

  • ⚙ Process Management


    Starts web apps on-demand, manages Redis/Sidekiq, automatic cleanup of stale processes. Framework-agnostic with configurable commands.

  • 🛡 Production Ready


    Used in production serving 75+ dance studios across 8 countries.

  • 🔄 Hot Reload


    Update configuration without restart using SIGHUP signal.

Quick Start

# Download latest release
curl -L https://github.com/rubys/navigator/releases/latest/download/navigator-linux-amd64.tar.gz | tar xz

# Run with your config
./navigator config/navigator.yml
# Clone and build
git clone https://github.com/rubys/navigator.git
cd navigator
make build

# Run Navigator
./bin/navigator config/navigator.yml
# Run with Docker
docker run -v $(pwd)/config:/config \
           -v $(pwd)/app:/app \
           -p 3000:3000 \
           rubys/navigator /config/navigator.yml

Simple Example

Here's a minimal configuration to serve a Rails application:

config/navigator.yml
server:
  listen: 3000
  public_dir: ./public

applications:
  tenants:
    - name: myapp
      path: /
      working_dir: /path/to/rails/app

Key Features

⚡ Intelligent Routing

  • URL rewriting with redirects and rewrites
  • Try-files behavior for static content
  • WebSocket and Action Cable support
  • Fly-Replay for regional routing

🔒 Authentication

  • Full htpasswd support (APR1, bcrypt, SHA)
  • Pattern-based exclusions for public paths
  • Per-path authentication realms

📁 Static File Serving

  • Direct filesystem serving bypasses Rails
  • Configurable cache headers
  • Automatic MIME type detection
  • Try multiple file extensions

☁ Cloud Native

  • Fly.io machine auto-suspend
  • Multi-region deployment support
  • Health check endpoints
  • Graceful shutdown handling

Why Navigator?

Compared to nginx + Passenger

Feature Navigator nginx + Passenger
Configuration Simple YAML Complex nginx.conf
Memory Usage ~20MB base ~100MB+ base
Process Management Built-in Requires Passenger
Hot Reload ✅ Native ❌ Restart required
Multi-tenant ✅ Native ⚠️ Complex setup

Perfect For

  • Multi-tenant SaaS - Each customer gets isolated database/instance
  • Regional deployments - Deploy closer to users with Fly.io
  • Development environments - Replace complex nginx setups
  • Resource-constrained servers - Lower memory footprint

Real-World Use Cases

Navigator powers production applications including:

  • Dance studio management systems with 75+ tenants
  • Regional PDF generation services
  • Multi-database Rails applications
  • WebSocket-enabled real-time apps

Next Steps

  • 📚 Getting Started


    Install Navigator and deploy your first Rails app in 5 minutes

  • 🔧 Configuration Guide


    Learn about YAML configuration options and best practices

  • 💡 Examples


    Copy-paste ready configurations for common scenarios

  • ❓ Reference


    Complete CLI options, environment variables, and signals

Community