A local *.vaelth dev proxy. DNS, HTTP/HTTPS reverse proxy, process supervisor, management portal, and MCP server in one Go binary. Map any port or directory to a stable hostname under .vaelth — and run the processes behind it — with a clean HTTPS padlock, no /etc/hosts edits, and no port in the URL.
$ curl -fsSL https://dl.velaintelligence.com/vaelth/latest/install.sh | sh
Then open: http://vaelth.vaelth/
vaelth setup prints a plan, prompts once, and does everything: creates a local CA, trusts it in your system trust store, installs the DNS resolver, drops a LaunchDaemon on :80 / :443, and bootstraps the daemon. Opt out with --no-* flags.
A built-in DNS server answers *.vaelth via /etc/resolver/vaelth. Wildcards work too: register *.demo.vaelth and every subdomain hits the same upstream. No /etc/hosts entries, no browser plug-ins.
Opt a host in with --lan and other devices on your network reach it over mDNS as <host>.local — zero config on a phone or second laptop. A default-deny loopback guard keeps the portal and anything you didn't flag local.
Local CA auto-issued and trusted on first setup. Per-host leaf certs (and wildcard SANs) chain to it, so Chrome and Safari show a clean padlock. No "advanced → proceed anyway" dance.
http://demo.vaelth/ just works. macOS uses launchd socket activation so :80 / :443 bind as root and hand the FDs to a user-mode daemon — scoped to one LaunchDaemon plist, no pf rdr or system takeover.
An SPA served by the daemon itself at http://vaelth.vaelth/. Add, edit, and remove hosts and routes live; run and stop backing processes; toggle no-cache, CORS, HTTPS, SPA fallback; install MCP into Claude Code / Desktop / Codex with one click.
Attach any number of named processes to a host — wrangler dev, a Go server, a queue worker — and vaelth supervises them: start, stop, autostart at boot, and exponential-backoff restart on crash, with per-process logs. Drive them from the dashboard, CLI, or MCP.
Bundled MCP server over stdio. Claude Code, Claude Desktop, and OpenAI Codex can list, add, edit, route, reload, and run host processes directly. The portal has a one-click installer for each.
A stable loopback /v1 HTTP+JSON API — plus an SSE event stream — drives the full daemon from Python, Swift, or any language. Build a native UI or a deploy script without shelling out. Loopback-only by design.
Tagged releases ship to a CDN. vaelth version --check tells you if you're behind; re-running the installer upgrades in place and restarts the service so the new binary takes over cleanly.
Every host, route, and process lives in ~/.vaelth/state.json. An fsnotify watcher hot-reloads it on any external edit — script it, commit it, or tweak it by hand, no restart required.
Vaelth classifies a target by its shape — no --static flag, no --proxy flag.
3000 Bare port — proxies to http://127.0.0.1:3000.localhost:5173 host:port — proxies as-is.https://api.staging.dev Full URL — proxies upstream and rewrites the Host header for CDN-fronted origins./Users/you/dist Absolute path — serves files from a directory.~/dist · ./dist Tilde and relative paths — resolved client-side before being sent to the daemon.*.demo.vaelth Wildcard host pattern — one entry, one wildcard cert, every one-label subdomain.Vaelth ships an MCP stdio server. Install with vaelth mcp install claude-code (or claude-desktop / codex), or one-click from the portal sidebar.
vaelth_host_add Register a host. Target shape decides proxy vs static; flags include https, no_cache, cors, spa.vaelth_host_get One host's full state — useful for "where is this app served?" lookups.vaelth_host_list Every registered host with its routes and flags.vaelth_host_remove Unregister a host and all its routes.vaelth_host_route_add Attach a path-prefix route — SPA at /, API at /api/, all on one host via http.ServeMux.vaelth_host_route_remove Drop one route. Last route on a host requires host_remove instead.vaelth_host_route_set Edit a route in place: change target, flip SPA fallback, toggle prefix-strip. Target re-classified by shape.vaelth_host_set Toggle HTTPS, no-cache, CORS, or LAN exposure on an existing host, and set the .local name. Omitted fields leave alone.vaelth_host_app_set Attach or replace a named backing process on a host — command, working dir, env, and always/manual autostart.vaelth_host_app_start Start a named process. No-op if it's already running.vaelth_host_app_stop Stop a named process — SIGTERM, then SIGKILL after a grace period, taking down the whole process group.vaelth_host_app_remove Detach a named process from a host, stopping it first if running.vaelth_reload Force a re-read of ~/.vaelth/state.json — equivalent to the automatic fsnotify reload, but synchronous.vaelth_status Daemon version, uptime, listener addresses, host count, HTTPS state.