Vaelth

Stable hostnames
for local development.

A local *.vaelth dev proxy. DNS, HTTP/HTTPS reverse proxy, management portal, and MCP server in one Go binary. Map any port or directory to a stable hostname under .vaelth — with a clean HTTPS padlock, no /etc/hosts edits, and no port in the URL.

vaelth
$ curl -fsSL https://dl.velaintelligence.com/vaelth/latest/install.sh | sh

Then open: http://vaelth.vaelth/

One-command setup

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.

Real hostnames, no hosts file

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.

Trusted HTTPS by default

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.

URLs without ports

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.

Embedded management portal

An SPA served by the daemon itself at http://vaelth.vaelth/. Add, edit, and remove hosts and routes live; toggle no-cache, CORS, HTTPS, SPA fallback; install MCP into Claude Code / Desktop / Codex with one click.

Agent-friendly

Bundled MCP server over stdio. Claude Code, Claude Desktop, and OpenAI Codex can list, add, edit, route, and reload hosts directly. The portal has a one-click installer for each.

Map anything to a hostname

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.

MCP tools

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_status Daemon version, uptime, listener addresses, host count, HTTPS state.
vaelth_host_list Every registered host with its routes and flags.
vaelth_host_get One host's full state — useful for "where is this app served?" lookups.
vaelth_host_add Register a host. Target shape decides proxy vs static; flags include https, no_cache, cors, spa.
vaelth_host_set Toggle HTTPS, no-cache, or permissive CORS on an existing host. Omitted fields leave alone.
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_set Edit a route in place: change target, flip SPA fallback, toggle prefix-strip. Target re-classified by shape.
vaelth_host_route_remove Drop one route. Last route on a host requires host_remove instead.
vaelth_reload Force a re-read of ~/.vaelth/state.json — equivalent to the automatic fsnotify reload, but synchronous.

Platforms