eno

ambient localhost

myapp.localhost your app, running

curl https://eno.javan.us/install | sh

Quick Start

# Install
curl https://eno.javan.us/install | sh

# Register an app
eno add ~/Code/myapp

# Visit in browser
open http://myapp.localhost

Usage

Register

eno add Current directory
eno add ~/Code/api Specific path
eno add -n api Custom name
eno add -c "npm run dev" Custom command

Manage

eno list Show registered apps
eno start [app] Start an app
eno stop [app] Stop an app
eno restart [app] Restart an app
eno logs [app] Tail logs
eno remove [app] Unregister an app

[app] accepts a name or path. Defaults to current directory.

System

eno status Daemon status
eno install Install daemon
eno uninstall Remove daemon
eno update Check for updates

How It Works

When you visit myapp.localhost, eno:

  • Receives the request (port 80 is forwarded to the daemon)
  • Starts your app if it's not already running
  • Proxies the request to your app's dev server
  • Stops idle apps after 15 minutes

No DNS config needed—.localhost resolves locally per RFC 6761.

Auto-detection

eno detects common application types and starts an appropriate development server automatically. Or, you can specify a custom command with eno add -c "command".

Configuration

Apps live in ~/.config/eno/apps.json:

{
  "myapp": {
    "path": "/Users/you/Code/myapp",
    "command": "npm run dev"
  }
}

The command field is optional.

Paths

Location Purpose
~/.config/eno/apps.json App registry
~/.local/state/eno/daemon.log Daemon logs
~/.local/state/eno/*.fifo App log streams