Local HTTPS for every dev server
Your own lane after the dot.
Dotlane gives every local project a real, trusted HTTPS address: https://myapp.traix instead of http://localhost:5173. Any language, any framework, one command.
Why
Develop like it's production
localhost ports collide, change and behave differently from the real thing: no Secure cookies, no secure-context APIs, OAuth redirects that cannot match. Dotlane fixes the address, and leaves your dev server alone.
Trusted HTTPS
A local certificate authority your Mac trusts, so browsers, curl and your tools accept every site with no warnings.
Any language
A site is a name and a port. Python, Node, Go, Ruby, Java, Rust or a container: started however you already start it.
About a second per site
Setup asks for your password once. After that a new address is one command, ready when it prints.
One file per project
Commit a dotlane.toml; everyone on the team runs dotlane up and gets the same addresses.
A doctor that names names
dotlane doctor checks every piece and says which tool holds a port, with the command that fixes it.
This Mac only
Requests from other machines are dropped without an answer. Nothing listens as root.
How it works
One program, three jobs
Dotlane is a small service that runs as you, at login. It answers DNS for its domain ending, holds a certificate authority, and proxies each name to its port.
Name
The OS sends only *.traix lookups to Dotlane, which answers 127.0.0.1. Every other lookup is untouched.
Certificate
Dotlane presents a certificate for the name, signed by its local authority, which your system trusts.
Proxy
The request goes to localhost:5173. WebSockets and live reload pass straight through.
Pages, not errors
A name with no site, or a dev server that is down, gets a page from Dotlane saying so, and what to run.
Install
Set up once, then forget it
Build the binary, then let dotlane install set up the service, the certificate authority and DNS. Every step that needs your password is explained before it runs.
Status: macOS today, built from source with Go. Homebrew and npm packages, Linux and Windows are on the roadmap.
-
Build
git clone https://github.com/dotlane/dotlane && cd dotlane go build -o bin/dotlane ./cmd/dotlane ln -sf "$PWD/bin/dotlane" ~/.local/bin/dotlane -
Install
dotlane install # login service, CA trust, DNS for .traix -
Serve a dev server
dotlane add myapp 5173 # ✓ https://myapp.traix → localhost:5173
Projects
Addresses that live with the code
List a project's sites in dotlane.toml and commit it. dotlane up serves them from anywhere in the project; dotlane down removes them.
Each site remembers the project that registered it. A name another project already uses is reported, never silently taken over.
# dotlane.toml
[sites.myapp]
port = 5173
[sites.myapp-api]
port = 8000Commands
Small on purpose
| Command | What it does |
|---|---|
| dotlane add <name> <port> | Serve https://<name>.traix from localhost:<port>, ready when it prints. |
| dotlane rm <name> | Remove a site. |
| dotlane ls [--json] | List sites, their ports and the project that owns each. |
| dotlane up | Serve the sites in the nearest dotlane.toml. |
| dotlane down | Remove the sites this project registered. |
| Command | What it does |
|---|---|
| dotlane install | Login service, certificate trust and DNS; checks for conflicts first. Safe to re-run. |
| dotlane doctor [--fix] | Check every piece, name what is in the way, repair what it can. |
| dotlane uninstall [--purge] | Undo install; --purge also deletes sites and keys. |
| dotlane migrate | Move from the Caddy + dnsmasq prototype, keeping its sites and trust. |
FAQ
Questions
Can other people on my network reach my dev server?
No. Dotlane answers only requests from this machine; anything else is dropped without a response. The DNS answers only for the domain ending, and only on this machine.
Does anything run as root?
No. The service runs as you. The password is needed once, to trust the certificate authority and to route the domain ending's lookups, and both steps are shown before they run.
Why .traix? Can I use my own ending?
It is the default. Set tld (or several, tlds) in ~/.config/dotlane/config.toml and run dotlane install again. .local is refused because macOS uses it for Bonjour.
Which systems does it run on?
macOS today. Linux and Windows, and Homebrew and npm packages, are planned.
What about PHP?
Any PHP server on a port works now, including PHP's built-in one. Serving a folder of PHP files directly is planned.
Node rejects the certificate on server-side requests.
Node does not read the system's trust store. Point NODE_EXTRA_CA_CERTS at Dotlane's root certificate; the troubleshooting guide has the path.
How do I remove it?
dotlane uninstall removes the service, the certificate's trust and the DNS routing; --purge also deletes your sites and the keys.