Localify gives each local project a stable .localify domain with trusted
HTTPS, so you open https://my-app.localify instead of remembering which
localhost port a service landed on. OAuth callbacks, cookies, and CORS origins
get a fixed HTTPS address, and coding agents reach your app at a URL that stays
the same between runs.
It ships as a Rust CLI and daemon plus a Tauri desktop app. Everything that runs on your machine is free, with no limit on projects or domains.
- Routes memorable
.localifydomains to local services. - Generates and trusts local TLS certificates.
- Supports HTTP, HTTPS, WebSockets, static directories, and wildcard domains.
- Groups domains and services into projects with worktree-aware development commands.
- Shows request logs, project controls, and diagnostics in the desktop app.
- Starts services in the desktop app's terminal from the CLI (
localify dev --in-app), and reads their output, status, and stops them from anywhere (localify logs,services status,stop). - Gives coding agents every action through an MCP server (
localify mcp), including starting services in the app and removing the worktrees they are done with. See Coding agents.
Download the app from localify.dev. On first launch it asks for your administrator password once, then sets up HTTPS, DNS, and the daemon. The first time you need HTTPS in a browser, macOS asks you to confirm the certificate once.
You need Rust stable, on macOS or Linux. On Linux, read docs/linux.md first.
git clone https://github.com/Synapsr/Localify.git
cd Localify
cargo build --release --bin localify
sudo install -m 755 target/release/localify /usr/local/bin/localifySet up the local certificate authority, DNS and the background service:
localify installOn macOS this asks for an administrator's approval once. After that nothing of
Localify's runs as root: the daemon runs as you, starts at boot, and only this Mac
can reach it unless you run localify lan enable. localify uninstall --force
removes all of it, with one more approval.
HTTP and Node.js work right away. For HTTPS in browsers, run localify trust once
and confirm in the macOS window.
On Linux with systemd it works the same way: one sudo password at install, then nothing
of Localify's runs as root. The install also trusts the certificate, so HTTPS works in
tools that use the system store. See Localify on Linux.
With the setup above done, point a domain at a service on port 3000:
localify register my-app.localify --route "/=3000"
localify status
localify logs -fThe app is now at https://my-app.localify. The
CLI reference covers routes, wildcards, and static directories.
On macOS, localify init-project my-app --yes creates a project from the current
folder instead, with my-app.localify as its default domain. Localify picks a
free target port unless you provide one.
Official desktop builds send product analytics and error reports to PostHog.
They send explicit events only, with no autocapture, and analytics events never
include project names, domains, request logs, or local paths. Before an error
report is sent, a filter removes URLs, file paths, .localify domains, and quoted
names. It matches patterns, so it can miss something in an unusual message.
Session replay is off by default, and you can turn it on in Settings. Builds
without VITE_PUBLIC_POSTHOG_TOKEN send nothing, and the CLI and daemon have no
telemetry.
src/: Rust library, CLI, daemon, DNS, TLS, routing, and project logic.src-tauri/: Tauri desktop shell and commands.desktop-ui/: React, Vite, and TanStack desktop interface.apps/web/: Next.js website, localify.dev. See apps/web/README.md.
Requirements:
- Rust stable
- Node.js and pnpm
- macOS for the primary desktop development flow
Install JavaScript dependencies:
pnpm installBuild the CLI:
cargo build --bin localifyRun the desktop app with the development profile:
pnpm tauri:devRun the website:
pnpm web:devRust changes must pass:
cargo fmt
cargo clippy -- -D warnings
cargo testDesktop UI changes must also pass:
pnpm run typecheckWebsite changes must pass:
pnpm web:typecheck
pnpm web:build- CLI reference
- Architecture
- Desktop development
- Docker integration
- Launch profiles
- Linux setup
- Technical overview
Design notes for features that are not built yet:
Contributions are welcome. See CONTRIBUTING.md to get started, including the contributor license agreement every contribution needs, and the code of conduct. To report a vulnerability, see SECURITY.md.
Localify started as a fork of Roxy by Martin Voldřich, which provides the original DNS, TLS, and reverse proxy foundations.
Localify is licensed under the GNU Affero General Public License v3.0 only. It derives from Roxy, whose code remains under the MIT license.
The AGPL doesn't cover everything here. The Localify name and logo aren't
licensed, and neither is the media in apps/web/public/. progresive-blur.tsx is adapted from Skiper UI.
NOTICE has the details.